Bash在 bash 和 zsh 中單獨使用
在 bash 和 zsh 中單獨使用 > foo.txt
和 < foo.txt
的一般規則是什麼?
它們在 中無效
csh
。bash
在and中使用它們的一般規則是什麼zsh
?
使用 bash,無需命令的重定向只需執行重定向,然後關閉它們:
< foo.txt
本身作為命令行將打開文件foo.txt
進行讀取,然後將其關閉。> foo.txt
將打開文件foo.txt
進行寫入,必要時創建它並截斷它,然後關閉它。快速清空文件的方法。使用 zsh,無需命令即可執行重定向
NULLCMD
或READNULLCMD
.
READNULLCMD
(或者NULLCMD
,如果 `READNULLCMD 未設置)用於標準輸入的重定向:% echo foo > foo.txt % READNULLCMD=nl % < foo.txt 1 foo
NULLCMD
對於標準輸出的重定向:% NULLCMD='ls' % > foo.txt # runs $NULLCMD % < foo.txt # runs $READNULLCMD, showing the output of `NULLCMD` run previously 1 Applications 2 Desktop 3 Documents 4 Downloads
有關詳細資訊,請參閱Zsh 7.3,無命令重定向:
當一個簡單的命令由一個或多個重定向運算符和零個或多個參數分配組成,但沒有命令名稱時,zsh 可以以多種方式執行。
如果
NULLCMD
未設置參數或設置了選項CSH_NULLCMD
,則會導致錯誤。這是csh行為,在模擬cshCSH_NULLCMD
時預設設置。如果設置了該選項
SH_NULLCMD
,則內置:
命令將作為具有給定重定向的命令插入。這是模擬sh或ksh時的預設值。否則,如果
NULLCMD
設置了參數,則其值將用作具有給定重定向的命令。如果同時設置NULLCMD
和READNULLCMD
,則當重定向是輸入時,將使用後者的值而不是前者的值。預設為NULLCMD
“cat
”,預設為READNULLCMD
“more
”。因此< file
在標準輸出上顯示文件的內容,如果是終端則顯示分頁。
NULLCMD
並且READNULLCMD
可以參考shell函式。