cat > でファイルが連結される順番

# cat hoge1 hoge2 > fuga

とかするとファイルが連結されるはずだけど、連結される時にどっちが先頭にくるか頭悪くて覚えられないのでメモっておく。

下準備 サンプル用ファイルを作る

それぞれのファイルが判別できるようなファイルを適当に作る

# echo "hoge-1" > hoge1
# echo "hoge-2" > hoge2

順番を変えて連結してみる

順番を入れ替えてそれぞれ違う名前で連結する

# cat hoge1 hoge2 > fuga-order-ascend
# cat hoge2 hoge1 > fuga-order-descend

中身を確認する

# tail fuga-order-ascend
hoge-1
hoge-2
# tail fuga-order-descend
hoge-2
hoge-1

期待どうりに並んでくれたのを確認できた。

結論

だいたい、書いた順に並ぶので心配性の人は自分で確かめるといいよ。

おまけ。追記と上書き

記号の大なり小なりの大なり(>)はgreater than(グレーターザン)と読むらしい。 HTMLの実態参照では頭文字のgtをとって&gt;と書く。 反対に小なり(<)はless than(レスザン)と読む。 HTMLの実態参照では頭文字のltをとって&lt;と書く。

決してレフト君とライト君ではない。

このグレーターザンが一つの場合(>)はファイルを上書きする。 二つの場合(>>)はファイルに追記する

実際の状況はこんな感じ。

新たにhoge3を作って既存のファイルに対して実行してみる

# echo "hoge-3" > hoge3
# cat hoge3 > fuga-order-ascend
# tail fuga-order-ascend
hoge-3

中身がhoge3だけになった。

# cat hoge3 >> fuga-order-descend
# tail fuga-order-descend
hoge-2
hoge-1
hoge-3

中身にhoge3が追加された。

UNIXシェルスクリプトコマンドブック 第2版
山下 哲典
ソフトバンククリエイティブ
売り上げランキング: 129299