猫リダイレクト

猫リダイレクト

現在、ディレクトリに名前が付けられたファイルがあり、abcここにいくつかのテキストが含まれているとします。コマンドを実行するとき:

cat abc > abc

ファイルの内容abcが消えるのはなぜですか?
コマンドがテキストを削除し、ファイルが空のファイルになるのはなぜですか?

ベストアンサー1

仕事が行われる順序のためです。

これを行うとき:

cat abc > abc

>出力リダイレクト演算子です。シェルがそれを検出すると、O_TRUNCieフラグを使用して切り捨てモードでファイルを開くため、ファイルの内容はすべて消えます。このリダイレクトは、コマンドが実行される前にシェルによって最初に実行されます。open(2)open("abc", O_TRUNC)cat

したがって、コマンドが cat abc実行されると、ファイルがabc切り捨てられ、catファイルが空であるように見えます。

おすすめ記事