![](/style/images/good.png)
![](/style/images/bad.png)
Linux 清空文件内容
source link: https://www.myfreax.com/linux-clear-file-content/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Linux 清空文件内容
清空文件比删除文件后重新创建文件并设置正确的权限和所有权。更快,更容易
![Linux 清空文件内容](https://www.myfreax.com/content/images/size/w816/2022/11/linux-clear-file-content.webp)
Linux 清空文件内容
在某些情况下,您可能希望将现有文件截断,即减少或者缩小文件的大小。清空文件比删除文件后重新创建文件并设置正确的权限和所有权。更快,更容易。
还有一点就是,如果要删除的文件已经被其它进程打开,如果你此时删除文件可能会导致使用该文件的进程没有响应。但你可以尝试清空文件内容。
本教程说明如何在Linux 清空文件内容。
truncate 命令清空文件
随着时间的流逝,您的磁盘驱动器可能会堆满很多大型日志文件,这些日志文件会占用大量磁盘空间。
此时,你可以运行命令sudo truncate -s 0 /var/log/**/*.log
清空清空/var/log
目录以.log结尾的文件。
另一个更好的选择是使用logrotate
工具压缩和删除日志文件。
sudo truncate -s 0 /var/log/**/*.log
Shell 重定向清空文件
清空文件最简单,最常用的方法是使用Shell重定向操作符>
。使用重定向清空文件的命令是: > filename
。
:
返回零字节的空字符串,也可以理解为不产生任何输出。重定向操作符>
将命令:
的输出重定向到指定文件。
filename
是您要清空的文件。如果文件存在,它将被清空为零的大小,即空文件,否则创建零字节的文件。
现在大多数Shell程序,例如Bash或Zsh,都可以在重定向符号之前省略命令,因此你可以将: > filename
写成> filename
。
: > filename
> filename
除了:
命令,你还可以使用另一个不产生任何输出的命令cat /dev/null
,/dev/null
是空设备文件。
然后使用重定向操作符>
重定向到你要清空的文件,例如命令cat /dev/null > filename
会清空文件filename
。
此外还可以使用echo
命令和-n
选项。-n
选项表示不输出尾随的换行符。例如命令echo -n > filename
cat /dev/null > filename
echo -n > filename
Sudo与Shell 重定向清空文件
要能够清空文件,您需要对文件具有写权限。通常您可能会因为权限问题而使用 sudo
命令。
但是使用sudo提升权限不适用于重定向操作符>
,例如命令sudo : > /var/log/syslog
。
你的终端将会打印错误消息bash: /var/log/syslog: Permission denied。
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
遇到此问题时可以有几种解决方案。第一种是使用sudo和sh
命令启动子shell运行命令。
另一种解决方案是将命令的标准输出通过管道传递给tee
命令,然后使用sudo
将提升权限运行tee
命令晴空文件。例如命令: | sudo tee filename
。
sh
命令的-c
选项允许用户指定要运行的命令,命令将会shell的子进程运行。命令sudo sh -c '> filename'
创建shell子进程运行> filename
命令。
sudo sh -c '> filename'
: | sudo tee filename
要在Linux 清空文件,请使用重定向操作符>
,后跟文件名或者使用truncate
命令。如果您有任何疑问或意见,请在下面发表评论。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK