답변:
한 줄에 추가하면됩니다. command 2>> error 1>> output
그러나 >>
파일에 이미 데이터가있는 경우 추가하기위한 것입니다. 반면 >
파일의 기존 데이터를 덮어 씁니다.
따라서 command 2> error 1> output
추가하지 않으려는 경우.
완료를 위해 기본 파일 디스크립터가 출력 인 1>
것처럼 작성할 수 있습니다 >
. 지금 1>
과 >
같은 일이다.
따라서 command 2> error 1> output
,이된다command 2> error > output
command &2>err.log
, 나는 완전히 혼란스러워하는 세금이라고 생각합니다. (모든 배쉬 파이프의 적절한 답변에 대한 링크가 순서대로있을 수 있습니다)
command &2>err.log
는 합법적이지 않은 것처럼 보입니다. 구문의 앰퍼샌드는 파일 설명자를 대상으로 사용합니다. 예를 들어 command 1>&2
stdout을 stderr로 다시 라우팅합니다.
이 시도:
your_command 2>stderr.log 1>stdout.log
도면 부호 0
를 통해이 9
있는 파일 기술자 bash는있다.
0
표준 입력, 1
표준 출력, 2
표준 오류를 나타냅니다. 3
통과 9
는 다른 임시 사용을위한 여분입니다.
모든 파일 디스크립터는 연산자를 사용하여 파일 또는 다른 파일 디스크립터로 경로 재 지정 될 수 있습니다 >
. 대신 연산자 >>
를 사용하여 빈 파일을 작성하는 대신 파일에 추가 할 수 있습니다 .
용법:
file_descriptor > filename
file_descriptor > &file_descriptor
을 참조하시기 바랍니다 고급 Bash 스크립팅 가이드 : 제 20 장 I / O 리디렉션 .
또는 하나의 단일 파일에 출력 (stdout & stderr)을 혼합하려면 다음을 사용하십시오.
command > merged-output.txt 2>&1
여러 명령의 출력을 리디렉션 할 수 있습니다. 이것은 명령 행 또는 bash 스크립트에서 가장 유용합니다. 는 -s
화면에 프롬프트 비밀번호를 지시합니다.
Hereblock cmds stdout / stderr은 별도의 파일로 보내지고 표시 할 내용이 없습니다.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Hereblock cmds stdout / stderr은 단일 파일로 전송되어 표시됩니다.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Hereblock cmds stdout / stderr은 별도의 파일로 보내지고 stdout은 표시됩니다.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
사용자 (whoami) 및 사용자 이름에 따라 비밀번호가 필요하거나 필요하지 않을 수 있습니다.
1>
쓸 수 있는지에 대한 당신의 설명을 정말로 좋아합니다>