linux truncate 命令,使用shell重定向和truncate命令在Linux系统中截断/清空文件

本文介绍使用shell重定向和truncate命令在Linux操作系统中截断/清空文件的方法,即将文件截断为零大小。在某些情况下,你可能希望将现有文件截断(清空)为零长度,简单来说,截断文件意味着删除文件内容而不删除文件。截断文件比删除文件,重新创建文件以及设置正确的权限和所有权要快得多,也更容易,此外,如果文件由进程打开,删除该文件可能会导致使用它的程序出现故障。

b48662251c865efa1b563e775dc4e33c.png

Shell重定向

截断文件最简单,最常用的方法是使用> shell重定向操作符。

使用重定向截断文件的一般格式是:

: > filename

让我们分解命令:

1、:冒号表示true,不产生输出。

2、重定向运算符>将前一个命令的输出重定向到给定文件。

3、filename,要截断的文件。

如果文件存在,则将其截断为零,否则,将创建该文件。

而不是:,也可以使用另一个不产生输出的命令。

下面是使用cat命令输出/dev/null设备内容的示例,该设备仅返回文件结束字符:

cat /dev/null > filename

可以使用的另一个命令是echo,-n选项使echo不要追加换行符:

echo -n > filename

在大多数现代shell(如Bash或Zsh)上,你可以在重定向符号之前省略该命令并使用:

> filename

为了能够截断文件,你需要对文件具有写权限,通常,你可以使用sudo,但提升的root权限不适用于重定向,这是一个例子:

sudo : > /var/log/syslog

返回:

bash: /var/log/syslog: Permission denied

有几种解决方案允许使用sudo重定向,第一个选项可以使用sudo运行新shell,并使用-c参数在该shell中执行命令:

sudo sh -c '> filename'

另一种选择是将输出传递给tee命令,使用sudo提升tee权限,并将空输出写入给定文件:

: | sudo tee filename

truncate命令

truncate是一个命令行实用程序,允许你将文件的大小缩小或扩展到给定的大小。

使用truncate命令将文件截断为零的一般语法如下:

truncate -s 0 filename

-s 0选项将文件大小设置为零。

例如,要清空Nginx访问日志,你将使用:

$ sudo truncate -s 0 /var/log/nginx/access.log

清空所有日志文件

随着时间的推移,你的磁盘驱动器可能会被大量大型日志文件占用大量磁盘空间。

以下命令将清空/var/目录下以“.log”结尾的文件:

$ sudo truncate -s 0 /var/log/**/*.log

更好的选择是使用logrotate工具旋转,压缩和删除日志文件。

结论

要在Linux系统中截断文件,请使用重定向运算符>,后跟文件名。

相关主题

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值