为什么需要`--human-readable` 而不是默认值?

DQd*_*dlM 57 command-line

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

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

Gil*_*il' 76

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

  • 尤其是 3) 当我将输出直接通过管道输入 `sort -n` 时,因为我对快速查看每个目录的粗略大小和更多子目录不成比例地占用过多空间的兴趣不大...... (22认同)
  • @Shadur Ah 但 sort 也需要一个 `-h`! (8认同)
  • @user23861 `sort -h` 是在 GNU coreutils 7.5 中引入的。Lucid 有 7.4,所以在 Ubuntu 上你至少需要特立独行。 (7认同)
  • 我认为 2(例如用于脚本)是主要原因。 (3认同)

Tho*_*hor 13

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

export BLOCKSIZE=human-readable
Run Code Online (Sandbox Code Playgroud)

在您的 $HOME/.bashrc 文件中。

  • 看起来 `BLOCKSIZE=h` 可能就足够了。但是很棒的提示! (2认同)

use*_*own 6

除了吉尔斯所说的:

与今天相比,发明硬盘的这些工具当时非常小。您无需帮助即可读取 400000 之类的数字。

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

edit ~/.bashrc 
Run Code Online (Sandbox Code Playgroud)

并插入,例如:

alias df='df -h'
alias du='du -h'
Run Code Online (Sandbox Code Playgroud)

请注意,与许多其他语言相比,您不允许在赋值运算符(等号)之前或之后有一个空格。