posted by 귀염둥이채원 2021. 4. 8. 21:00

* 표준출력 : shell에서 실행시 정상 종료시의 메시지로 화면에 출력됨, 파일 디스크립터는 1번
* 표준에러 : shell에서 실행시 발생한 에러 메시지로 화면에 출력됨. 파일 디스크립터는 2번
* /dev/ull : 출력이 파기되어, 아무것도 출력이 되지 않음. (쓰레기통으로 표현됨)
* 2>&1 : 2(표준에러)를 1(표준출력)으로 보내기
* >/dev/null 2>&1 : 앞에 1이 생략 (1>/dev/null 2>&1) → 표준출력,표준에러 다 버려라.

# error.sh

#!/bin/bash

echo "About to try to access a file that doesn't exist"
cat bad-filename.txt


# stdout 및 stderr 모두 리디렉션
./error.sh 1> capture.txt 2> error.txt

# stdout 및 stderr을 동일한 파일로 리디렉션
./error.sh > capture.txt 2&>1


# exam.py

!/usr/bin/env python

import sys

sys.stdout.write("stdout")
sys.stderr.write("stderr")


# stdout을 파일로 redirect
$ ./exam.py > test.txt

# stderr을 refirect하고, stdout만 화면 표시
./exam.py 2> test.txt

# stdout 과 stderr 둘다 파일로 저장
./exam.py 2&> test.txt

# stdout 과 stderr 둘다 화면과 파일로 동시에 redirect
./exam.py 2>&1 | tee test.txt


# 참고사이트
https://stackoverflow.com/questions/637827/redirect-stderr-and-stdout-in-bash