2013-06-13 3 views
1

gnu/Linux에서 모든 명령 출력을 하나의 특정 파일에 기록하려고합니다. , 내가bash 스크립팅에서 하나의 단일 파일에 모든 명령 출력을 기록하는 방법

echo "Hi this is a dude"

그것은 모든 명령에 리디렉션을 사용하지 않고 이전에 지정한 파일 이름에 인쇄해야 입력하고 터미널에서 말 .

+0

이 질문과 대답을 확인하십시오 : http : // stackoverflow.com/questions/5171350/output-bash-script-into-file-without? rq = 1 – Kyle

답변

3

명령 :

$ bash &> outfile 

는 예를 들어

포트 해당 파일에 대한 표준 출력과 표준 에러 모두 (더 이상 메시지가 터미널에 표시 볼 수 없습니다 의미)한다 쉘에서 표준 출력에 사용할 파일 설명자를 상속합니다. 일반적인 대화 형 쉘에서 표준 출력은 터미널입니다. 경우 output.txt라는 파일에 표준 출력을 쓸 것, 그 명령에 따라

exec > output.txt 

쉘 자체를 달리 리디렉션하지 않는 한이 급부상 어떤 명령도 마찬가지로 할 것입니다 : 당신은 exec 명령을 사용하여 해당을 변경할 수 있습니다. 당신은 항상 당신이 프롬프트에서 입력 쉘 프롬프트 텍스트가 쉘은 표준 오류에 그 모두를 기록하기 때문에 (화면에 계속 표시

exec > /dev/tty 

주를 사용하여 터미널에 출력을하지 "복원"수 표준 출력).

+3

차갑다. 개선 사항 :'exec>> (tee -a output.txt)'출력을 파일과 터미널로 보낼 수 있습니다. –

4
$ script x1 
Script started, file is x1 
$ echo "Hi this is a dude" 
Hi this is a dude 
$ echo "done" 
done 
$ exit 
exit 
Script done, file is x1 

그런 다음, 파일 X1의 내용은 다음과 같습니다

Script started on Thu Jun 13 14:51:29 2013 
$ echo "Hi this is a dude" 
Hi this is a dude 
$ echo "done" 
done 
$ exit 
exit 

Script done on Thu Jun 13 14:51:52 2013 

쉽게 유닉스 프롬프트가있다 특히, 기본 쉘 스크립트 (grep -v를 사용하여/끝 라인을 자신의 명령을 편집하고 시작할 수 있습니다 특유의 문자열 패턴)

0
리디렉션 >으로 떠들썩한 파티에서 달성 될 수

출력 : See this link for more info on bash redirection.

요 u는 예를 들어, 파일로 이동합니다 이식 출력과 모든 출력하는 프로그램을 실행할 수 있습니다

$ ls > out 
$ cat out 
Desktop 
Documents 
Downloads 
eclipse 
Firefox_wallpaper.png 
... 

을 그래서, 당신은 이식 출력 새로운 쉘 세션을 열려면, 단지! :

그렇게
$ bash > outfile 

은 모든 stdout을 해당 파일로 이식하는 새로운 bash 세션을 시작합니다. 시작

$ bash > outfile 
$ echo "hello" 
$ echo "this is an outfile" 
$ cd asdsd 
bash: cd: asdsd: No such file or directory 
$ exit 
exit 
$ cat outfile 
hello 
this is an outfile 
$ 

$ bash &> outfile 
echo "hi" 
echo "this saves everythingggg" 
cd asdfasdfasdf 
exit 
$ cat outfile 
hi 
this saves everythingggg 
bash: line 3: cd: asdfasdfasdf: No such file or directory 
$ 
0
{ command1 ; command2 ; command3 ; } > outfile.txt 
0

출력을보고 파일에 쓰려면 (나중에 분석하기 위해) tee 명령을 사용할 수 있습니다.

$ echo "hi this is a dude" | tee hello 
hi this is a dude 
$ ls 
hello 
$ cat hello 
hi this is a dude 

tee는 유용한 명령입니다. 티에 들어가는 모든 것을 저장하고 화면에 표시 할 수 있기 때문입니다. 특히 스크립트 출력 로깅에 유용합니다.

관련 문제