Warum wird --human-readable benötigt und nicht default?

56

Einige Befehlszeilenprogramme verwenden die Option -hoder --human-readable, um die Dateigröße in einem für Menschen lesbaren Format (z. B. 36Gvs 37550836) auszudrucken .

  • Warum wird diese Option benötigt und nicht die Standardeinstellung?
  • Sind diese Tools nicht hauptsächlich für die Ausgabe an Menschen gedacht?
DQdlM
quelle

Antworten:

75
  1. Weil sie ursprünglich nicht existierten und das Standardverhalten abwärtskompatibel ist. Außerdem, weil sie nicht für alle Unix-Varianten existieren und das Standardverhalten mit anderen Unix-Varianten kompatibel ist.
  2. Für viele Tools, da sie von anderen Tools analysiert werden sollen. Dies ist selten der Fall ls, aber das Parsen der Ausgabe von duoder dfist relativ häufig. (Beachten Sie, dass dfSie df -Pbeim Parsen verwenden sollten.)
  3. Da einige Menschen das 37550836-Format bevorzugen, ist ihre relative Größe bei einer Reihe solcher Zahlen visuell klar (Anzahl der Ziffern).
Gilles 'SO - hör auf böse zu sein'
quelle
22
Besonders 3) wenn ich die Ausgabe direkt sort -n
weiterleite,
8
@Shadur Ah, aber die Sortierung dauert -hauch!
quodlibetor
3
Ich denke 2 (zB für Scripting) ist der Hauptgrund.
sml
@ quodlibetor Welches Betriebssystem / welche Distribution? kubuntu lucid sort akzeptiert -h nicht und ich kann kein äquivalent sehen.
Joe
7
@ user23861 sort -hwurde in GNU coreutils 7.5 eingeführt. Lucid hat 7.4, also brauchst du auf Ubuntu mindestens Einzelgänger.
Gilles 'SO - hör auf böse zu sein'
13

Beachten Sie, dass, wenn Sie in Ihrer Umgebung BLOCKSIZE = menschenlesbar setzen, dies der Standard ist, zumindest für die Befehle von GNU coreutils, dh wenn Sie bash put verwenden:

export BLOCKSIZE=human-readable

in Ihrer $ HOME / .bashrc-Datei.

Thor
quelle
2
Sieht aus wie BLOCKSIZE=hkönnte ausreichen. Aber toller Tipp!
Mikel
Die Dokumente schlagen vor BLOCK_SIZE=human-readable. Ich wusste auch nichts über die Unterstützung von Tausenden von Trennzeichen, bis ich das gelesen habe.
Mikel
Scheint unter OSX nicht zu funktionieren
James Lin
@jameslin: Dies könnte eine GNU Coreutils-spezifische Variable sein. Sie könnten einen Alias ​​erstellen ...
Thor
6

Neben dem, was Gilles sagte:

Als diese Werkzeuge erfunden wurden, war die Festplatte im Vergleich zu heute sehr klein. Sie brauchten keine Hilfe, um eine Zahl wie 400000 zu lesen.

Und wenn Sie es nicht mögen, verwenden Sie das Alias-System. In Ihrem Home-Verzeichnis

edit ~/.bashrc 

und einfügen, zum Beispiel:

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

Beachten Sie, dass im Gegensatz zu vielen anderen Sprachen vor oder hinter dem Zuweisungsoperator kein Leerzeichen stehen darf (Gleichheitszeichen).

Benutzer unbekannt
quelle