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 | >filecó 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 >| filemặt khác sẽ hoạt động như một ghi đè cho noclobbertù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 > filecó 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 filekhô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_filechứa đầu ra của date.
zsh, khi chỉ có các chuyển hướng và không có lệnh, sẽ zshchạy $NULLCMDlệnh ( cattheo 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.