1.파이프, 리다이렉션

출처

설명

표준 입력, 출력, 에러를 연결하기 위해서 사용하는 파이프와 리다이렉션에 대해서 알아보겠습니다.

파이프

파이프는 command1 | command2와 같은 형태로 사용되고, command1의 표준 출력을 command2의 표준 입력으로 전달합니다. &를 붙이면 표준 에러도 함께 전달합니다.

$ command1 | command2
$ command1 |& commnad2

# file.txt의 내용을 읽어서, grep의 입력으로 전달 
$ cat file.txt | grep a

리다이렉션

리다이렉션은 command > filename와 같은 형태로 사용되고, 파일을 읽어서 표준 입력으로 전달하거나, 표준출력을 파일로 저장합니다. 파일 대신 명령의 결과를 입력, 출력할 수도 있습니다. &를 붙이면 표준 에러도 함께 전달합니다.

리다이렉션 내용
< 파일 읽기
> 파일 쓰기(overwrite)
>> 파일 쓰기(insert)
# 파일 입력
$ command < infile

# 파일 출력 
$ command > outfile
$ command >> outfile
$ command >& outfile
$ command >>& outfile

2>&1와 /dev/null

스크립트를 작성할 때 2>&1 이라는 표현을 볼 수 있습니다. 이 명령은 표준에러(2)를 표준출력(1)으로 리다이렉션 하는 것입니다.

리눅스는 표준 입력과 출력을 숫자로 표현할 수도 있습니다. 이를 파일 디스크립터라고 합니다.

구분 파일 디스크립터
표준 입력 0
표준 출력 1
표준 에러 2

/dev/null은 표준 출력을 버리기 위한 용도로 사용되는 디스크립터 입니다. 처리 결과로 출력되는 로그를 보지 않기 위해 사용하고, 2>&1과 함께 사용하여 표준 출력, 표준 에러를 화면에 표시하지 않는 용도로 사용합니다.

# sample.sh의 표준 출력을 보이지 않도록 리다이렉션 
$ sample.sh > /dev/null

# sample.sh의 표준 출력, 에러를 보이지 않도록 리다이렉션 
$ sample.sh > /dev/null 2>&1

links

social