[Ubuntu] 파이프와 리다이렉션[Ubuntu] 파이프와 리다이렉션

Posted at 2020. 1. 31. 19:08 | Posted in Linux/Ubuntu
반응형




■ 파이프와 리다이렉션




리눅스 콘솔에서 작업을 하다 보면 2개 이상의 명령어를 조합해서 원하는 작업을 하는 경우가 있다.


명령어들 각각의 특징과 기능을 정확히 이해하고 조합함으로써


새로운 명령 형태 또는 복잡한 명령 형태를 수행할 수 있게 해준다.


이렇게 여러 명령어를 조합하기 위해서는 파이프와 리다이렉션의 개념을 이해하고 있어야 된다.


두 가지 개념은 비슷하지만 다르다.




#01. 파이프



파이프는 기호 「 |  」 를 의미한다. 파이프는 앞쪽에서 수행된 명령어의 결과를 


파이프 뒤쪽 명령어에게 전달하라는 의미이다.


뒤쪽 명령어는 앞 명령어가 수행한 결과를 가지고 적절한 결과를 다시 보여줄 수가 있게 된다.



 $ ls | more 

 




위 명령어는 간단하게 ls 명령어와 more라는 명령어를 파이프로 조합한 것이다.


ls 명령어는 앞에서 자주 봤듯이 현재 디렉토리에 있는 파일과 하위 디렉토리 목록을 보여주는 명령어이다.


그리고 more라는 명령어는 화면에 출력할 내용을 커서키를 이용해서 한 줄씩 출력하게 해주는 명령어이다.


ls 명령어를 입력했는데 보여줄 내용이 많아서 한 화면에 다 담을 수 없을 경우 위쪽에 출력된 내용은 잘리게 된다.


하지만 more 명령어를 파이로 조합해서 수행하게 되면 전부 살펴 볼 수 있다.


이처럼 more라는 명령어는 파이프와 함께 자주 사용되는 명령어이다.



 $ cat test.txt | more 



위 명령어는 test.txt의 내요을 한 줄 씩 키보드 커서를 이용해서 살펴볼 수 있게 해준다.


파일의 내용을 살펴보다가 종료혀라면 키보드 q를 누르면 된다.



 $ ps -aux | grep init

 


위 예제는 ps 명령어를 이용해서 시스템의 프로세스 목록을 얻어온 후에 init이라는 단어를 찾아서


해당 라인만 보여주라는 명령어이다.


grep 역시 more와 마찬가지로 파이프와 같이 사용되는 대표적인 명령어이다.


앞쪽 명령어가 수행된 결과에서 특정 키워드를 찾아준다.


파이프는 2개 이상의 명령어를 연결하는 것도 가능하다.


계속 파이프를 이용해서 여러 명령어를 연결할 수도 있다.





#02. 리다이렉션



리다이렉션은 「 > 」 또는 「 < 」 기호를 의미한다.


표준 출력 또는 표준 입력의 방향을 바꿔줄 때 사용한다.


표준 출력과 표준 입력이 좀 생소할 수 있는데 아래 예제를 살펴보자.


 $ ls > result.txt



ls라는 명령어의 결과는 원래 화면에 그 내용을 보여주도록 되어 있다.


하지만 리아디렉션 기호 「 > 」 를 입력하면 화면에 출력해야 할 결과를 result.txt 라는 파일에 저장하게 할 수 있다.


반대의 경우( 「 > 」 기호를 사용하는 경우 )는 아래와 같다.


 $ grep init < test.txt 

 


test.txt 파일을 읽어서 init 이라는 단어가 있는 줄만 화면에 출력한다.


원래 grep 명령어는 키보드 입력이나 다른 명령어의 결과 입력을 기반으로 동작하는 명령어인데


리다이렉션을 이용해서 text.txt 파일의 내용을 입력으로 쓸 수 있게 해준다.


만약 리다이렉션을 이용하지 않고 파이프를 이용한다면 아래와 같이 해도 동일한 결과를 얻는다.



 $ cat text.txt | grep init 

 


리다이렉션은 화면에 출력할 내용( 표준 출력 ) 이나 사용자가 키보드로 입력한 내용(표준 입력)의 방향을


파일이나 특정 장치로 방향을 바꾸는데 사용된다.


파이프에 비해서 조금 어려울 수 있지만 다행이 리다이렉션은 파이프에 비해서 초보자들이 많이 쓸 일은 없다.







반응형
//