Bash

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

  • March 17, 2020

它們在 中無效cshbash在and中使用它們的一般規則是什麼zsh

使用 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行為,在模擬cshCSH_NULLCMD 時預設設置。

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

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

< file

在標準輸出上顯示文件的內容,如果是終端則顯示分頁。NULLCMD並且READNULLCMD可以參考shell函式。

引用自:https://unix.stackexchange.com/questions/573154