なぜ `--human-readable`が必要であり、デフォルトではないのですか?


56

いくつかのコマンドラインツールは、-hまたは--human-readableオプションを使用して、人間が読める形式でファイルサイズを印刷します(36Gvsなど37550836)。

  • なぜこのオプションが必要であり、デフォルトではないのですか?
  • これらのツールは主に人間への出力用ではありませんか?

回答:


75
  1. 元々存在しなかったため、デフォルトの動作には後方互換性があります。また、すべてのUNIXバリアントに存在するわけではなく、デフォルトの動作は他のUNIXバリアントと互換性があるためです。
  2. 多くのツールでは、他のツールで解析できるようになっているためです。の場合はめったにありませんlsが、の出力の解析duまたはdf比較的一般的です。(Mind、for dfdf -P解析時に使用する必要があります。)
  3. 一部の人間は37550836形式を好むため、そのような数字がたくさんある場合、それらの相対的なサイズは視覚的に明確(桁数)であるためです。

22
特に、3)ときに私のパイプ出力ストレートにsort -n私はすぐにサブディレクトリが不均衡あまりにも多くのスペースを占有されている各ディレクトリとよりの大まかなサイズを見ることにあまり興味ので...
Shadur

8
@Shadurああ、並べ替えにも時間がかかり-hます!
quodlibetor

3
主な理由は2(スクリプト用など)であると思います。
sml

@quodlibetorどのOS /ディストリビューションですか?kubuntuのlucidソートは-hを受け入れず、同等のものは表示されません。
ジョー

7
@ user23861 sort -hはGNU coreutils 7.5で導入されました。Lucidには7.4があるため、Ubuntuでは少なくともmaverickが必要です。
ジル「SO-悪であるのをやめる」

13

ご使用の環境でBLOCKSIZE = human-readableを設定した場合、少なくともGNU coreutilsからのコマンド、つまりbash putを使用している場合、これがデフォルトになることに注意してください。

export BLOCKSIZE=human-readable

$ HOME / .bashrcファイル内。


2
BLOCKSIZE=h十分なように見えます。しかし、素晴らしいヒントです!
ミケル

ドキュメントが提案しますBLOCK_SIZE=human-readable。また、私がそれを読むまで、何千もの区切り文字のサポートについても知りませんでした。
ミケル

OSX上で動作するようには思えない
ジェイムズ・リン

@jameslin:これは、GNU coreutils固有の変数である可能性があります。エイリアスを作成できます...
トール

6

ジルが言ったことに加えて:

hddが発明されたこれらのツールは、今日と比較して非常に小さかったとき。400000のような数字を読むのに助けは必要ありませんでした。

気に入らない場合は、エイリアスシステムを使用してください。ホームディレクトリで、

edit ~/.bashrc 

そして、例えば、挿入します:

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

他の多くの言語とは異なり、代入演算子(等号)の前後に空白を入れることはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.