Dlaczego `--human-readable` jest potrzebny, a nie domyślny?

56

Kilka narzędzi wiersza poleceń używa opcji -hlub --human-readabledo drukowania rozmiaru pliku w formacie czytelnym dla człowieka (tj. 36GVs 37550836).

  • Dlaczego ta opcja jest potrzebna, a nie domyślna?
  • Czy narzędzia te nie są przeznaczone głównie do przekazywania ludziom?
DQdlM
źródło

Odpowiedzi:

75
  1. Ponieważ nie istniały pierwotnie, a domyślne zachowanie jest kompatybilne wstecz. Ponadto, ponieważ nie istnieją one we wszystkich wariantach uniksowych, a domyślne zachowanie jest kompatybilne z innymi wariantami uniksowymi.
  2. W przypadku wielu narzędzi, ponieważ mają one być analizowalne przez inne narzędzia. Rzadko ma to miejsce ls, ale parsowanie danych wyjściowych dulub dfjest stosunkowo częste. (Pamiętaj, dfże powinieneś użyć tego df -Ppodczas analizy).
  3. Ponieważ niektórzy ludzie wolą format 37550836, ponieważ gdy widzisz kilka takich liczb, ich względny rozmiar jest wizualnie wyraźny (liczba cyfr).
Gilles „SO- przestań być zły”
źródło
22
Zwłaszcza 3), gdy przesyłam dane wyjściowe bezpośrednio do, sort -nponieważ jestem mniej zainteresowany szybkim wyświetlaniem przybliżonego rozmiaru każdego katalogu i bardziej, w którym podkatalog zajmuje nieproporcjonalnie dużo miejsca ...
Shadur
8
@Shadur Ah, ale sortowanie też trwa -h!
quodlibetor
3
Myślę, że 2 (np. W przypadku skryptów) jest głównym powodem.
sml
@quodlibetor Jaki system / dystrybucja? Kubuntu Lucid Sort nie akceptuje -h i nie widzę odpowiednika.
Joe
7
@ user23861 sort -hzostał wprowadzony w GNU coreutils 7.5. Lucid ma 7.4, więc na Ubuntu potrzebujesz przynajmniej indywidualisty.
Gilles 'SO - przestań być zły'
13

Zauważ, że jeśli ustawisz BLOCKSIZE = czytelny dla człowieka w swoim środowisku, będzie to ustawienie domyślne, przynajmniej dla poleceń z GNU coreutils, tj. Jeśli używasz bash put:

export BLOCKSIZE=human-readable

w pliku $ HOME / .bashrc.

Thor
źródło
2
Wygląda na to, BLOCKSIZE=hże może wystarczyć. Ale świetna wskazówka!
Mikel
W docs sugerują BLOCK_SIZE=human-readable. Nie wiedziałem też o wsparciu dla tysięcy separatorów, dopóki tego nie przeczytałem.
Mikel
Nie działa na OSX
James Lin
@jameslin: może to być zmienna specyficzna dla GNU coreutils. Możesz utworzyć alias ...
Thor,
6

Oprócz tego, co powiedział Gilles:

Kiedy te narzędzia, w których wynaleziono HDD, były bardzo małe w porównaniu z dzisiejszymi. Nie potrzebowałeś pomocy w odczytaniu liczby takiej jak 400000.

A jeśli ci się to nie podoba, użyj systemu aliasów. W twoim katalogu domowym

edit ~/.bashrc 

i wstaw na przykład:

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

Pamiętaj, że w przeciwieństwie do wielu innych języków, nie możesz mieć spacji przed operatorem przypisania lub za nim (znak równości).

nieznany użytkownik
źródło