它們在 中無效csh
。在bash
and中使用它們的一般規則是什麼zsh
?
答案1
使用 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 可以有多種行為方式。
NULLCMD
如果未設定該參數或CSH_NULLCMD
設定了該選項,則會導致錯誤。這是西施行為並CSH_NULLCMD
在模擬時預設設置西施。如果
SH_NULLCMD
設定了該選項,則內建指令:
將作為具有給定重定向的命令插入。這是模擬時的預設值噓或者克什。否則,如果設定了該參數
NULLCMD
,則其值將用作具有給定重定向的命令。如果 和 都NULLCMD
被READNULLCMD
設置,那麼當重定向是輸入時,將使用後者的值而不是前者的值。的預設NULLCMD
值為“cat
”,預設值為READNULLCMD
“more
”。因此< file
在標準輸出上顯示文件的內容,如果是終端,則進行分頁。
NULLCMD
並READNULLCMD
可能引用 shell 函數。