운영체제는 기본적으로 프로그램에게 3개의 파일 디스크럽터를 할당한다.
파일 디스크럽터 | 설명 | 기본 값 |
0 | 표준 입력 | 키보드 |
1 | 표준 출력 | 모니터 |
2 | 표준 에러 | 모니터 |
표준 입력장치 변경
리눅스의 리다이렉트 연산자(<)를 이용한다.
cat < [filename]
위 명령어의 내부 동작은 이렇다. file의 내용을 표준 입력으로 하여 cat에게 리다이렉트하고 cat은 이를 출력하는 것이다.
표준 출력장치 변경
리눅스의 > 연산자를 사용하면 기본적으로 표준 출력이 리다이렉트 된다. 사실 > 연산자 앞에 파일 디스크럽터의 번호를 표기하는 것이 정석이지만 생략하게되면 1번이 기본으로 설정된다.
cat [filename] 1> /dev/null # 이것이 정석
cat [filename] > /dev/null # 암묵적으로 표준 출력이 리다이렉트 된다
/dev/null로 출력을 리다이렉트하면 출력값이 버려진다.
2>&1은 뭘까?
끊어서 생각해보자. 2> 는 표준 에러의 출력을 리다이렉트 하겠다는 의미이다. 그리고 &1는 표준 출력을 표준 에러의 출력으로 함께 사용한다는 의미이다. 따라서 표준 에러의 출력이 표준 출력과 함께 리다이렉트 된다.
다음 예제를 보자.
cat test.txt 1> /dev/null 2>&1
cat 명령어를 이용한 test.txt 내용의 표준 출력이 /dev/null로 리다이렉트 되었다. 또한 2>&1 연산으로 인해 표준 에러의 출력도 /dev/null로 리다이렉트 되었다고 볼 수 있다. 따라서 명령어를 수행했을 때 No such file or directory 같은 에러가 발생한다면 /dev/null로 출력이 리다이렉트 될 것이다.
'리눅스' 카테고리의 다른 글
리눅스 chroot (0) | 2022.09.29 |
---|---|
리눅스 하드웨어 용량 확인 및 swap 메모리 확보 (0) | 2022.08.19 |
i-node 그리고 하드 링크 파일 vs 소프트 링크 파일(심볼릭 링크 파일) (0) | 2022.08.11 |
리눅스 파일 접근 권한 변경 방법 (0) | 2022.08.11 |
리눅스 우분투 명령어 기본 정리 (0) | 2022.08.08 |