在Linux Bash中清空一个文件

7

什么是在Linux中清空或清理一个文件的最佳方法?我需要将一个文件压缩成一个存档,然后清空/清理它;这是我所做的事情,它能正常工作:

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

echo "" > /mnt/file.txt

我正在使用echo来完成这个操作,可能有更好的方法吗?
谢谢。
5个回答

16

有多种方法可以实现这一点:

我们假设我们的文件名为 access.log,且它在当前目录中:

1.

: > access.log

2.

true > access.log

3.

cat /dev/null > access.log

4.

cp /dev/null access.log

5.

dd if=/dev/null of=access.log

6.

echo -n "" > access.log

7.

echo -n > access.log

8

只需截断它:

truncate -s 0 file

1
编辑(压缩文件并使实际文件无效): 参考 @oguz ismail 的优秀答案,我在这里也使用了文件的 truncate 选项,并将其压缩。

tar -zcvf file.tar.gz file.txt && truncate -s 0 file.txt


我会选择> /mnt/file.txtecho更简单一些。


0
tar czvf /tmp/empty.tar.gz --files-from=/dev/null --overwrite 

我找到了一种方法在这里


2
在我看来,我不认为 OP 想要创建一个空的 zip 文件,他/她是想压缩一个文件,然后将实际文件置空,如果我理解正确的话。 - RavinderSingh13

0

一种选择是:

touch passbook.txt

在Linux中创建空文件的另一种选项是只需键入以下命令:
> file-name-here
echo '' > filename
ls filename
file filename

1
如果文件已经存在,touch 命令将只会更新文件的时间戳。如果文件不存在,touch 命令将会创建一个空文件,但这不是问题的关键。 - user1010997

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接