0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Linux清空文件内容

CHANBAEK 来源:myfreax 作者:myfreax 2022-12-06 17:11 次阅读

在某些情况下,您可能希望将现有文件截断,即减少或者缩小文件的大小。清空文件比删除文件后重新创建文件并设置正确的权限和所有权。更快,更容易。

还有一点就是,如果要删除的文件已经被其它进程打开,如果你此时删除文件可能会导致使用该文件的进程没有响应。但你可以尝试清空文件内容。

教程说明如何在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命令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11032

    浏览量

    207294
  • 文件
    +关注

    关注

    1

    文章

    541

    浏览量

    24472
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21876
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    23047
收藏 人收藏

    评论

    相关推荐

    请教Labview如何实现清空一个指定的文件

    时自动清理)需要清空这个文件夹目前清空文件夹这个不会实现。。。或者对于上述我的想法大神们有什么更好的办法?
    发表于 08-01 20:36

    如何清空数组内容

    我用插入元素加for循环的方法生成数组,想每次用完之后清空再使用。我用了条件结构把空数组输入到数组中,数组显示为零,但是再次使用数组的时候原来的值还是没有清除,数据又接在原数组后面继续生成,请问怎么才能彻底删除数组中的内容
    发表于 04-23 04:33

    求教,labview怎么清空文本文件中的内容

    求教,labview怎么清空文本文件中的内容。重新运行程序后,清空文本文件中原有的字符。
    发表于 11-23 14:59

    Linux下如何清空或删除大文件和大量文件

    快速删除大文件1. 通过重定向到 Null 来清空文件内容清空或者让一个文件成为空白的最简单方式,是像下面那样,通过 shell 重定向 n
    发表于 07-11 07:50

    Linux文件内容查询命令

    Linux文件内容查询命令 Linux文件内容查询命令  grep、fgrep和egrep命令
    发表于 01-18 12:45 802次阅读

    Linux基础教程之如何在linux不解压tar.gz文件查看的文件大小资料概述

    本文档的主要内容详细介绍的是Linux基础教程之如何在linux不解压tar.gz文件查看的文件
    发表于 10-31 17:06 2次下载

    何在Win7与linux双系统时卸载linux详细方法概述

    本文档的主要内容详细介绍的是如何在Win7与linux双系统时卸载linux详细方法概述
    发表于 11-07 15:49 21次下载
    如<b class='flag-5'>何在</b>Win7与<b class='flag-5'>linux</b>双系统时卸载<b class='flag-5'>linux</b>详细方法概述

    何在Linux下如何删除大量文件的详细资料概述

    本文档的主要内容详细介绍的是如何在Linux下删除大量文件的过程详细资料概述免费下载。
    发表于 11-14 17:10 7次下载

    LINUX系统教程之如何在Linux系统下进行编程

    本文档的主要内容详细介绍的是LINUX系统教程之如何在Linux系统下进行编程主要内容包括了:程序开发过程 ,
    发表于 12-18 19:09 9次下载

    怎样恢复回收站已清空文件

    回收站被清空了怎么办?网上经常能看到一些方法,比如修改注册表、下载某收费软件等等。但这些方法,要么太麻烦,要么需要用户花钱。最关键的是,你花了钱,却未必能找回自己想要的东东。
    的头像 发表于 03-24 10:06 3308次阅读

    虚拟机:Linux查看tar包文件内容的方法

    虚拟机:Linux查看tar包文件内容的方法
    的头像 发表于 06-22 16:49 6375次阅读

    何在Linux中查看隐藏文件

    在windows可以查看隐藏的文件。在Linux中也可以查看隐藏文件且非常容易。要查看隐藏文件运行`ls -a`命令即可。
    的头像 发表于 01-04 17:31 1.5w次阅读

    何在Linux上使用Pigz来更快地压缩文件

    Pigz是一款快速压缩文件的工具,它能够使用多个CPU核心进行压缩,使得压缩速度得到了极大的提升。在本文中,我们将介绍如何在Linux上使用Pigz来更快地压缩文件
    的头像 发表于 05-12 16:42 2004次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>上使用Pigz来更快地压缩<b class='flag-5'>文件</b>

    恒讯科技分析:如何在Linux上使用rm命令删除文件和目录?

    本指南展示了如何在Linux中使用rm命令行删除文件、目录和其他内容
    的头像 发表于 06-09 17:02 967次阅读

    java如何清空obj文件内容

    清空一个文件内容可以通过以下步骤来完成。 首先,你需要指定要清空文件的路径。你可以使用Java的File类来操作
    的头像 发表于 11-21 10:29 300次阅读