기본적으로 리눅스의 표준 입력(standard input)은 키보드이고 표준 출력 (standard output)은 모니터 혹은 터미널윈도이다. 하지만 리눅스는 매우 유연한 운영 체제이므로 이러한 표준 입출력을 변경할 수 있다. 예를 들어 표준 출력을 모니터가 아니라 프린터로 바꿀 수 있다.


>과 |를 이용한 출력 재지정

 출력 재지정(output redirection)을 이용하면 명령어의 표준 출력 내용을 모니터에 출력하는 대신에 파일에 저장하거나 다른 명령어의 입력으로 인가할 수 있다. 이때 사용되는 기호가 >와 | 이다.


명령어 > 파일명


만약 파일이 있다면 덮어쓰게 되고 없다면 새로 생성한다. 예를 들어 다음 명령은 ls 의 결과를 모니터에 출력하지 않고 모두 파일 list.txt에 저장한다.


ls > list.txt


출력 재지정은 앞에서 cat 명령이나 echo 명령에서 사용한 바 있다. 만약  >을 이용하여 두 개의 파일을 연결하여 하나의 새로운 파일을 만들 수 있다.


cat file1 file2 > file3


이렇게 하면 file1 과 file2의 내용이 합해져서 file3 에 저장된다.


 덮어쓰기(overwrite)는 바람직하지 않으므로 만약 실수로 중요한 파일을 덮어쓰는 것을 방지하려면 .bashrc 파일에 set -o noclobber 라는 명령을 추가시켜주는 것이 좋다.


 만약 다음과 같이 ‘아무 것도 아닌 것을’ 존재하는 파일에 재지정하면 그 파일은 빈 파일이 되어버린다.


> list


list라는 파일의 크기는 0인 것을 확인할 수 있을 것이다. (이것을 truncating 이라고 한다.) 또는 존재하지 않는 파일에 같은 일을 하면 빈 파일이 새로 생성된다. touch 명령어와 동일한 동작을 수행한다.


 기호 | 는 좌측의 출력을 우측의 입력으로 인가한다. 만약 긴 리스트를 한 페이지씩 보고 싶다면 다음과 같이 한다.


ls -al | less


만약 파일명에 특정 문자열이 들어간 것만 보고 싶다면 다음과 같이 grep 명령과 조합하여 사용하면 된다.


ls -al | grep part_of_file_name


입력 재지정 (input redirection)

 입력 재지정을 이용하면 명령어의 표준 입력을 키보드 대신 파일에서 받을 수 있다. 이 때 < 연산자가 이용된다.


명령어 < 파일


예를 들어 wc (줄바꿈문자수, 단어수, 바이트수를 표시하는 명령)의 입력을 파일에서 받고 싶다면 다음과 같이 입력한다.


wc < list1.txt


입력과 출력 재지정을 조합해서 사용할 수도 있다


wc < list1.txt > result


이 명령은 list1.txt파일의 워드카운트 결과를 result 파일에 기록한다.

출력 추가(append)

 기호 >> 를 이용하면 명령어의 표준 출력을 기존 파일에 추가할 수 있다.


명령어 >> 파일


예를 들어 현재 로그인한 사용자들의 리스트를 list.txt에 추가하려면 다음과 같이 하면 된다.


who >> list.txt


만약 파일이 없다면 생성한 후 기록하게 된다.



Posted by 살레시오

댓글을 달아 주세요