Linux中清空文件内容的方法

在使用Linux的过程中,我经常有需要清空一个文件的内容的情况,比如日志文件占用过大,或者systemd服务文件重写,需要用命令清空,我逐渐在学习过程中掌握了一些方法来应对这些情况。在这里记录一下防止遗忘。

方法1(>重定向)

通过重定向到NULL来清空文件。

> example.log

方法2(echo 命令)

使用 echo 命令 将空字符串重定向到文件中。

echo "" > example.log
或者
echo > example.log

方法3(cat/dev/null 设备1

可以通过使用 cat 命令 显示 /dev/null 的内容然后重定向输出到某个文件,以此来达到清空该文件的目的。

cat /dev/null > example.log

方法4(cp/dev/null 设备)

cp /dev/null example.log

方法5(Linux dd 命令)

dd if=/dev/null of=example.log // if 代表输入文件,of 代表输出文件。

方法6(true命令2

true > example.log
或者
: > example.log

方法7(truncate 命令)

truncate 可被用来将文件缩减或扩展至指定大小。

truncate -s 0 my_access.log

方法8(sed 命令)

sed命令可以通过删除文件内容的方式清空文件。

sed -i 'd' example.log

方法对比

以下是8种方法的对比表格,帮助读者选择最适合的方案。

方法优点缺点适用场景
>/true重定向简单、快速、高效适用于大多数场景
echo命令易于理解,适合初学者略微冗余适用于脚本中需要明确清空意图的场景
truncate命令不改变文件权限和时间戳,适合日志管理需要额外安装工具适用于需要保留文件元信息的场景
dd命令灵活,适合高级操作性能较低,代码较复杂适用于需要精确控制的场景
cat/cp命令简单,适合快速操作依赖/dev/null设备适用于大多数场景
sed命令可扩展性强,适合复杂文本处理性能较低,代码较复杂适用于需要处理文本内容的场景
  1. 在 Linux 中, null 设备基本上被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件,这些通常可以利用重定向机制来达到。所以 /dev/null 设备文件是一个特殊的文件,它将清空送到它这里来的所有输入,而它的输出则可被视为一个空文件。 ↩︎
  2. : 符号,它是 shell 的一个内置命令,等同于 true 命令。 ↩︎
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇