더북(TheBook)

cd 명령처럼 단 하나의 파일 또는 디렉터리만을 인수로 받는 명령에서 패턴을 사용할 때는 주의해야 한다. 잘못하면 우리가 의도하지 않은 동작을 일으킬 수 있다.

$ ls
Pictures    Poems       Politics
$ cd P*                           # 세 개의 디렉터리가 패턴과 일치
bash: cd: too many arguments

만약 패턴과 일치하는 파일이 없다면, 셸은 패턴을 그대로 명령 인수로서 전달한다. 다음 명령에서는 패턴 *.doc가 일치하는 파일이 현재 작업 디렉터리에 없었기 때문에 ls 명령이 *.doc라는 파일을 직접 찾다가 오류가 발생했다.

$ ls *.doc
/bin/ls: cannot access '*.doc': No such file or directory

파일 패턴을 다룰 때는 두 가지를 유념해야 한다. 첫 번째는 앞서 강조했듯이, 패턴 매칭을 수행하는 주체는 호출되는 프로그램이 아니라 셸이라는 점이다. 이미 지겹도록 반복하는 말이지만, 의외로 이 사실을 모르는 리눅스 사용자들이 명령에 오류가 발생하거나 명령이 제대로 동작하는 이유를 멋대로 상상하는 경우가 잦다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.