Answers:
bash
是Shell而不是eg cmd.exe
或PowerShell,它们都不是POSIXy足以应付此类问题。
您可以使用用户命令:truncate
truncate -s 0 test.txt
(“ -s 0”指定大小)
sudo echo > file
在这种情况下只会给出错误。
sudo bash -c '> filename'
是您如何在sudo中使用Bash解决方案。
brew install truncate
在装有自制软件的OS X上。
您可以这样做:
echo -n "" > file.log
使用>
从写(空)输入echo -n
到文件中。
使用>>
会将空输入追加到文件中(实际上只是touch
对其进行任何操作)。
true
(或它的内置别名:
),尽管最终您根本不需要命令(请参见接受的答案)。
sudo
。
ZSH
>! filename
ZSH将使用io重定向运算符保护用户避免破坏文件>
。如果使用>!
,则可以强制截断现有文件。
如果您希望ZSH使用Bash的重定向行为,如果没有防止文件破坏的保护,那么您需要clobber
为Shell 设置该选项。
更多信息:http: //zsh.sourceforge.net/Doc/Release/Redirection.html
$ 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
一次一行?
尝试使用vi(m),它可以执行任何操作。在这种情况下,导航到一行,按d(代表删除),然后再按d(代表一行)。
gg
移至顶部,因此整个序列可以为ggdG
。