在某些情况下,您可能希望将现有文件截断(清空)至零长度。简单来说,截断文件就是删除文件内容而不删除文件。
截断文件比截断文件更快更容易删除文件
, 重新创造它,并设置正确的权限和所有权。此外,如果该文件由进程打开,则删除该文件可能会导致使用该文件的程序出现故障。
本教程介绍了如何使用 shell 重定向在 Linux 系统中将文件截断为零大小truncate
命令。
外壳重定向#
截断文件最简单和最常用的方法是使用>
shell 重定向运算符。
使用重定向截断文件的一般格式是:
让我们分解一下命令:
- The
:
冒号的意思是true
并且不产生任何输出。
- 重定向运算符
>
将前面命令的输出重定向到给定文件。
-
filename
,您要截断的文件。
If the 文件已存在,它将被截断为零。否则,将创建该文件。
代替:
还可以使用另一个不产生输出的命令。
这是一个使用的示例cat命令输出的内容/dev/null
device,仅返回文件结束字符:
另一个可以使用的命令是echo
. The -n
选项告诉echo
不附加换行符:
在大多数现代 shell(例如 Bash 或 Zsh)上,您可以省略重定向符号之前的命令并使用:
为了能够截断文件,您需要对该文件具有写权限。通常,您会使用sudo为此,但提升的 root 权限不适用于重定向。这是一个例子:
bash: /var/log/syslog: Permission denied
有几种允许重定向的解决方案sudo
。第一个选项可以使用 sudo 运行新的 shell,并使用以下命令在该 shell 内执行命令-c
flag:
另一种选择是将输出通过管道传输到tee
命令,提升tee
特权与sudo
,并将空输出写入给定文件:
truncate
命令#
truncate
是一个命令行实用程序,允许您将文件的大小缩小或扩展至给定大小。
使用以下命令将文件截断为零大小的一般语法truncate
命令,如下:
The -s 0
选项将文件大小设置为零。
例如,要清空 Nginx 访问日志,您可以使用:
sudo truncate -s 0 /var/log/nginx/access.log
清空所有日志文件#
随着时间的推移,您的磁盘驱动器可能会因大量文件而变得混乱大日志文件占用大量磁盘空间。
以下命令将清空目录下以“.log”结尾的文件/var/log
目录:
sudo truncate -s 0 /var/log/**/*.log
更好的选择是使用以下命令旋转、压缩和删除日志文件对数旋转
tool.
结论#
要在 Linux 中截断文件,请使用重定向运算符>
后跟文件名。
如果您有任何疑问或意见,请在下面留言。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)