「demo」という単語のみを含むテキストファイルデモ.txtと「sample」という単語のみを含むテキストファイルのサンプル.txtがあるとします。
私が知る限り、これはcat demo.txt >> sample.txt
デモ.txtの内容をSample.txtの内容に追加します。
しかし、リダイレクトシンボルの両側にcatコマンドがあるとどうなりますか?シングルとデュアルリダイレクトで同じ操作を試しました。私は何かをオーバーライドしたくない場合は、単一のリダイレクトではなくダブルリダイレクトを使用したいことを十分に調べました。私はまた、catコマンドがconnectの略であることを知っていました(「cat」コマンドがtxt印刷「関数」として2倍になることに驚きました)。
cat demo.txt >> cat sample.txt
どのように動作するのか理解できません。どのような結果が出なければならないと思いますか?
答え1
リダイレクトを最初に処理し、それをコマンドとそのパラメータから切り離します。単一コマンド内のリダイレクトの配置は任意です。
あなたが示したコマンドは、
cat demo.txt >> cat sample.txt
等しい
cat demo.txt sample.txt >> cat
または必要に応じて
>> cat cat demo.txt sample.txt
このコマンドは、全体的に2つのファイルのdemo.txt
接続を。sample.txt
cat
シェルはcat
追加のために最初に(リダイレクトされたファイル)を開き、まだ存在しない場合は作成し、コマンドの標準出力ストリームとして使用しますcat demo.txt sample.txt
。
関連:
私はリダイレクト演算子と(この場合)ファイルの間にスペースを入れずにリダイレクトを作成する傾向があります。私もリダイレクトを最後に書く傾向があります。
cat demo.txt sample.txt >>cat
一部の人は、コマンドの先頭に入力リダイレクトを書くのが好きです。
<file.in cat >file.out
でも個人的には奇妙に見えるので使わない。