답변:
다른 사람들이 이미 >
(덮어 쓰기)와 >>
(추가) 리디렉션 연산자 의 차이점을 지적 했으므로 몇 가지 솔루션을 제공 할 것입니다.
의 명령 그룹화 {}
기능을 사용하여 bash
모든 명령의 출력을 단일 파일로 보낼 수 있습니다 .
{ sha1sum foo.txt ;sha512sum foo.txt ;md5sum foo.txt ;} >checksum.txt
또는 서브 쉘에서 명령을 실행할 수 있습니다 ()
.
( sha1sum foo.txt ;sha512sum foo.txt ;md5sum foo.txt ) >checksum.txt
()
.
>
리디렉터 명령의 출력 (쓰기 stdout
,하지를 stderr
- 사용2>
하는 경우) 뒤에 지정된 파일에. 이미 존재하면 파일을 덮어 씁니다.
이 동작은 첫 번째 명령에 유용합니다. 기존 파일이 있으면 삭제되고 새 파일로 대체되어야합니다.
그러나 이전 출력을 바꾸지 않고 모든 추가 출력을 추가해야하므로 append-redirector를 사용해야합니다 >>
. 파일이 아직 없으면 파일을 작성하지만 파일이 이미 존재하는 경우 경로 재 지정된 출력을 파일에 추가 합니다.
파이프 |
를 사용하여 여러 명령을 한 줄에 쓰지 마십시오 . 첫 번째 명령의 출력 ( stdout
)이 두 번째 명령의 입력 ( stdin
)으로 리디렉션됩니다 .
세미콜론 ( ;
)을 사용하면 bash가 마치 스크립트 파일 인 것처럼 한 명령을 실행하도록 지시 할 수 있습니다. 명령이 실패하면 (반환 코드가 0이 아님) 나머지 명령은 여전히 실행됩니다.
또는 논리 연산자 AND ( &&
) 또는 OR ( ||
)를 선택할 수 있습니다. 두 명령을 연결
하는 &&
데 사용 하는 경우 두 번째 명령 은 첫 번째 명령이 성공한 경우 에만 실행 됩니다 (리턴 코드는 0 임). 실패하면 다음 명령이 실행되지 않습니다.
(가) ||
하지만 에만 두 번째 명령을 실행하는 첫 번째 실패한 경우 (리턴 코드가 0이 아닌)!
따라서 귀하의 경우 세미콜론을 사용하는 것이 좋습니다.
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
또는()
? 고맙습니다.