回答:
cat
そのように複数の標準出力を使用するように指示することはできません。最後のリダイレクトが優先されます。
cat file1.txt >> file2.txt >> file1.txt
と同等です:
>> file2.txt ; cat file1.txt >> file1.txt
宛先であるソースファイルが無制限にfile1.txt
大きくなり、一度に読み取れないほど大きい場合は、明らかにファイルシステムがすぐにいっぱいになります。
最新のcat
実装では、再帰性を検出して中止する必要があります。
Solaris cat:
cat: input/output files 'file1.txt' identical
Gnu猫:
cat: file1.txt: input file is output file
とにかく次のようなものでだまされる可能性があります。
cat < file1.txt | cat | cat >> file2.txt >> file1.txt
猫のあまり役に立たない素敵な...
これをBashシェルで再現できませんでした。
# non-empty file1
$ echo 1 > file1.txt
$ cat file1.txt >> file2.txt >> file1.txt
cat: file1.txt: input file is output file
長さ0で1つのファイルが作成されますが、上記のメッセージが表示されます。
$ ls -l
total 4
-rw-rw-r-- 1 saml saml 2 Sep 10 19:35 file1.txt
-rw-rw-r-- 1 saml saml 0 Sep 10 19:35 file2.txt
@jlliagreの回答に基づいて、2つのファイルを取得する理由がわかりません。cat
実装に依存する場合があります。
@jlliagreは答えを更新して、彼が同等であると述べるこのコードを表示しました。
>> file2.txt ; cat file1.txt >> file1.txt
だから今、私は私が空になっている理由を知っていますfile2.txt
。この表記は合法です:
>> file2.txt
そして、空のファイルを作成します。
file1.txt
空ではない状態からやり直してください。
cat
動作をよりよく理解し始めています。