Linuxとコマンドラインの基礎
$ echo a > f.txt
$ echo b > f.txt
$ echo c >> f.txt
$ cat f.txt上のコマンドを順に実行したとき、最後の cat で表示される内容として、正しいものはどれか。
- Ac の1行だけ
- Bb と c の2行
- Ca、b、c の3行
答えと解説を見る
正解:B. b と c の2行
「>」は出力をファイルに書き込むリダイレクトで、ファイルがすでにあれば中身を空にしてから書き込みます(上書き)。「>>」はファイルの末尾に追加します。1行目で a が書かれ、2行目の > で中身が b だけになり、3行目の >> で c が後ろに足されるので、f.txt は b と c の2行になります。大事なファイルを > で消してしまわないよう、bash では set -o noclobber で上書きを禁止することもできます。
- A. 「>>」は上書きではなく追加なので、2行目で書いた b は残ります。
- B. 正しい。> で b だけになり、>> で c が追加されます。
- C. 2行目の「>」はファイルを空にしてから書き込むので、1行目の a は残りません。