common sense2011. 8. 3. 19:59
리눅스에서 리다이렉션 기능은 매우 강력하여 리눅스 쉘에 있어서 필수적인 기능이다.,

표준 입력, 출력, 에러

리눅스 박스는 표준입력과 표준출력, 그리고 표준에러를 가지고 있다. 표준입력이란 키보드로부터의 입력을 말하며, 표준출력과 에러는 모두 텍스트 화면 출력을 의미한다. 다만 표준에러는 버퍼에 기록하지 않고 바로바로 출력한다는 것에 차이가 있다. 

표준 출력 리다이렉션

표준 출력 리다이렉션은 표준 출력과는 다르게 정상적인 출력 결과가 화면에 표시 되는 것이 아니라 파일에 저장되도록 방향을 전환시키는 것을 말한다. 
출력 리다이렉션은 쉘의 기능으로 프로그램의 입장에서는 그에 대해 알지도 못하고 또 알 필요도 없다. 앞의 쉘에 대한 설명에서 다뤘듯이 쉘은 프로그램과는 별도로 명령을 해석하고 리다이렉션을 처리함으로서 프로그램은 이에 대해 알 필요가 없다. 프로그램은 항상 자신이 표준 출력을 이용해 출력을 하고 있다고 생각한다. 따라서 리다이렉션의 존재를 모른다. 다시 한번 강조하자면 쉘이 출력물을 파일로 전환시켜 주는 것이다. 

다음은 출력 리다이렉션을 사용하는 예이다.

$ cat temp.txt > temp2.txt 

위와 같은 형식을 사용하면 cat의 표준출력 내용(여기에서는 temp.txt 파일의 내용)이 temp2.txt에 기록된다. 앞의 cat는 예로 들었을뿐 리다이렉션이 가능한 명령이면 어떤 것이라도 올 수 있다. (사실 표준출력은 거의 모든 명령이 이용한다.) 주의할 것은 뒤에 오는 temp2.txt는 중복되는 파일이 아니어야 한다는 것이다. 기존에 같은 이름의 파일이 있다면 쉘은 기존 파일 내용을 삭제해버리고 새로운 내용으로 채운다.

$ ls -al > temp_list.txt 

위의 명령을 내리면 ls -al 결과를 파일로 저장한다. 만약 > 대신에 >>를 사용하면 기존내용에 추가하겠다는 의미이다. 

표준에러 리다이렉션

어떤 명령의 표준에러를 어떤 파일에 기록하려면 >나 >>로는 기록할 수 없다. 이는 표준 에러가 화면에는 표준출력과 함께 표시되더라도 내부적으로는 별도의 장치를 이용하기 때문이다. 표준에러만 따로 기록하려면 2>나 2>>를 이용해야 한다. 이 둘의 차이는 >와 >>와의 관계와 같다. 

$ cat temp > temp2.txt 2> temp_error.txt 

입력 리다이렉션

입력 리다이렉션은 키보드로 한줄, 한줄 입력해야 하는 자료를 일단 파일에 저장해 두고 키보드 입력으로 한 줄씩 입력하는 것처럼 해주는 쉘의 기능이다. 이 역시 프로그램의 입장에서는 명령이 키보드로부터 오는지 파일로부터 오는지 알 수 없다. 

$ ls -al > ls_list.txt
$ sort < ls_list.txt > list_sorted.txt 

위의 예는 ls -al 결과를 ls_list.txt라는 파일에 기록하고 이를 표준입력으로 sort해 그 결과를 다시 list_sorted,txt에 저장하는 것이다. 


 

'common sense' 카테고리의 다른 글

strcmp함수  (0) 2011.08.03
apache2 루프백 도메인 오류  (0) 2011.08.03
drm 이란  (0) 2011.07.25
네트워크 관리사 2급 핵심 키워드 -TCP/IP  (0) 2011.07.25
네트워크 관리사 2급 핵심키워드 -window 2000 server  (0) 2011.07.25
Posted by babuzzzy