15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

truncateコマンドでファイルを空にする

Last updated at Posted at 2017-06-03

echoコマンドのリダイレクトによる方法は扱いづらい

ファイルを空にする方法は色々あるかと思うが、自分はこれまで次のようにechoコマンドのリダイレクトを使っていた。

$ echo -n > target.txt

しかしこのやり方は空にしたいテキストファイルに対して書き込み権限が無いと、sudoで実行しても弾かれてしまう。

$ sudo echo -n > target.txt
-bash: target.txt: Permission denied

なのでそういう場合は次のようにsh -cを使って、shコマンドの引数として実行するコマンドを渡さなければならなかった。

$ sudo sh -c 'echo -n > target.txt'

しかし、このやり方にはファイル名の補完がうまく効かないという問題があり、場合によっては少々危険になり得る。
...というように、リダイレクトを使う方法は特に権限周りで面倒になってしまうことが多い。

そこでtruncateコマンドですよ

こういう時は、次のようにtruncateコマンドを使う方が楽。

$ truncate target.txt --size 0

--sizeオプションに0を与えてファイルサイズを0、つまり空にしている。
書き込み権限が無いファイルの場合は、単純にsudoで実行すれば良い(sh -cなど使わなくていい)。

$ sudo truncate target.txt --size 0

※ truncateコマンドの参考リンク
https://linuxjm.osdn.jp/html/GNU_coreutils/man1/truncate.1.html

15
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?