Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

실제로 사용하게 될 Bash 히스토리 단축키 7가지

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 ) 내가 인정하고 싶은 것보다 더 자주 틀렸습니다.

실제로 사용하게 될 Bash 히스토리 단축키 7가지

그런 인수를 혼동하면 다음을 실행할 수 있습니다.

$ !: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에 게시되었으며 허가를 받아 재사용되었습니다.