이것으로부터 얻으세요나 나, 그러나 내가 댓글을 달았을 때 아무도 대답하지 않았습니다 (또한 구글링했지만 아무것도 찾지 못했습니다)
답변1
rm /tmp/output 2>/dev/null || :
grep nobody /etc/passwd | sed -e 's/:.*//' >>/tmp/output
grep nobody /etc/passwd |>>/tmp/output sed -e 's/:.*//'
cat /tmp/output # should be two "nobody" lines
두 grep …|sed …
파이프는 동일하며 이는 |>>
*nix 쉘에 특별한 것이 아니며 단지 |
(파이프) 및 >>
(파일 추가) 연산자가 이들을 연결한다는 것을 나타냅니다. 리디렉션은 명령의 어느 위치에나 배치할 수 있습니다.
답변2
앞서 언급했듯이 이들은 동일합니다.
echo foo |>> file rev
echo foo | rev >> file
그러나 >
리디렉션은 약간 다릅니다. set -o noclobber
실수로 파일이 잘리는 것을 방지하기 위해 사용하는 경우
$ rm file
$ echo foo |>> file rev
$ cat file
oof
$ echo bar |> file rev
bash: file: cannot overwrite existing file
$ cat file
oof
이 경우 >|
의도적으로 파일을 덮어쓰면 다음과 같은 매력적인 명령이 실행될 수 있습니다.
$ echo bar |>| file rev
$ cat file
rab