これらは では無効です。およびcsh
でこれらを使用する一般的な規則は何ですか?bash
zsh
答え1
bash では、コマンドなしのリダイレクトはリダイレクトを実行して閉じるだけです。
< foo.txt
単独でコマンドラインとして使用すると、ファイルがfoo.txt
読み取り用に開かれ、その後閉じられます。> foo.txt
ファイルをfoo.txt
書き込み用に開き、必要に応じて作成して切り捨ててから閉じます。ファイルを空にする簡単な方法です。
zsh では、コマンドを実行しないリダイレクトはNULLCMD
または になりますREADNULLCMD
。
READNULLCMD
(またはNULLCMD
、`READNULLCMD が設定されていない場合) stdin のリダイレクトの場合:% echo foo > foo.txt % READNULLCMD=nl % < foo.txt 1 foo
NULLCMD
stdout のリダイレクトの場合:% 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、コマンドなしのリダイレクト詳細については:
単純なコマンドが 1 つ以上のリダイレクト演算子と 0 個以上のパラメータ割り当てで構成され、コマンド名がない場合、zsh はいくつかの方法で動作します。
パラメータ
NULLCMD
が設定されていないかオプションがCSH_NULLCMD
設定されている場合はエラーが発生します。これはシェル動作はCSH_NULLCMD
エミュレート時にデフォルトで設定されますシェル。オプション
SH_NULLCMD
が設定されている場合、組み込みコマンドは:
指定されたリダイレクトとともにコマンドとして挿入されます。これはエミュレート時のデフォルトです。シュまたはksh。それ以外の場合、パラメータ
NULLCMD
が設定されていれば、その値は指定されたリダイレクトのコマンドとして使用されます。 と の両方が設定されている場合はNULLCMD
、READNULLCMD
リダイレクトが入力のときに、前者の値ではなく後者の値が使用されます。 のデフォルトはNULLCMD
'cat
' で、 のデフォルトREADNULLCMD
は ' ' ですmore
。したがって、< file
ファイルの内容を標準出力に表示します。端末の場合はページングも行います。
NULLCMD
また、READNULLCMD
シェル関数を参照することもできます。