$ ls -l | sort -k 5 -n -r
$ ls -l | sort -k5nr
Run Code Online (Sandbox Code Playgroud)
我发现这两个命令生成相同的输出。
但我不明白为什么我可以5与n?
为什么不是语法错误?
编辑:
$ ls -l | cut -d: -n -f 2
$ ls -l | cut -d:nf2
cut: the delimiter must be a single character
Try `cut --help' for more information.
Run Code Online (Sandbox Code Playgroud)
为什么cut不表现得像sort?
因为sort是以您期望的方式解析这些的方式实现的。
另见此处:
- 有时选项和它们的参数一起运行,有时用空格分隔,有时用字符分隔,通常是: 或 =。因此,“Prog -fFilename”、“Prog -f Filename”、“Prog -f:Filename”、“Prog -f=Filename”。
- 有些程序允许组合单字符选项;其他人没有。开关“-fA”可能与“-f -A”含义相同,也可能不正确,甚至可能是有效但不同的参数。
这看起来像是两者的组合(无需空格和单字符选项的组合)。
它们只是不同的程序,其参数解析的实现方式不同。
在coreutils8.13 中,比较以下内容:
src/sort.c第 4315 行,调用特殊的整数解析函数parse_field_count,返回第一个无效字符(即一旦数字值完成并且下一个选项开始):这就是为什么sort可以处理您的参数。src/cut.c,第 803 行 ff.,简单地使用getopt解释所有内容的常规行为,直到下一个空格作为当前选项的参数。| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |