Tôi đã gõ nhầm, nhưng bash không in bất kỳ lỗi nào (nhưng đã tạo một tệp trống) vì vậy tôi nghĩ có lẽ nó thực sự có ý nghĩa gì đó? (ví dụ: ngày |> tmp.txt)
Tôi đã gõ nhầm, nhưng bash không in bất kỳ lỗi nào (nhưng đã tạo một tệp trống) vì vậy tôi nghĩ có lẽ nó thực sự có ý nghĩa gì đó? (ví dụ: ngày |> tmp.txt)
Câu trả lời:
Đó dường như chỉ là một đường ống dẫn trong đó phần thứ hai là một lệnh trống, chỉ chứa chuyển hướng. Viết nó như date | >file
có thể làm cho nó dễ dàng để giải thích. Lệnh rỗng không làm gì ngoài việc xử lý chuyển hướng, tạo tệp.
date >| file
mặt khác sẽ hoạt động như một ghi đè cho noclobber
tùy chọn shell, điều này ngăn không cho >
ghi đè lên các tệp hiện có.
$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo # works
Có, nó sẽ không ném lỗi vì đối với bash > file
có nghĩa là chuyển hướng đến một tệp có tên file
. Như trong trường hợp của bạn không có gì để chuyển hướng đến tệp, bash sẽ chỉ tạo một tên tệp file
không có gì trong đó.
[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$
my_file
chứa đầu ra của date
.
zsh
, khi chỉ có các chuyển hướng và không có lệnh, sẽ zsh
chạy $NULLCMD
lệnh ( cat
theo mặc định) hoặc $READNULLCMD
(một máy nhắn tin theo mặc định) nếu chỉ có các chuyển hướng đầu vào .
date |> tmp.txt cmd2
? Bởi vì điều đó thay đổi câu trả lời.