13.9. cat을 사용하여 파일 조작하기

Red Hat Linux에는 짧은 목록을 정리하고 보관하며, 또한 시스템에 대한 정보를 보여주는 유틸리티가 포함되어 있습니다.

이 유틸리티는 cat이라고 부르며, 이것은 concatenate의 줄임말로서 여러 파일을 붙여서 하나의 파일로 합치는 것을 의미합니다.

cat 명령어는 또한 파일 전체의 내용을 화면 상에 보여줍니다 (예, cat filename.txt 입력). 만일 그 파일이 상당히 길다면, 화면에서 빠르게 지나가 버립니다. 이렇게 되는 것을 방지하려면, cat filename.txt | less 명령을 사용하십시오.

파이프 (|) 와 less 명령을 사용하시면 파일을 한페이지 씩 볼 수 있습니다. 그 후 왼쪽 회살표 키나 오른쪽 화살표 키를 이용하여 페이지 앞 뒤로 보시면 됩니다. 파이프를 사용하여 두가지 다른 기능을 결합하는 방법에 대한 보다 많은 정보를 원하시면, 13.10 절을 참조하시기 바랍니다.

13.9.1. 출력 방향 변경 (Redirection) 사용하기

출력 방향 변경 (Redirection)이란 쉘에서 표준 출력을 변경하거나 사용자가 지정하는 다른 곳으로 돌리는 것을 의미합니다.

표준 출력을 다른 곳으로 재지향하기 위해서는, > 기호를 사용하시면 됩니다. cat 명령어 (또는 표준 출력을 작성하는 다른 유틸리티나 응용 프로그램) 다음에 > 기호를 놓으면 이 기호 다음에 온 파일명으로 출력을 재지향 합니다.

예를 들어, cat 명령어만 사용하신다면, 여러분이 입력하신 줄을 반복하듯이 화면합니다. 다음은 cat 명령어가 입력된 모든 줄을 반복하는 보여주는 예시입니다:

그림 13-5. cat 명령어

cat의 출력 결과를 다른 파일로 출력 방향 변경하시려면, 쉘 프롬프트에서 다음과 같은 명령을 입력하시기 바랍니다 ([Enter] 키를 누르시면 다음 빈 줄로 이동합니다):

cat > sneakers.txt

그림 13-6. 파일로 출력 방향 변경하기

[Enter] 키를 눌러 빈 줄로 가신 후, cat을 종료하기 위해 [Ctrl]-[D] 키를 눌러 주십시오.

그림 13-6에서 차이점을 아시겠습니까? 반복된 항목을 찾아볼 수 없습니다. 그 이유는 cat 명령의 표준 출력이 여러분이 만드신 새 파일인, sneakers.txt라는 파일로 출력 방향 변경되었기 때문입니다.

cat 명령을 입력하신 디렉토리에서 그 파일을 찾으실 수 있습니다. (파일이 목록에 있는지 확인하시려면 ls 명령을 입력해 보십시오).

앞서 배우신 것처럼 cat 명령을 사용하여 파일을 읽을 수 있습니다. 프롬프트에서 다음과 같이 입력합니다:

cat sneakers.txt

경고경고
 

파일로 출력을 리다이렉트하실 때 주의하셔야 합니다. 왜냐하면 이미 존재하고 있는 파일을 덮어쓸 수 있기 때문입니다! 기존 파일을 바꾸길 원하지 않는 한, 새로 만들 파일 이름이 기존의 이름들과 일치하지 않도록 확인하셔야 합니다.

다른 파일로 출력 전송을 사용해 봅시다. 이번에는 파일 이름을 home.txt라고 합니다. 예를 들면, cat > home.txt 명령을 입력하고 [Enter] 키를 치신 후 다음과 같이 입력해 보십시오:

bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

이제, 빈 줄에서 [Ctrl]-[D] 키 조합을 사용하여 cat을 마칩니다.

다음으로, cat을 사용하여 home.txt 파일과 sneakers.txt 파일을 연결하여 두 파일의 출력을 saturday.txt라고 불리는 새로운 파일로 출력 방향을 변경할 수 있습니다. (그림 13-7에 예시가 나와있습니다) 다음과 같이 입력하십시오:

cat sneakers.txt home.txt > saturday.txt

그림 13-7. 파일 연결하기와 출력 방향 변경하기

cat 명령어가 sneakers.txt가 끝나는 곳에 home.txt 파일을 첨가시킨 것을 볼 수 있습니다.

13.9.2. 표준 출력 추가하기

표준 출력을 방향 변경하는 기능을 사용하여 기존 파일 끝에 새로운 정보를 덧붙일 수 있습니다. > 기호를 사용할 때와 유사하게, 쉘(shell)에서 표준 출력이 아닌 다른 곳으로 정보를 보내도록 할 수 있습니다.

그러나 >> 기호를 사용하시면, 기존에 있는 파일을 새로 고치기 보다는 있던 파일에 정보를 추가하는 것이 됩니다.

예시를 통해 설명해 보겠습니다. 이미 만들어 놓은 두개의 파일을 선택합니다 (sneakers.txt와 home.txt) 그리고 출력 추가 (append output) 기호를 사용하여 두 파일을 결합시킵니다. sneakers.txt에 있는 정보에 home.txt 파일 정보를 추가하려고 합니다, 따라서 다음과 같이 입력해 주십시오:

cat home.txt >> sneakers.txt

이제 cat sneakers.txt 명령을 이용하여 결과를 확인합니다. 파일 마지막 부분에 home.txt 내용이 나타나는 것을 볼 수 있습니다:

buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

여러분이 입력하신 명령은 시스템으로 하여금 home.txt 파일의 출력을 sneakers.txt 파일로 추가하도록 지시한 것입니다.

출력을 추가함으로서, 새 파일을 만드는 것보다 기존에 있는 파일을 이용하여 시간을 (그리고 약간의 디스크 공간도) 절약할 수 있습니다.

이제 sneakers.txt 파일과 saturday.txt 파일의 결과를 비교해 보십시오. 이 두 파일이 동일하다는 것을 알 수 있습니다. 결과를 비교하기 위해서, 다음과 같이 입력합니다:

cat sneakers.txt; cat saturday.txt

두 파일의 내용이 화면에 나타날 것입니다 — 그림 13-8에서 보여지는 바와 같이 첫번째 것이 sneakers.txt 이고, 그 다음이 saturday.txt 입니다.

그림 13-8. 명령어 함께 쓰기와 파일 비교하기

13.9.3. 표준 입력 방향 변경하기

표준 출력을 방향 변경할 수 있을 뿐만 아니라, 동일한 방향 변경 방법을 사용하여 표준 입력을 방향 변경하는 것이 가능합니다.

표준 입력 기호인 <을 사용하면, 여러분은 쉘에게 명령어에 대한 입력으로 파일이 읽혀지길 원한다고 지시하는 것입니다.

이미 만들어 놓은 파일을 사용하여 이 개념을 설명해 보겠습니다. 다음과 같이 입력해 주십시오:

cat < sneakers.txt

cat 명령과 파일명 사이에 '무엇보다 작은' 기호인 (<)를 사용하셨기 때문에, cat 명령은 sneakers.txt 파일을 읽어 들입니다.

그림 13-9. 표준 입력 방향 변경하기