[bash] Bash를 사용하는 가장 좋아하는 명령 줄 트릭은 무엇입니까? [닫은]

우리는 모두 <ctrl>-R히스토리를 통해 검색을 되 돌리는 방법을 알고 있지만 <ctrl>-S설정하면 검색을 전달 하는 데 사용할 수 있다는 것을 알고 stty stop ""있습니까? 또한 bind -p를 실행하여 모든 키보드 단축키를 나열한 적이 있습니까? Mac OS X에는 기본적으로 455 개가 넘습니다.

bash를 사용하여 가장 좋아하는 모호한 트릭, 키보드 단축키 또는 쇼핑 구성은 무엇입니까?



답변

접미사가있는 파일 이름 바꾸기 / 이동 :
cp /home/foo/realllylongname.cpp{,-old}

이것은 다음과 같이 확장됩니다.
cp /home/foo/realllylongname.cpp /home/foo/realllylongname.cpp-old


답변

cd -

뒤로 버튼과 동일한 명령 행입니다 (이전 디렉토리로 이동합니다).


답변

또 다른 마음에 드는 것 :

!!

마지막 명령을 반복합니다. 다음과 같은 형태로 가장 유용합니다.

sudo !!


답변

내가 가장 좋아하는 것은 ‘^ string ^ string2’입니다.이 명령은 마지막 명령을 사용하고 string을 string2로 바꾸고 실행합니다.

$ ehco foo bar baz
bash: ehco: command not found
$ ^ehco^echo
foo bar baz

배쉬 커맨드 라인 히스토리 가이드


답변

이름을 바꾸다

예:

$ ls
this_has_text_to_find_1.txt
this_has_text_to_find_2.txt
this_has_text_to_find_3.txt
this_has_text_to_find_4.txt

$ rename 's/text_to_find/been_renamed/' *.txt
$ ls
this_has_been_renamed_1.txt
this_has_been_renamed_2.txt
this_has_been_renamed_3.txt
this_has_been_renamed_4.txt

매우 유용합니다


답변

나는 가장 최근에 제출 된 명령 줄에서 마지막 항목, 첫 번째 비 명령 항목 및 모든 비 명령 항목에서 돌아 오는 !$, !^!*expandos 의 팬입니다 . 재치하려면 (쉘이 명령을 먼저 인쇄한다는 점에 유의하십시오.)

$ echo foo bar baz
foo bar baz
$ echo bang-dollar: !$ bang-hat: !^ bang-star: !*
echo bang-dollar: baz bang-hat: foo bang-star: foo bar baz
bang-dollar: baz bang-hat: foo bang-star: foo bar baz

이것은 말하고 ls filea fileb그들 중 하나 vi !$또는 둘 다를 편집하려고 할 때 유용 합니다 vimdiff !*. 다음 n과 같이 “th argument” 로 일반화 할 수도 있습니다 .

$ echo foo bar baz
$ echo !:2
echo bar
bar

마지막으로, 경로 이름, 당신은 추가하여 경로의 일부에서 얻을 수 있습니다 :h:t위 expandos 중 하나에 :

$ ls /usr/bin/id
/usr/bin/id
$ echo Head: !$:h  Tail: !$:t
echo Head: /usr/bin Tail: id
Head: /usr/bin Tail: id


답변

명령을 실행할 때 때로는 이전 인수로 명령을 실행하고 싶을 때가 있습니다. 이를 위해 다음 단축키를 사용할 수 있습니다.

$ mkdir /tmp/new
$ cd !!:*

때로는 find를 사용하는 대신 파일 목록에서 여러 명령을 실행 해야하는 경우 한 줄 루프를 분리합니다.

for file in *.wav; do lame "$file" "$(basename "$file" .wav).mp3" ; done;

내 .bash_login (또는 .bashrc)에서 명령 줄 기록 옵션을 구성하면 정말 유용합니다. 다음은 Macbook Pro에서 사용하는 설정입니다.

다음을 설정하면 bash가 히스토리에서 중복 명령을 삭제합니다.

export HISTCONTROL="erasedups:ignoreboth"

또한 내 역사 크기도 꽤 높게 올렸습니다. 왜 안돼? 오늘날의 마이크로 프로세서에서는 속도가 느려지지 않는 것 같습니다.

export HISTFILESIZE=500000
export HISTSIZE=100000

내가하는 또 다른 일은 내 역사에서 일부 명령을 무시하는 것입니다. exit 명령을 기억할 필요가 없습니다.

export HISTIGNORE="&:[ ]*:exit"

당신은 확실히 histappend를 설정하고 싶습니다. 그렇지 않으면 bash는 종료 할 때 기록을 덮어 씁니다.

shopt -s histappend

내가 사용하는 또 다른 옵션은 cmdhist입니다. 이를 통해 여러 줄 명령을 하나의 명령으로 기록에 저장할 수 있습니다.

shopt -s cmdhist

마지막으로, Mac OS X (vi 모드를 사용하지 않는 경우)에서는 <CTRL> -S를 스크롤 중지 상태로 재설정해야합니다. 이것은 bash가 정방향 검색으로 해석 할 수 없게합니다.

stty stop ""