在 bash 和 zsh 中單獨使用 `> foo.txt` 和 `< foo.txt` 的一般規則是什麼?

在 bash 和 zsh 中單獨使用 `> foo.txt` 和 `< foo.txt` 的一般規則是什麼?

它們在 中無效csh。在bashand中使用它們的一般規則是什麼zsh

答案1

使用 bash,無需命令的重定向只需執行重定向,然後關閉它們:

  • < foo.txt本身作為命令行將打開文件foo.txt進行讀取,然後將其關閉。
  • > foo.txt將開啟檔案foo.txt進行寫入,必要時建立檔案並截斷它,然後關閉它。清空文件的快速方法。

使用 zsh,無需命令運行即可重定向NULLCMDREADNULLCMD.

  • 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_NULLCMD 在模擬時預設設置西施

如果SH_NULLCMD設定了該選項,則內建指令:將作為具有給定重定向的命令插入。這是模擬時的預設值或者克什

否則,如果設定了該參數NULLCMD,則其值將用作具有給定重定向的命令。如果 和 都NULLCMDREADNULLCMD設置,那麼當重定向是輸入時,將使用後者的值而不是前者的值。的預設NULLCMD值為“ cat”,預設值為READNULLCMDmore”。因此

< file

在標準輸出上顯示文件的內容,如果是終端,則進行分頁。NULLCMDREADNULLCMD可能引用 shell 函數。

相關內容