2016-09-10 20 views
0

特定のディレクトリで、 "fileName"という名前のファイルを作成し、内容を追加しました。 cat fileNameと入力すると、その内容が端末に表示されます。今私は、次のコマンドを使用:ファイルのcat出力を同じファイルにリダイレクト

cat fileName>fileName

エラーが示されませんでした。今、私は(私はそれをチェックするとき)

cat fileName

何もターミナルに示されなかったと、ファイルが空で、使用してファイルの内容を確認しようとします。これの理由は何ですか?

答えて

1

>つまり、同じファイルへのリダイレクトは、より優先度の高いcatコマンドが呼び出される前にファイルを作成/切り詰めます。あなたは、実際のファイルへの中間体から、中間ファイルとを使用して同じことを避けることができます。また、のようなティーを使用することができますリダイレクトが開き、シェルによって処理されるため、

cat fileName | tee fileName 
+0

私はdownvote @ downvoterの理由を知っているかもしれませんか?あなたが答えをdownvoteするときにそれは他の人にも役立つだろうとコメントしてください、私のofcourse! – SMA

0

SMAの答えに明確にするために、ファイルが切り捨てられますコマンドを呼び出す前に書き込むためのファイルcat file > fileを実行すると、シェルはファイルを切り捨てて書き込み用に開き、stdoutをファイルに設定してから["cat", "file"]を実行します。だからあなたは仕事のための他のコマンドを使用しなければならないでしょうtee

+0

私はdownvoteの理由を知っているかもしれませんか?あなたが答えをdownvoteするときにコメントしてください – nithin

関連する問題