답변:
한 줄에 추가하면됩니다. 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>&2stdout을 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>쓸 수 있는지에 대한 당신의 설명을 정말로 좋아합니다>