¿Por qué se necesita `--human-legible` y no por defecto?

56

Varias herramientas de línea de comando usan la opción -ho --human-readablepara imprimir el tamaño del archivo en un formato legible para humanos (es decir, 36Gvs 37550836).

  • ¿Por qué es necesaria esta opción y no la predeterminada?
  • ¿No son estas herramientas principalmente para la producción a humanos?
DQdlM
fuente

Respuestas:

75
  1. Porque no existían originalmente, y el comportamiento predeterminado es compatible con versiones anteriores. Además, debido a que no existen en todas las variantes de Unix, y el comportamiento predeterminado es compatible con otras variantes de Unix.
  2. Para muchas herramientas, porque están pensadas para que otras herramientas puedan analizarlas. Raramente es el caso ls, pero analizar la salida de duo dfes relativamente común. (Tenga en cuenta dfque debe usarlo df -Pal analizar).
  3. Porque algunos humanos prefieren el formato 37550836, porque cuando ves un montón de esos números, su tamaño relativo es visualmente claro (número de dígitos).
Gilles 'SO- deja de ser malvado'
fuente
22
Especialmente 3) cuando la tubería de salida directa a través en sort -nporque estoy menos interesado en ver rápidamente el tamaño aproximado de cada directorio y en la que más se subdirectorio ocupar demasiado espacio en forma desproporcionada ...
Shadur
8
@Shadur Ah, pero la clasificación también se necesita -h.
quodlibetor
3
Creo que 2 (por ejemplo, para secuencias de comandos) es la razón principal.
sml
@quodlibetor ¿Qué sistema operativo / distribución? kubuntu lucid sort no acepta -h y no puedo ver ningún equivalente.
Joe
77
@ user23861 sort -hse introdujo en GNU coreutils 7.5. Lucid tiene 7.4, por lo que en Ubuntu necesitas al menos inconformista.
Gilles 'SO- deja de ser malvado'
13

Tenga en cuenta que si configura BLOCKSIZE = human-legible en su entorno, este será el valor predeterminado, al menos para los comandos de coreutils de GNU, es decir, si está utilizando bash put:

export BLOCKSIZE=human-readable

en su archivo $ HOME / .bashrc.

Thor
fuente
2
Parece que BLOCKSIZE=hpodría ser suficiente. Pero un gran consejo!
Mikel
Los documentos sugieren BLOCK_SIZE=human-readable. Tampoco sabía sobre el soporte para miles de separadores hasta que lo leí.
Mikel
No parece funcionar en OSX
James Lin
@jameslin: esta podría ser una variable específica de GNU coreutils. Podrías crear un alias ...
Thor
6

Además de lo que dijo Gilles:

Cuando estas herramientas donde se inventó el disco duro era muy pequeño, en comparación con hoy. No necesitabas ayuda para leer un número como 400000.

Y si no te gusta, usa el sistema de alias. En su directorio de inicio,

edit ~/.bashrc 

e inserte, por ejemplo:

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

Tenga en cuenta que, a diferencia de muchos otros idiomas, no se le permite tener un espacio en blanco antes o detrás del operador de asignación (signo igual).

usuario desconocido
fuente