본문 바로가기

Linux

[Linux] 파일 입출력 - 리다이렉션

반응형

shell에서 어떠한 명령를 내리거나 할때 대게는 콘솔(모니터) 화면에 출력이 되게 된다.
이러한 출력을 콘솔이 아닌 파일에 저장할 수 있는데, 이때 파일에 입력할 수 있는 방법을 리다이렉션 이라고 한다.

일반적으로 리눅스 운영체제를 다룰때 가장 많이 사용하는것중에 하나가 바로 이 리다이렉션이다.
리다이렉션을 이용하면 파일 저장 뿐 아니라 파일안에 있는 문구들을 쉘에 입력할 수도 있다.

특히 나같은경우 정기적으로 실행되는 프로그램의 결과나 에러등을 파일등에 저장하여 로그화 할때 사용한다.

리다이렉션은 해당 기호의 방향을 어느 방향으로 하느냐에 따라서 입력/출력으로 구분할 수 있다.


기호

설명

 >

 파일에 출력

 >>

 기존 파일에 이어서 출력

<

 파일에 있는 내용을 입력



// 명령어의 결과를 text.log에 저장한다
 # ls -al > test.txt

 // 명령어의 결과를 text.log에 이어서 저장한다.
 # ls -al >> test.txt

 // grep 뒤에 str.txt의 내용을 추가한다.
 # ls -al | grep < str.txt


해당 기호를 가장 손쉽게 구분하는 방법으로는 화살표가 찌르는 방향(가리키는 방향)으로 입력이 된다고 생각하면 편하다.



아래는 내가 자주 사용하는 형태의 사용 예제이다.


// 명령어의 결과와 에러를 msg.txt에 저장한다
 # echo "Hello" >& msg.txt

 // 명령어의 결과와 에러를 msg.txt에 이어서 저장한다
 # echo "Hello" >>& msg.txt

 // a.txt 삭제결과를 msg.txt에 저장. 에러가 날경우 해당 에러를 표준출력으로 전환
 # rm a.txt > msg.txt 2>&1

 // a.txt 삭제결과를 /dev/null 로 버리고 표준에러는 표준 출력으로 전환. 즉 모든 메세지를 /dev/null에 버림.
 # rm a.txt > /dev/null 2>&1


* /dev/null은 쉽게 이야기하면 출력 결과를 버린다라는 뜻으로 이해하면 된다.