回答:
バッシュでは、ちょうど
> 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 truncate
homebrewがインストールされた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にリダイレクトします。