2017-04-09 8 views
0

私はこのことを理解の方法は、コマンド猫のファイルと猫の違いは何<ファイル

cat file 

は、ファイルの内容を表示し、

cat < file 

のようにファイルの内容を取るということです入力。私はこれを試して、2つのファイルを作成しました。 1つはfile1.txtと呼ばれ、もう1つはfile2.txtと呼ばれます。 FILE1.TXTでは、私は

cat < file1.txt 

、私はFILE2.TXTの内容を期待していますが、表示されるコマンドを入力して、ようFILE2.TXT書きました。ただし、 cat file1.txt and cat < file1.txt の両方がfile1.txtの内容を表示しています。私は<の定義を誤解していると思います。

答えて

2

1つ以上のファイル名を渡すと、catにこれらのファイルの内容が表示されます。それ以外の場合は、stdinに渡されたものが何でも表示されます。

cat file 

catは、一つのファイル名を受け取り、ファイルを開き、

cat < file 

その内容を出力し、シェルは名前のファイルに標準入力をリダイレクトします。それは、ファイルを開き、標準入力にcatにその内容を送り込みます。 catには引数はありません。引き数を指定しないと、標準入力にあるファイル—が出力されます。

結果:cat filecat < fileは同じことをします。

1

catを引数ファイルで実行すると、これらのファイルのそれぞれを開き、標準出力に読み込みます。だから、cat file1.txtcatfile1.txtを開き、標準出力にその内容を印刷:catは、引数なしのファイルを実行すると

$ cat file1.txt 
file2.txt 

、それは(あなたが猫に直接入力されたかのように例えば、)標準入力からの読み取りおよび書き込みます標準出力に出力します。しかしシェル(例えば、bashの)ファイルfile1.txtを開き、標準入力経由catにリダイレクトするための< file1.txt伝えます:

$ cat < file1.txt 
file2.txt 

あなたが見ることができるように効果は同じである、その猫が読み込まれます与えられたファイル。違いは誰がファイルを開くかということです。最初のケースでは、catはファイル自体を開くように指示され、2番目のケースではシェルがそれを開き、catは標準入力から入ってくるデータストリームがあることを除いて何も知らない。印刷します。

最後に、あなたがcatから引数としてfile1.txtの内容を使用したい場合、あなたは構文

$ cat $(< file1.txt) # same as: cat file2.txt 
[...contents of file2.txt] 
+0

を使用する必要が '猫

関連する問題