为什么需要“-可读”而不是默认值?


56

一些命令行工具使用-h--human-readable选项以人类可读格式(即36Gvs 37550836)打印文件大小。

  • 为什么需要此选项,而不是默认选项?
  • 这些工具不是主要用于输出给人类吗?

Answers:


75
  1. 因为它们最初不存在,并且默认行为是向后兼容。另外,因为它们并非在所有的unix变体中都存在,并且默认行为与其他unix变体兼容。
  2. 对于许多工具,因为它们旨在被其他工具解析。的情况很少见ls,但解析du或的输出df相对常见。(记住,对于df,您应该df -P在解析时使用。)
  3. 因为有些人喜欢37550836格式,因为当您看到一堆这样的数字时,它们的相对大小在视觉上清晰可见(数字数)。

22
特别是3)当我直接将输出传递到管道中时,sort -n因为我对快速了解每个目录的粗略大小不感兴趣,而对子目录占用过多空间
却不感兴趣

8
@Shadur啊,但排序也需要-h
quodlibetor

3
我认为2(例如,用于脚本编写)是主要原因。
sml

@quodlibetor什么操作系统/发行版?kubuntu lucid sort不接受-h,我看不到任何等效。

7
@ user23861 sort -h在GNU coreutils 7.5中引入。Lucid有7.4,所以在Ubuntu上至少需要特立独行。
吉尔斯

13

请注意,如果您在环境中设置BLOCKSIZE = human-可读,则这将是默认设置,至少对于GNU coreutils中的命令而言,即使用bash put:

export BLOCKSIZE=human-readable

在$ HOME / .bashrc文件中。


2
看起来BLOCKSIZE=h可能就足够了。但是很棒的提示!
Mikel

文档建议BLOCK_SIZE=human-readable。在我读完之前,还不知道是否支持数千个分隔符。
Mikel

似乎在OSX上不起作用
James Lin

@jameslin:这可能是GNU coreutils特定的变量。您可以创建一个别名...
Thor

6

除了吉尔斯说的话:

与今天相比,当这些工具发明的硬盘很小时。您不需要帮助即可读取400000这样的数字。

如果您不喜欢它,请使用别名系统。在您的主目录中

edit ~/.bashrc 

并插入,例如:

alias df='df -h'
alias du='du -h'

请注意,与许多其他语言相反,不允许在赋值运算符(等号)之前或之后使用空格。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.