tar:jcvfh和-jcvfh有什么区别?

时间:2016-03-08 14:11:51

标签: posix tar

当删除-时,我得到了我想要的东西(包含所有文件的tar),当添加-时,我得到一个名为h的二进制文件。

我理解文件h是因为它出现在f之后而创建的,但我不明白为什么当我放弃-时它不会发生。

2 个答案:

答案 0 :(得分:1)

与许多传统的Unix命令一样,tar允许不同的选项语法样式:

  1. UNIX选项,可以分组,并且必须以短划线开头。
  2. BSD选项,可以分组,不得与短划线一起使用。
  3. GNU长选项,前面有两个破折号。
  4. 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”。在其他地方,根本没有解释。