And*_*rew 376 linux command-line
我有一个日志文件,里面有一堆我不再需要的东西。我想清除内容。
我知道如何将内容打印到屏幕上:
cat file.log
Run Code Online (Sandbox Code Playgroud)
我知道如何逐行编辑文件:
nano file.log
Run Code Online (Sandbox Code Playgroud)
但我不想一次删除每一行。有没有办法在不破坏文件的情况下在一个命令中完成它?
gee*_*eek 602
在 bash 中,只需
> filename
Run Code Online (Sandbox Code Playgroud)
会做。这将为您留下一个空文件filename。
PS:如果你需要sudo打电话,请考虑使用truncate如在这里找到答案。
小智 183
您可以使用用户命令:truncate
truncate -s 0 test.txt
Run Code Online (Sandbox Code Playgroud)
(“-s 0”指定大小)
http://www.commandlinefu.com/commands/view/12/empty-a-file
小智 43
你可以这样做:
echo -n "" > file.log
Run Code Online (Sandbox Code Playgroud)
使用>从写(空)输入echo -n到文件中。
Using>>会将空输入附加到文件中(实际上除了touching 它什么都不做)。
Stu*_*ley 40
: > file.log
Run Code Online (Sandbox Code Playgroud)
与> filenameBash相同,但适用于更多 shell (信用)。将输出从true内置(没有输出)重定向到filename.
小智 14
ZSH
>! filename
Run Code Online (Sandbox Code Playgroud)
ZSH 将使用 io 重定向操作符保护用户免受破坏文件的影响>。如果使用>!,则可以强制截断现有文件。
如果您希望 ZSH 使用 Bash 的重定向行为,并且没有防止文件破坏的保护,那么您需要clobber为您的 shell设置该选项。
更多信息:http: //zsh.sourceforge.net/Doc/Release/Redirection.html
小智 10
如果您想在命令行中的 vim 编辑器中执行此操作,可以尝试以下操作:
vim file.txt
Run Code Online (Sandbox Code Playgroud)
按Esc。
:1,$d
Run Code Online (Sandbox Code Playgroud)
按Enter。
你会发现所有的行都被删除了。
$ rm file.log; touch file.log
Run Code Online (Sandbox Code Playgroud)
或者
$ cat > file.log
Run Code Online (Sandbox Code Playgroud)
其次是control-d。
或者……或者……或者……
啊。这是单个命令版本:
$ dd if=/dev/null of=file.log
Run Code Online (Sandbox Code Playgroud)
小智 6
下面的命令也应该工作:
cat /dev/null > file.log
Run Code Online (Sandbox Code Playgroud)
如果您需要 sudo 超级用户权限才能访问该文件,那么接受的答案将不起作用。使用这个确实有效:
truncate -s0 file
Run Code Online (Sandbox Code Playgroud)
或明确使用 sudo:
sudo truncate -s0 file
Run Code Online (Sandbox Code Playgroud)
更多信息请点击这里http://www.commandlinefu.com/commands/view/12/empty-a-file
| 归档时间: |
|
| 查看次数: |
491054 次 |
| 最近记录: |