
Bash를 사용하여 작업 흐름을 약간 개선하고 싶고 종종 다른 실행 파일에 동일한 명령을 실행하고 싶다는 것을 깨달았습니다.
몇 가지 예:
Git(두 번째 단어를 빠르게 변경하고 싶은 경우):
git diff foo/bar.c
git checkout foo/bar.c
Cat/rm(첫 번째 단어만 변경해야 함):
cat foo/is/a/very/long/path/to/bar.c
rm foo/is/a/very/long/path/to/bar.c
Ctrl+를 누른 a다음 첫 번째 단어를 제거 할 수 있다는 것을 알고 있지만 Del더 빠른 방법이 있는지 궁금합니다.
답변1
!$
이전 명령의 마지막 단어로 확장됩니다.
그래서 당신은 할 수 있습니다 :
cat foo/is/a/very/long/path/to/bar.c
rm !$
또는:
git diff foo/bar.c
git checkout !$
귀하의 예에서는 마지막 단어만 반복되었으므로 !$
정상적으로 작동했습니다. 실제로 반복하려는 인수가 많고 첫 번째 단어만 변경하려는 경우 !*
0번째를 제외한 이전 명령의 모든 단어로 확장되는 를 사용할 수 있습니다.
매뉴얼 페이지 의 "역사 확장" 섹션을 참조하십시오 bash
. 거기에는 많은 유연성이 있습니다.
답변2
Ctrl+는 a줄의 시작 부분으로 이동하고, Alt+는 d첫 번째 단어를 삭제합니다.
답변3
실제로 더 빠른지 아닌지는 확실하지 않지만,이 기사,특히 포인트 #.3:
- ^str1^str2^를 사용하여 이전 명령의 문자열을 바꿉니다.
다음 예에서는 먼저 ls 명령을 실행하여 파일을 확인했습니다. 나중에 우리는 파일의 내용을 보고 싶다는 것을 깨달았습니다. 전체 파일 이름을 다시 입력하는 대신 아래와 같이 이전 명령의 "ls"를 "cat"으로 바꿀 수 있습니다.
$ ls /etc/cron.daily/logrotate $ ^ls^cat^ cat /etc/cron.daily/logrotate
답변4
@jjlin 답변 외에도 다음 팁에 관심이 있을 수 있습니다.
- Ctrl+ w왼쪽에 있는 단어를 삭제합니다.
- Ctrl+ k커서부터 명령줄 끝까지 삭제
- Ctrl+ u커서부터 명령줄 시작 부분까지 삭제
- Alt+ b커서를 한 단어 뒤로 이동합니다.
- Alt+ f커서를 한 단어 앞으로 이동합니다.
$_
이전 명령줄의 마지막 인수를 포함합니다.
이에 대한 자세한 내용은 bash
맨페이지의 "Readline 명령 이름" 섹션을 찾아보세요.
예:
cat foo/is/a/very/long/path/to/bar.c
rm $_