13.11. 텍스트 파일을 읽는데 사용되는 추가 명령어

여러분은 이미 텍스트 편집기에서 파일을 읽는데 사용되는 다양한 기본 쉘 프롬프트 명령어에 대하여 알아보았습니다. 여기에서 몇가지 더 알아보도록 하겠습니다.

13.11.1. head 명령어

head 명령어를 사용하여 파일의 시작 부분을 볼 수 있습니다. 명령어는 다음과 같습니다:

head <filename>

head는 유용한 명령어이지만, 처음 몇개의 라인만 볼 수 있기 때문에, 실제로 그 파일이 얼마나 긴지를 알 수 없습니다. 디폴트 값으로, 파일의 첫 10 줄만 읽을 수 있지만 특정 수를 지정하여 볼 수 있는 라인 숫자를 바꿀 수 있습니다. 그 명령은 다음과 같습니다:

head -20 <filename>

13.11.2. tail 명령어

head 명령의 반대가 tail 입니다. tail 명령을 사용하여 파일의 마지막 10 줄을 읽을 수 있습니다. 이 명령은 중요한 시스템 메시지에 대한 로그 파일의 마지막 10 줄을 읽은데 유용합니다. 또한 tail 명령을 사용하여 로그 파일이 업데이트될 시 모니터할 수 있습니다. -f 옵션을 사용하면, tail 명령은 자동으로 열려진 파일에서 새로운 메시지를 화면 상에 동시에 출력합니다. 예를 들어 /var/log/messages 메시지를 계속적으로 모니터하시려면, 쉘 프롬프트에서 루트 사용자로 로그인하신 후 다음 명령을 입력하시기 바랍니다:

tail -f /var/log/messages

13.11.3. grep 명령어

grep 명령은 파일 내의 특정 문자열을 찾는데 유용하게 사용될 수 있습니다. 예를 들어 만일 sneakers.txt 파일에서 "coffee"를 언급한 부분을 모두 찾고 싶다면, 다음과 같이 입력하시면 됩니다:

grep coffee sneakers.txt

그 파일에서 "coffee"라는 단어가 들어있는 모든 라인이 나타날 것입니다.

작은보힌트
 

특별히 지정하지 않는다면, grep 검색은 대/소문자를 구별합니다. 즉, Coffee를 찾는 것은 coffee를 찾는 것과 다르다는 의미입니다. 따라서 grep의 옵션 중에서 -i를 사용하시면 대/소문자를 구별하지 않고 파일을 검색할 수 있습니다. 이 명령어에 대한 더 자세한 정보가 필요하시면 grep 메뉴얼 페이지를 참조하시기 바랍니다.

13.11.4. 입/출력 방향 변경과 파이프

파이프와 출력 방향 변경을 사용하여 나중에 읽을 수 있도록 정보를 저장하거나 인쇄할 수 있습니다.

예를 들어, grep 명령을 사용하여 파일의 특정 내용을 검색합니다. 그 다음에 그 결과를 파일로 저장하거나 프린터로 보내 인쇄할 수 있습니다.

예를 들어, sneakers.txt 파일에서 단어 "coffee"를 언급한 부분에 대한 정보를 인쇄하고 싶다면, 다음과 같이 입력하시면 됩니다:

grep coffee sneakers.txt | lpr

13.11.5. 와일드카드와 정규 표현

찾고자 하는 파일의 이름을 잊어버렸다면 어떻게 하시겠습니까? 와일드카드 또는 정규 표현 (regular expression)을 사용하여, 전체 파일명을 알지 못해도 파일 작업을 할 수 있습니다. 알고 있는 부분만 입력하고 나머지는 와일드카드 (wildcard)로 대체합니다. 와일드카드란 글자, 숫자와 기호를 대신해서 사용되어 긴 디렉토리 목록에서 찾고자 하는 디렉토리와 파일을 검색하는 것 보다 쉽고 빠르게 특정 디렉토리와 파일을 찾을 수 있게 해주는 특수 기호를 말합니다.

작은보힌트
 

와일드카드와 정규 표현에 대해 더 많은 정보를 알고 싶으시면, bash 메뉴얼 페이지 (man bash)를 참고해 주십시오. man bash | col -b > bash.txt라고 입력하여 텍스트 파일로 저장하는 것을 잊지 마십시오. 그런 다음 여러분은 less 나 vi (vi bash.txt) 명령을 이용하여 그 파일을 열고 읽을 수 있습니다. 파일 인쇄를 원하신다면, 그 파일이 매우 길다는 것을 염두해 두셔야 합니다.

파일명이 "sneak____.txt"인 것을 알고 있다면 다음과 같이 입력합니다:

ls sneak*.txt

그 후 이에 해당하는 파일명을 보실 수 있습니다:

sneakers.txt

파일을 찾을 때 별표 (*)를 가장 자주 사용하게 될 것입니다. 별표는 찾고 있는 패턴과 일치하는 모든 것을 검색합니다. 따라서 다음과 같이 입력할 수도 있습니다:

ls *.txt

또는 다음과 같이 사용할 수도 있습니다:

ls sn*

여러분은 sneakers.txt 파일과 이름이 sn으로 시작하거나 .txt로 끝나는 파일들을 찾을 수 있습니다. 이것은 검색 가능한 범위를 좁히는데 도움이 됩니다.

검색 범위를 좁힐 수 있는 한가지 방법은 물음표 기호 (?)를 사용하는 것입니다. 별표와 마찬가지로, ?를 사용하면 검색 패턴이 일치하는 파일들을 찾는데 도움이 됩니다.

그러나 이러한 경우에 ?는 단독 문자를 일치하는데 유용하게 사용됩니다. 만약 sneaker?.txt를 사용한다면, 결과로서 sneakers.txt 파일과 만일 있다면 sneakerz.txt 파일이 나타날 것입니다.

정규 표현은 별표나 물음표를 사용하는 것보다 훨씬 복잡합니다.

예를 들어 sneakers.txt이 sneak*.txt로 불리워진 것처럼 만일 별표가 파일명의 일부가 되는 경우가 발생한다면, 정규 표현이 유용하게 사용될 수 있습니다.

백슬래쉬 (\)를 사용하여 별표를 사용하여 전부를 찾는 것이 아니라, 대신 별표를 가지고 있는 파일명을 찾고 있다는 것을 지정할 수 있습니다.

만일 파일명이 sneak*.txt 이라면, 다음과 같이 입력합니다:

sneak\*.txt

와일드카드와 정규 표현에 대한 간단한 목록을 소개하자면: