当删除-
时,我得到了我想要的东西(包含所有文件的tar),当添加-
时,我得到一个名为h
的二进制文件。
我理解文件h
是因为它出现在f之后而创建的,但我不明白为什么当我放弃-
时它不会发生。
答案 0 :(得分:1)
与许多传统的Unix命令一样,tar
允许不同的选项语法样式:
tar man页面说“tar的第一个参数应该是一个函数;其中一个字母是Acdrtux,或者是一个长函数名。”
-f
选项后面必须跟有要处理的存档的文件名。
您的选项顺序错误,并根据平台和其他情况给出不同的意外结果。 c
应该是第一个选项,f
必须在文件名之前。
tar -cjvhf name.tar.gz <path or file>
与
相同tar cjvhf name.tar.gz <path or file>
答案 1 :(得分:0)
在这种情况下,它意味着'标准输入'。某些软件(例如tar)在需要文件参数时使用它,而您需要使用stdin。它不是shell构造,它取决于您使用的程序。如果有疑问,请查看联机帮助页! 标准输入是-f选项的参数。如果 - 不使用 - 你可以使用像tar xvf / home / me / folder / yup或tar xvf / dev / stdin这样的东西
根据您使用的不同平台,不要指望这意味着全局的“标准输入”。由于它不是由shell解释的,所以每个程序都可以自由地处理它,因为程序认为合适。在某些地方,它的标准输出或完全不同的东西:su表示“启动登录shell”。在其他地方,根本没有解释。