&&에 의해 연결된 명령의 출력 / 리디렉션 캡처


11

&& :와 함께 연결하는 일련의 명령 a, b, c가 a && b && c있습니다.

stdout과 stderr에 대한 모든 명령의 출력을 잡고 싶습니다. a && b && c 2>&1 > capture_file c 명령의 출력 만 캡처합니다.

답변:


11
{ a && b && c; } >capture_file 2>&1

리디렉션 순서를 참고하십시오. 먼저 stdout을 리디렉션해야합니다.


왜 stdout이 먼저입니까?
TLOlczyk

@TLOlczyk 2>&1는 stdout (1)의 대상을 stderr (2)로 복제하는 것을 의미하므로 미리 stdout 리디렉션을 설정하지 않으면 쓸모가 없습니다.
yaegashi

2
@TLOlczyk 그것은하지 않습니다 첫 번째 표준 출력으로 - 먼저 표준 에러 할 수 : 2>capture_file >&2(하지만하지 않는, 즉 관용적 아니기 때문에). 중요한 것은 스트림을 다른 스트림으로 복제하기 전에 그 중 하나를 파일로 리디렉션하는 것입니다.
Toby Speight

1

명령 그룹화 {}를 사용하는 것 외에도 서브 쉘에서 명령을 실행하고 한 번에 출력 (및 / 또는 오류)을 캡처 할 수 있습니다.

( a && b && c ) >file.txt 2>&1

예 :

$ ( echo foo && echo bar && echo baz && echos foo ) >check 2>&1

$ cat check
foo
bar
baz
No command 'echos' found, did you mean:
 Command 'echo' from package 'coreutils' (main)
echos: command not found
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.