CLIにcat deco.txt >> cat example.txtプロンプトを入力すると、実際に何が起こりますか?

CLIにcat deco.txt >> cat example.txtプロンプトを入力すると、実際に何が起こりますか?

「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.txtcat

シェルはcat追加のために最初に(リダイレクトされたファイル)を開き、まだ存在しない場合は作成し、コマンドの標準出力ストリームとして使用しますcat demo.txt sample.txt

関連:


私はリダイレクト演算子と(この場合)ファイルの間にスペースを入れずにリダイレクトを作成する傾向があります。私もリダイレクトを最後に書く傾向があります。

cat demo.txt sample.txt >>cat

一部の人は、コマンドの先頭に入力リダイレクトを書くのが好きです。

<file.in cat >file.out

でも個人的には奇妙に見えるので使わない。

おすすめ記事