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?

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).

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.


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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.