回答:
バッシュでは、ちょうど
> filename
しましょう。
これにより、空のファイルfilenameが残ります。
PS
おsudo電話が必要な場合は、こちらの回答truncateに従って使用することを検討してください。
bashシェルcmd.exeやPowerShell などではなく、シェルとして使用している限り、どちらのバージョンでも問題なく動作します。
ユーザーコマンドを使用できます:truncate
truncate -s 0 test.txt
(サイズを指定するには「-s 0」)
sudo echo > file。そのような場合はエラーを返します。
sudo bash -c '> filename'sudoでBashソリューションを使用する方法です。
brew install truncatehomebrewがインストールされたOS X上。
これを行うことができます:
echo -n "" > file.log
を使用>して、(null)入力をecho -nファイルに書き込みます。
を使用>>すると、null入力がファイルに追加されます(事実上、それ以外は何もしませんtouch)。
true(またはその組み込みエイリアス:)のような専用のヌル出力コマンドを使用する方が良いでしょう(受け入れられた答えを参照)。
sudo。
ZSH
>! filename
ZSHは、ioリダイレクト演算子を使用してファイルを破壊することからユーザーを保護します>。使用>!する場合、既存のファイルを強制的に切り捨てることができます。
ZSHにBashのリダイレクト動作を使用させたい場合、ファイルの破壊からの保護がないclobber場合、シェルのオプションを設定する必要があります。
詳細:http : //zsh.sourceforge.net/Doc/Release/Redirection.html
コマンドラインでvimエディター内から実行したい場合は、これを試すことができます:
vim file.txt
を押しEscます。
:1,$d
を押しEnterます。
すべての行が削除されます。
maillogとしても、sudo > /var/log/maillog(許可拒否)、それをクリアしないでしょう
sudo > /var/log/maillog手段として機能しません-sudoを実行し、その出力をファイルに入れます。明らかに、現在のユーザー権限で出力を配置します。より簡単なことはsudo su、ルートシェルを起動してから実行することです> /var/log/maillog。
$ rm file.log; touch file.log
または
$ cat > file.log
が続きcontrol-dます。
または...または...または...
あ。単一のコマンドバージョンを次に示します。
$ dd if=/dev/null of=file.log
echo "" > file.log、catあなたが示すオプションよりも優れています。この状況でcatは、より適切な他のものがあります。両方とも同じシェルリダイレクトを使用して、重い持ち上げを行います。
rmは同じ名前の空のファイルを作成するタスクを実行します。しかし、すべてのユースケースに適しているとは限りません。
ファイルにアクセスするためにスーパーユーザー権限で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
これは、同じディレクトリにあるログファイルに役立ちます。
Bashの> filenameと同じですが、より多くのシェルで動作します(クレジット)。真の組み込み(出力を持たない)からの出力をfilenameにリダイレクトします。