IT

모든 출력을 Bash의 파일로 리디렉션

itgroup 2023. 7. 12. 23:43
반응형

모든 출력을 Bash의 파일로 리디렉션

리눅스에서 화면의 출력을 파일로 리디렉션하려면 다음 중 하나를 사용할 수 있습니다.>또는tee하지만 출력의 일부가 여전히 화면에 출력되고 파일에 기록되지 않는 이유를 잘 모르겠습니다.

모든 출력을 파일로 리디렉션할 수 있는 방법이 있습니까?

그 부분은 stderr에 쓰여져 있습니다, 사용하세요.2>방향을 변경할 수 있습니다.예:

foo > stdout.txt 2> stderr.txt

또는 동일한 파일을 원하는 경우:

foo > allout.txt 2>&1

참고: (ba)sh에서 작동합니다. 셸에서 올바른 구문을 확인하십시오.

모든 POSIX 운영 체제에는 stdin, stdout 및 stderr의 3가지 스트림이 있습니다. stdin은 stdout 또는 stderr을 수용할 수 있는 입력입니다. stdout은 기본 출력으로 리디렉션됩니다.>,>>또는|stderr은 예외가 명령에 전달되거나 손상될 수 있는 파일에 기록되지 않도록 별도로 처리되는 오류 출력입니다. 일반적으로 이 출력은 stdout이 리디렉션되더라도 특정 종류의 로그로 보내지거나 직접 덤프됩니다.둘 다 같은 위치로 리디렉션하려면 다음을 사용합니다.

$command &> /some/file

편집: 위 솔루션이 이식 가능하지 않다는 점을 지적해 준 Zack에게 감사합니다. 대신 다음을 사용하십시오.

$command > file 2>&1 

오류를 침묵시키려면 다음을 수행합니다.

$command 2> /dev/null

콘솔 AND에서 출력을 파일로 가져오려면 다음과 같이 하십시오.file.txt예를들면.

make 2>&1 | tee file.txt

참고:&(에)2>&1)에서 지정합니다.1파일 이름이 아니라 파일 설명자입니다.

사용 -"require command here" > log_file_name 2>&1

유닉스/리눅스의 리디렉션 연산자에 대한 자세한 설명.

> 연산자는 일반적으로 출력을 파일로 리디렉션하지만 장치로 리디렉션할 수 있습니다.>>를 사용하여 추가할 수도 있습니다.

숫자를 지정하지 않으면 표준 출력 스트림이 가정되지만 오류를 리디렉션할 수도 있습니다.

> file redirects stdout to file
1> file redirects stdout to file
2> file redirects stderr to file
&> file redirects stdout and stderr to file

/dev/dev는 원하는 모든 입력을 가져다가 버리는 null 장치입니다.출력을 억제하는 데 사용할 수 있습니다.

학점은 2003년과 j.a.를 초과합니다.


다음을 넣는 대신:

&>> your_file.log

선 뒤:

crontab -e

사용자:

#!/bin/bash
exec &>> your_file.log
…

BASH 스크립트의 시작 부분.

장점:스크립트 내에 로그 정의가 있습니다.깃 등에 좋습니다.

사용할 수 있습니다.exec나중에 모든 명령의 모든 stdout/stderr 출력을 리디렉션하는 명령입니다.

샘플 스크립트:

exec 2> your_file2 > your_file1
your other commands.....

표준 오류일 수 있습니다.재연결할 수 있습니다.

... > out.txt 2>&1

명령:

foo >> output.txt 2>&1

출력에 추가됩니다.내용을 바꾸지 않고 txt 파일.

사용하다>>추가할 항목:

command >> file

언급URL : https://stackoverflow.com/questions/6674327/redirect-all-output-to-file-in-bash

반응형