스크립트에서 stderr과 stdout을 동일한 줄에 있는 다른 파일로 리디렉션하는 방법은 무엇입니까?
이 정도는 알고 있습니다.
$ command 2>> error
$ command 1>> output
stderr을 error 파일로 출력하고 stdout을 출력 파일로 출력할 수 있는 방법이 있습니까?
한 줄로 추가하기만 하면 됩니다.command 2>> error 1>> output
그러나 참고:>>
파일에 이미 데이터가 있는 경우 추가할 수 있습니다.반면에.>
파일의 기존 데이터를 덮어씁니다.
그렇게,command 2> error 1> output
추가하기를 원하지 않는 경우.
단지 완성을 위해, 당신은 글을 쓸 수 있습니다.1>
정당하게>
기본 파일 설명자가 출력이기 때문입니다.그렇게1>
그리고.>
같은 것입니다.
그렇게,command 2> error 1> output
된다,command 2> error > output
사용해 보십시오.
your_command 2>stderr.log 1>stdout.log
더 많은 정보
숫자들0
통해.9
bash의 파일 설명자입니다. 0
표준 입력을 나타냅니다.1
표준 출력을 나타냅니다.2
표준 오류를 나타냅니다. 3
통해.9
다른 임시 용도로 사용할 수 있습니다.
운영자를 사용하여 모든 파일 설명자를 파일 또는 다른 파일 설명자로 리디렉션할 수 있습니다.>
대신 연산자를 사용할 수 있습니다.>>
파일을 만드는 대신 파일에 추가합니다.
용도:
file_descriptor > filename
file_descriptor > &file_descriptor
고급 Bash-Scripting Guide: Chapter 20. I/O Redirection을 참조하십시오.
그런 식으로:
$ command >>output 2>>error
또는 출력(stdout & stderr)을 단일 파일에 혼합하려는 경우 다음을 사용할 수 있습니다.
command > merged-output.txt 2>&1
여러 명령의 출력을 리디렉션할 수 있습니다.이것은 명령줄 또는 bash 스크립트에서 가장 유용하게 사용됩니다.그-s
암호 프롬프트를 화면으로 유도합니다.
여기서 차단 cmds stdout/stderr은 별도의 파일로 전송되며 표시할 내용은 없습니다.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
여기서 블록 cmds stdout/stderr은 단일 파일 및 디스플레이로 전송됩니다.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
여기서 차단 cmds stdout/stderr은 별도의 파일로 전송되고 stdout은 표시됩니다.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
사용자 및 사용자 이름에 따라 암호가 필요하거나 필요하지 않을 수 있습니다.
언급URL : https://stackoverflow.com/questions/7901517/how-to-redirect-stderr-and-stdout-to-different-files-in-the-same-line-in-script
'source' 카테고리의 다른 글
ADT 22로 업그레이드한 후 라이브러리가 APK에 더 이상 추가되지 않음 (0) | 2023.05.25 |
---|---|
파이썬에서 "."와 "+=[]"의 차이점은 무엇입니까? (0) | 2023.05.25 |
Git 병합 오류 (0) | 2023.05.25 |
log4net을 어떻게 구성하면 로그가 생성됩니다.DebugEnabled가 참입니까? (0) | 2023.05.25 |
Java 드라이버를 사용하여 MongoDB에 대한 $or 쿼리를 작성하려면 어떻게 해야 합니까? (0) | 2023.05.25 |