コマンドラインからファイルの内容をクリアする方法を教えてください
不要になったログファイルがたくさん入っています。内容をクリアしたいのですが、
cat file.log
ファイルを一行ずつ編集する方法は知っていますが、一行ずつ削除したくありません。それを行うためにファイルを破棄することなく、1つのコマンドでそれを行う方法はありますか?
不要になったログファイルがたくさん入っています。内容をクリアしたいのですが、
cat file.log
ファイルを一行ずつ編集する方法は知っていますが、一行ずつ削除したくありません。それを行うためにファイルを破棄することなく、1つのコマンドでそれを行う方法はありますか?
ユーザコマンド: truncate
truncate -s 0 test.txt
(サイズを指定するには"-s 0 “を使用) http://www.commandlinefu.com/commands/view/12/empty-a-file
echo -n "" > file.log
>
を使って、echo -n
からの(ヌル)入力をファイルに書き込む。
>>
を使って、ヌル入力をファイルに追加する(効果的には何もしないでtouch
するだけ)。
: > file.log
Bash の > filename
と同じだが、より多くのシェルで動作する (クレジット) . (出力を持たない) true
ビルトインからの出力を filename
にリダイレクトする。
ZSH
>! filename
ZSH は、io リダイレクト演算子 >
を使ってファイルのクロバリングからユーザを保護します。
もし ZSH に Bash のリダイレクト動作を使用させたい場合は、シェルに >!
オプションを設定する必要があります。 http://zsh.sourceforge.net/Doc/Release/Redirection.html
以下のコマンドも動作するはずです:
cat /dev/null > file.log
ここでは単一のコマンドバージョンです:
$ rm file.log; touch file.log
あなたがファイルにアクセスするためにスーパーユーザー権限にsudoする必要がある場合は、受け入れられた答えは動作しません。これを使用して動作します:
truncate -s0 file
または明示的にsudoと:
sudo truncate -s0 file
詳細はここで http://www.commandlinefu.com/commands/view/12/empty-a-file
また、複数のファイルがある場合は、
for file in /path/to/file/*; do > $file; done
同じディレクトリにあるログファイルの場合に便利です。