在ar实用程序的手册页中,我看到以下行。 如果您愿意,可以使用a开始第一个命令行参数 短跑。但是,在任何地方都没有进一步提及破折号……
就此而言 ar 在GNU中找到 binutils ,不使用短划线对减慢处理启动的影响非常小。
ar
binutils
如果你检查一下这个野兽的源代码,你会很快在启动时看到一个调用 decode_options() 使用以下代码:
decode_options()
/* Convert old-style tar call by exploding option element and rearranging options accordingly. */ if (argc > 1 && argv[1][0] != '-') { int new_argc; /* argc value for rearranged arguments */ char **new_argv; /* argv value for rearranged arguments */ char *const *in; /* cursor into original argv */ char **out; /* cursor into rearranged argv */ const char *letter; /* cursor into old option letters */ char buffer[3]; /* constructed option buffer */ /* Initialize a constructed option. */ buffer[0] = '-'; buffer[2] = '\0'; /* Allocate a new argument array, and copy program name in it. */ new_argc = argc - 1 + strlen (argv[1]); new_argv = xmalloc ((new_argc + 1) * sizeof (*argv)); in = argv; out = new_argv; *out++ = *in++; /* Copy each old letter option as a separate option. */ for (letter = *in++; *letter; letter++) { buffer[1] = *letter; *out++ = xstrdup (buffer); }
因此,如果您提供旧式选项,例如with ar pax diablo ,它将自动神奇地将其转化为 ar -p -a -x diablo 继续之前。顺便说说, pax 可能是 不 一个有效的选项集,我刚刚使用它,因为我太懒了去看看 man 页面 - 但显然我没有花费过多的时间来解释我的决定:-)
ar pax diablo
ar -p -a -x diablo
pax
man
就最大可移植性而言,看起来您最好使用非 - 自GNU以来的争论 ar 将处理这两个 和 新形式,虽然年龄较大 ar 变种很可能无法处理新形式。
-
但是,这可能仅仅是我的CDO (一个) 倾向,我只是继续使用新表格,假设我真的不想支持那么老的系统,以至于他们没有最新的GNU东西。
(一个) 就像OCD一样,但是以正确的方式命令:-)