히스토리 표현식 !$는 ‘가장 최근에 입력한 명령의 마지막 단어’를 가리킨다. 따라서 rm !$는 ‘조금 전 ls 명령으로 확인한 목록의 파일을 삭제하라’는 뜻이 된다. 즉, *.txt와 같은 뜻을 가진다. 애스터리스크 뒤에 오타로 공백이 들어갔더라도 ls 명령의 결과에서 실수를 확인할 수 있기 때문에 안전하다.
$ ls * .txt
/bin/ls: cannot access '.txt': No such file or directory
123 a.txt b.txt c.txt dont-delete-me important-file passwords
rm 대신 ls 명령을 먼저 실행하는 것도 좋은 습관이며, 오타를 낸 표현식을 제대로 수정한 후 안전하게 삭제를 진행할 수 있다. ls와 rm !$를 함께 사용하면 의도치 않은 파일 삭제를 대부분 방지할 수 있다.
이와 비슷하게 삭제 전에 head 명령으로 파일의 내용을 확인하고 rm !$를 실행해 안전하게 파일을 삭제하는 방법도 있다.
chapter03 > never_delete_wrong_file_2
$ head myfile.txt
(myfile.txt의 첫 열 줄의 내용이 출력)
$ rm !$
rm myfile.txt