tar命令:什么是破折号?

mus*_*ero 9 linux shell tar

有人可以帮我理解这个命令:

tar -czf - -T ./tarFileList.tmp -C ./test_folder/ | ssh -l musthero voserver95.myserver.com -x "umask 002; cd /disk0/test_untar/ ; tar -xzf - "

特别是,我无法理解什么是(第一个破折号tar -czf - ...).为什么我需要它,如果我指定的文件列表,我想焦油(即-T ./tarFileList.tmp),和一个目录,把那些文件(即-C ./test_folder/) .

复制也有点令人困惑 - 如果没有cp/scp命令,如何通过ssh复制tarball ?

Mar*_*ell 10

第一个破折号是不必要的,你可以同样写:

tar cvf ...
Run Code Online (Sandbox Code Playgroud)

第二个破折号属于f选项,它说"不是在文件系统中创建一个命名文件,而是将tarred文件写入stdout".

也就是说stdout,然后通过管道进入过去了ssh.远程机器上相应的解压缩器stdin以完全相同的方式进行解除.

因此,在回答您的问题时,破折号意味着stdout在创建/编写tarfile时使用tar cfstdin提取/读取tarfile时tar xf

  • 好!因此破折号等于stdout _or_ stdin,这取决于我是否创建_or_提取tarfile。谢谢! (2认同)