Bash 기록 바로 가기에 대한 대부분의 가이드는 사용 가능한 모든 것을 철저하게 나열합니다. 문제는 바로 가기를 한 번 사용한 다음 모든 가능성을 시도하면서 유약을 바르는 것입니다. 그런 다음 나는 근무일로 이동하여 잘 알려진 !!만 유지하고 완전히 잊어버렸습니다. Bash를 처음 사용할 때 배운 트릭
그래서 그들 대부분은 결코 기억에 전념하지 않았습니다.
이 문서는 내가 실제로 사용하는 단축키를 설명합니다. 매일. 내 책 Bash를 열심히 배우기의 일부 내용을 기반으로 합니다.; (자세한 내용을 보려면 미리보기를 읽을 수 있습니다.)
사람들이 내가 이 단축키를 사용하는 것을 볼 때 종종 "거기서 뭐 했어!?"라고 묻습니다. 최소한의 노력이나 지능이 필요하지만 실제로 배우려면 일주일 동안 매일 사용하고 다음으로 이동하는 것이 좋습니다. 절약하는 시간은 장기적으로 중요하므로 시간을 내어 손쉽게 관리할 가치가 있습니다.
1. "마지막 인수" 하나: !$
이 기사에서 하나의 지름길만 취한다면 이것을 하나로 만드십시오. 마지막 명령의 마지막 인수를 줄로 대체합니다.
다음 시나리오를 고려하십시오.
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
아, 잘못된 파일을 넣었습니다. 내 명령의 파일 이름. rightfile을 넣어야 했습니다. 대신.
마지막 명령을 다시 입력하고 wrongfile을 rightfile로 완전히 교체하기로 결정할 수 있습니다. 대신 다음을 입력할 수 있습니다.
$ mv /path/to/rightfile !$
mv /path/to/rightfile /some/other/place
명령이 작동합니다.
Bash에서 단축키를 사용하여 동일한 작업을 수행하는 다른 방법이 있지만 마지막 명령의 마지막 인수를 재사용하는 이 트릭이 제가 가장 많이 사용하는 방법입니다.
2. "n th 인수" 하나: !:2
이런 일을 한 적이 있습니까?
$ tar -cvf afolder afolder.tar
tar: failed to open
다른 많은 사람들과 마찬가지로 tar (및 ln ) 내가 인정하고 싶은 것보다 더 자주 틀렸습니다.
그런 인수를 혼동하면 다음을 실행할 수 있습니다.
$ !:0 !:1 !:3 !:2
tar -cvf afolder.tar afolder
평판이 저장됩니다.
마지막 명령의 항목은 색인이 생성되지 않으며 !: 뒤의 숫자로 대체될 수 있습니다. .
분명히, 이것을 사용하여 전체가 아니라 마지막 명령의 특정 인수를 재사용할 수도 있습니다.
3. "모든 인수" 하나: !:1-$
다음과 같은 명령을 실행한다고 상상해 보세요.
$ grep '(ping|pong)' afile
인수가 정확합니다. 그러나 ping을 일치시키고 싶습니다. 또는 퐁 파일에 있지만 grep을 사용했습니다. egrep보다는 .
egrep를 입력하기 시작합니다. , 하지만 다른 인수를 다시 입력하고 싶지 않습니다. 그래서 !:1$을 사용할 수 있습니다. 두 번째 인수(0인덱싱됨)에서 마지막 인수($로 표시됨)까지 이전 명령에 대한 모든 인수를 요청하는 바로 가기 기호).
$ egrep !:1-$
egrep '(ping|pong)' afile
ping
1-$을(를) 선택할 필요가 없습니다.; 1-2와 같은 하위 집합을 선택할 수 있습니다. 또는 3-9 (이전 명령에 많은 인수가 있는 경우).
4. "마지막이지만 n " 하나: !-2:$
위의 단축키는 마지막 명령을 수정하는 방법을 즉시 알고 있을 때 유용하지만 이후 명령을 실행하는 경우가 많습니다. 원래 명령은 마지막 명령이 더 이상 참조하려는 명령이 아님을 의미합니다.
예를 들어 mv 이전의 예에서 내 실수를 ls 폴더 내용 확인:
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
$ ls /path/to/
rightfile
더 이상 !$을(를) 사용할 수 없습니다. 바로가기.
이 경우 -n을 삽입할 수 있습니다. : (여기서 n ! 이후에 기록으로 되돌아가는 명령의 수입니다. 이전 명령에서 마지막 인수를 가져오려면:
$ mv /path/to/rightfile !-2:$
mv /path/to/rightfile /some/other/place
다시 한 번 배우게 되면 얼마나 자주 필요한지 알게 될 것입니다.
5. "폴더 가져오기" 항목: !$:h
이 방법은 겉으로 보기에는 덜 유망해 보이지만 매일 수십 번 사용합니다.
다음과 같은 명령을 실행한다고 상상해 보세요.
$ tar -cvf system.tar /etc/system
tar: /etc/system: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
가장 먼저 하고 싶은 일은 /etc 폴더 안에 무엇이 있는지 확인하고 내가 무엇을 잘못했는지 알아내십시오.
다음을 사용하여 즉시 이 작업을 수행할 수 있습니다.
$ cd !$:h
cd /etc
이것은 "마지막 명령에 대한 마지막 인수를 가져옵니다(/etc/system ) 마지막 파일 이름 구성요소를 제거하고 /etc만 남겨둡니다. ."
6. "현재 줄": !#:1
몇 년 동안 나는 때때로 마지막으로 찾아보고 배우기 전에 현재 줄에 대한 인수를 참조할 수 있는지 궁금했습니다. 오래 전에 그렇게 했으면 좋았을 텐데. 저는 주로 백업 파일을 만드는 데 사용합니다.
$ cp /path/to/some/file !#:1.bak
cp /path/to/some/file /path/to/some/file.bak
그러나 일단 손가락 아래에 있으면 ...
에 대한 매우 빠른 대안이 될 수 있습니다.7. "검색 및 바꾸기" 항목: !!:gs
이것은 참조된 명령을 검색하고 처음 두 개의 /에 있는 것을 대체합니다. 두 번째 2에 있는 문자.
내 키가 작동하지 않고 출력 f 대신:
$ echo my f key doef not work
my f key doef not work
그제서야 내가 f 우연히 열쇠. 모든 f를 대체하려면 s와 s 예, 다음을 입력할 수 있습니다.
$ !!:gs/f /s /
echo my s key does not work
my s key does not work
단일 문자에서만 작동하지 않습니다. 단어나 문장도 바꿀 수 있습니다.
$ !!:gs/does/did/
echo my s key did not work
my s key did not work
테스트하기
이 단축키를 결합하는 방법을 보여주기 위해 이 발톱 자르기가 출력되는 결과를 알아낼 수 있습니까?
$ ping !#:0:gs/i/o
$ vi /tmp/!:0.txt
$ ls !$:h
$ cd !-2:h
$ touch !$!-3:$ !! !$.txt
$ cat !:1-$
결론
Bash는 일상적인 명령줄 사용자를 위한 우아한 단축키 소스가 될 수 있습니다. 배울 수 있는 수천 가지 팁과 요령이 있지만 제가 가장 좋아하는 것은 자주 사용하는 것입니다.
Bash가 당신에게 가르칠 수 있는 모든 것에 대해 더 깊이 알고 싶다면 제 책을 선택하세요. Bash를 열심히 배우세요 또는 내 온라인 과정인 Bash 셸 마스터를 확인하세요.
이 기사는 원래 Ian의 블로그 Zwischenzugs.com에 게시되었으며 허가를 받아 재사용되었습니다.