Linux

직전 명령의 마지막 인자 재활용하기 : !$

둔진 2020. 5. 6. 06:52

  리눅스 콘솔에서 명령을 이것저것 치다 보면 방금 막 실행한 명령의 마지막 인자를 대상으로 다음 명령을 실행할 때가 많습니다.

예를 들어,

  1. raw.txt 파일의 이름을 train.txt로 바꾸고,
  2. train.txt 파일의 내용 중 "하늘"이 포함된 줄만 "sentences_with_sky_ko_KR.txt"로 옮기고,
  3. sentences_with_sky_ko_KR.txt의 내용을 cat으로 출력

하는 단계를 가정해보겠습니다. 일반적인 방법으로는,

$ mv raw.txt train.txt
$ grep "하늘" train.txt > sentences_with_sky_ko_KR.txt
$ cat sentences_with_sky_ko_KR.txt

  이렇게 합니다. Tab 키를 이용해서 자동 완성해가면서 하면 상대적으로 쉽지만, 이미 디렉터리에 비슷한 이름을 가진 파일들이 많다면 더덕더덕 걸리죠.

이 더덕 아니고요

  이럴 때 직전 명령의 마지막 인자를 나타내는 !$ 를 사용하면 편리합니다. 위의 명령은,

$ mv raw.txt train.txt
$ grep "하늘" !$ > sentences_with_sky_ko_KR.txt
$ cat !$

  이렇게 바꿀 수 있습니다. Shell의 종류에 따라 !$이 그대로 출력되기도 하고, 실제값으로 치환돼서 보이기도 하지만 동작은 같습니다.

  아주 작은 팁이지만 생각보다 콘솔 환경에서 쓰임이 많기 때문에 기억해 두셨다가 한번씩 써보시길 추천드립니다.