在linux bash中清空文件

DDB*_*DBE 1 linux bash file echo

哪一种是在 Linux 中清理或清空文件的最佳方法?我必须将( tar )文件压缩到存档,然后清理/清空它;这就是我所做的并且它可以正常工作:

tar -zcvf /mnt/file.tar.gz /mnt/file.txt > /dev/null 2>&1

echo "" > /mnt/file.txt
Run Code Online (Sandbox Code Playgroud)

我正在用回声做这件事,可能有更好的方法吗?

谢谢

Dan*_*scu 16

有多种方法可以做到这一点:

我们假设我们的文件名为 access.log 并且位于当前目录中:

1.

: > access.log
Run Code Online (Sandbox Code Playgroud)

2.

true > access.log
Run Code Online (Sandbox Code Playgroud)

3.

cat /dev/null > access.log
Run Code Online (Sandbox Code Playgroud)

4.

cp /dev/null access.log
Run Code Online (Sandbox Code Playgroud)

5.

dd if=/dev/null of=access.log
Run Code Online (Sandbox Code Playgroud)

6.

echo -n "" > access.log
Run Code Online (Sandbox Code Playgroud)

7.

echo -n > access.log
Run Code Online (Sandbox Code Playgroud)


ogu*_*ail 5

只需截断它:

truncate -s 0 file
Run Code Online (Sandbox Code Playgroud)


Rav*_*h13 1

编辑(压缩文件并取消实际文件):从 @oguz ismail 的优秀答案中汲取灵感,我truncate在这里也使用文件 zip 选项。

tar -zcvf file.tar.gz file.txt && truncate -s 0 file.txt
Run Code Online (Sandbox Code Playgroud)

我会比> /mnt/file.txt更容易一点echo