ここではリダイレクトは許可されません。許可されていませんか
cat
?しかし、リダイレクトは実行されるコマンドから独立していませんか?$ cat bk > bk cat: bk: input file is output file
次のリダイレクトによってファイルが消去されるのはなぜですか?
$ less bk > bk
awk
less
また、リダイレクトと同様に動作します。awk
実際に問題を発見した部分がありますが、上記の例は言葉ではありません。
通常、リダイレクトを使用する正しい方法は何ですか?
ベストアンサー1
問題は、出力リダイレクトがless
開始する前にファイルを終了することです。
open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1) = 1
close(3) = 0
execve("/usr/bin/less", ["less", "-WNS", "file"], [/* 102 vars */]) = 0
通常の出力リダイレクトはこのファイルを上書きします。O_TRUNC
(参照)man 2 open
ファイルの内容を削除します。