リダイレクトで入力フィアルと出力ファイルを同じにすると、そのファイルは空になってしまいます。
この操作をしてファイルを内容を失ってしまい うろたえることが 慣れないうちは よくあります。
一般的には リダイレクトで 入力と出力に同じファイルを指定しないようにしたほうが良いです。
例:
cat -n は ファイル内容を行番号付きにすることができます。
$ cat data.txt
A
B
C
$ cat -n data.txt
1 A
2 B
3 C
data.txt を行番号付きに変換するつもりで次のようにすると、data.txt は空になってしまいます。
$ cat -n data.txt > data.txt
$ cat data.txt
$ # 何も表示されない。data.txt はサイズ 0 の空になってしまっている。
"> data.txt" と書いているので、まずは data.txt が新規作成されてしまうからです。
その後に cat -n data.txt を実行しても すでに data.txt は空なので、実行結果は 空になってしまうのです。
既にある別の回答では、sed の -i オプションでファイル内容が消える事を避けることが可能な事が示されていますが、一般的には リダイレクトで 入力と出力に同じファイルを指定しないようにしたほうが良いです。
ファイルに行番号をつけたものに変換をしたいなら、
$ cat -n data.txt > work.txt
上のコマンドの実行でエラーが発生していない事を確認してから、
$ mv work.txt data.txt
のようにすれば、data.txt を行番号付きのものに変換することが可能です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。