이러한 리디렉션“|>”은 단지 오류입니까 아니면 무언가를 의미합니까?


9

실수로 입력했지만 bash는 오류를 인쇄하지 않았지만 (빈 파일을 만들었습니다) 실제로 무언가를 의미한다고 생각했습니다. (예 : 날짜 |> tmp.txt)


1
명령이 형식이 date |> tmp.txt cmd2아닌가? 답변이 변경되기 때문입니다.
Konrad Rudolph

답변:


17

그것은 두 번째 부분이 빈 명령이며 리디렉션 만 포함하는 파이프 라인 인 것 같습니다. date | >file해석하기 쉽도록 작성하십시오 . 빈 명령은 리디렉션을 처리하는 것 외에는 아무것도하지 않고 파일을 만듭니다.

date >| file반면에 noclobber쉘 옵션에 대한 재정의 역할을 하여 일반 >파일이 기존 파일을 덮어 쓰지 못하게 합니다.

$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo       # works

1

bash > file는라는 파일로 리디렉션 되므로 오류가 발생하지 않습니다 file. 귀하의 경우 파일로 리디렉션 할 것이 없으므로 bash는 파일 이름 file이없는 파일 이름 만 만듭니다 .

[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$ 

이상한. Zsh에는 다른 동작이 있습니다. 명령 뒤에 my_file의 출력이 포함 date됩니다.
NI

12
@NajibIdrissi의 in zsh은 리디렉션 만 zsh있고 $NULLCMD명령 이없는 경우 입력 리디렉션 만있는 경우 명령 cat을 기본적으로 실행 하거나 기본적 $READNULLCMD으로 호출기를 실행합니다 .
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.