Pourquoi `--human-readable`` est-il nécessaire et non par défaut?

56

Plusieurs outils de ligne de commande utilisent l' option -hou --human-readablepour imprimer la taille du fichier dans un format lisible par l'homme (c'est-à-dire, 36Gvs 37550836).

  • Pourquoi cette option est-elle nécessaire et non la valeur par défaut?
  • Ces outils ne sont-ils pas principalement destinés aux humains?
DQdlM
la source

Réponses:

75
  1. Parce qu'ils n'existaient pas à l'origine et que le comportement par défaut est compatible avec les versions antérieures. De plus, comme elles n'existent pas sur toutes les variantes Unix, le comportement par défaut est compatible avec les autres variantes Unix.
  2. Pour de nombreux outils, car ils sont conçus pour être analysables par d’autres outils. C'est rarement le cas pour ls, mais l'analyse de la sortie de duou dfest relativement courante. (Attention, dfvous devriez utiliser df -Plors de l'analyse syntaxique.)
  3. Parce que certains humains préfèrent le format 37550836, car leur taille relative est visuellement claire (nombre de chiffres).
Gilles, arrête de faire le mal
la source
22
Particulièrement 3) quand je dirige la sortie directement sort -nparce que je suis moins intéressé par une vue rapide de la taille approximative de chaque répertoire et davantage par le sous-répertoire qui prend trop d'espace de manière disproportionnée ...
Shadur
8
@Shadur Ah mais le genre en prend un -haussi!
quodlibetor
3
Je pense que 2 (par exemple pour les scripts) est la raison principale.
sml
@quodlibetor Quel système d'exploitation / distribution? kubuntu lucid sort n'accepte pas -h et je ne vois pas d'équivalent.
Joe
7
@ user23861 a sort -hété introduit dans GNU coreutils 7.5. Lucid a 7.4, alors sur Ubuntu, vous avez besoin d’au moins maverick.
Gilles, arrête de faire le mal
13

Notez que si vous définissez BLOCKSIZE = lisible par l'homme dans votre environnement, ce sera la valeur par défaut, du moins pour les commandes de GNU coreutils, c'est-à-dire si vous utilisez bash put:

export BLOCKSIZE=human-readable

dans votre fichier $ HOME / .bashrc.

Thor
la source
2
On dirait que cela BLOCKSIZE=hpourrait suffire. Mais bon conseil!
Mikel
Les docs suggèrent BLOCK_SIZE=human-readable. Aussi, je ne connaissais pas le support de milliers de séparateurs jusqu'à ce que je lise cela.
Mikel
Ne semble pas fonctionner sur OSX
James Lin
@jameslin: il peut s'agir d'une variable spécifique à GNU coreutils. Vous pouvez créer un alias ...
Thor
6

À côté de ce que Gilles a dit:

Quand ces outils ont été inventés, le disque dur était très petit, comparé à aujourd'hui. Vous n'avez pas besoin d'aide pour lire un chiffre comme 400000.

Et si vous ne l'aimez pas, utilisez le système d'alias. Dans votre répertoire personnel,

edit ~/.bashrc 

et insérez, par exemple:

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

Notez que contrairement à de nombreuses autres langues, vous ne pouvez pas utiliser de blanc avant ou derrière l'opérateur d'affectation (signe égal).

Utilisateur inconnu
la source