誤って Bash で次のスクリプトを実行しました。
$ ls -l | > ../test.txt
そして、空のtest.txtを取得しました。
どうしたの?
null コマンド、つまり 1 つ以上のリダイレクトのみを含む単純なコマンドを実行しました。これはリダイレクトを実行しますが、他には何もしません。
>file
file
ゼロバイトに切り詰める方法です。ls
null コマンドは標準入力を無視するため、出力が表示されません。POSIXはこれを未定義のままにしていると思います(実際、zsh
入力すると stdin が読み取られます>file
)。:
(コロン)という名前の明示的なヌル コマンドがあります。null コマンドは、次のように、リダイレクトや変数の代入などの副作用のために必要な場合に便利です。
: ${FOO:="default value"} # Assign to FOO unless it has a value already.
> ../test.txt
入力データにもかかわらずファイルを空にするため、サイズが 0 のファイルが作成されます。