我使用bunzip2与-c标志有点混淆。
以下代码行运作良好:
ls -l
-> -rw-r--r-- 1 root root 163 Oct 25 13:06 access_logs.tar.bz2
bunzip2 -c access_logs.tar.bz2 | tar -t
当我尝试使用不带-c标志的代码时:
bunzip2 access_logs.tar.bz2 | tar -t
我收到消息:
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
但是在显示列表ls -l
时:
-rw-r--r-- 1 root root 10240 Oct 25 13:06 access_logs.tar
文档说:
管道的左侧是bunzip -c access_logs.tbz,其中 解压缩文件但(-c选项)将输出发送到 屏幕。输出重定向到tar -t。
根据手册:
-c --stdout
Compress or decompress to standard output.
似乎解压缩也可以在没有-c标志的情况下工作?
答案 0 :(得分:0)
答案 1 :(得分:0)
我对你困惑的事感到困惑。您观察了问题的答案,并在文档中阅读。
如果没有-c
,bunzip2
将解压缩xx.gz
文件并将结果保存为文件xx
。使用-c
,它不会创建文件,而是将结果发送到stdout。如果您有一个管道|
,那么它不会被打印到终端(这将是一团糟),它将成为管道右侧程序的输入。