나는 BashFAQ/002을 읽고 다음 리다이렉션 케이스에 걸쳐 왔습니다. 나는 각각의 경우에 대한 나의 이해를 기록 했으므로 내가 틀렸다면 의견을 말하십시오.Bash : 다음 리디렉션 케이스를 설명하십시오.
사례 1
output=$(command 2>&1 >/dev/tty)
리디렉션 stderr
stdout
하고 이상이 tty
에 stdout
를 리디렉션합니다. 따라서 이제 stdout and stderr
은 터미널로 리디렉션/출력됩니다.
사례 2
output=$(command 2>&1 >/dev/null)
리디렉션 stderr
stdout
하고 이상이 /dev/null
에 stdout
를 리디렉션합니다. 비록 지금은 stderr and stdout
두 가지가 모두 버려지기 때문에이 지점을 이해할 수는 없지만.
아니, 생각이 무엇이든지 무슨 여기 일이 3
output=$(command 3>&2 2>&1 1>&3-)
케이스. 나는 fd 3
을 모르고있다.
사례 4
exec 3>&1
output=$(command 2>&1 1>&3)
exec 3>&-
아니, 생각을 다시.
누군가 제 3의 사례와 4 번째의 사례에 대해 자세히 설명하고 관련 문서를 알려줄 수 있습니까? 열려있는 각 파일은 파일 기술자를 할당됩니다 : 당신이 결과에 대해 걱정하지 않는다 나타냅니다는/dev/null로 데이터를 전송
case 2 : 'stderr와 stdout이 모두 버려 졌기 때문에'- _that_는/dev/null로 보내기위한 포인트입니다. – mcalex
^사실이 아닙니다. stdout 만'/ dev/null'으로 리디렉션됩니다. – doubleDown