Slonik.sk

ls vs. file manager

Denne kopírujeme, editujeme, mažeme, konvertujeme súbory. Na to aby sme vedeli s akými súbormi pracujeme, musíme poznať ich meno, prístupové práva, atď. Ako na to? Príkaz ls alebo niektorý z nepreberného množstva file managerov. Ak však ls trochu pocvičíme, môže z neho byť poslušný psík.

ls je jeden z najstarších programov v UNIXe. Pozná ho hádam každý. Jednoducho vylistuje (ls skratka z anglického list) súbory. Môže vylistovať súbory alebo adresáre usporiadané podľa abecedy či dátumu, zobrazí vlastníka, skupinu, veľkosť, čas poslednej modifikácie. Spustíme ho, ls vypíše všetko ako text priamo do okna/terminálu, kde sme ho napísali a ukončí sa.

File manager je naproti tomu takmer vždy pekne grafický: súbory zobrazuje ikonkami podľa prípony či typu súbory. Umožňuje základné operácie so súbormi. Pracuje sa s ním omnoho intuitívnejšie ako s prepínačmi na príkazovom riadku ls, stačí len klikať. V pamäti však zaberá omnoho viac miesta a musí stále bežať (pokým s ním pracujeme).

Niekde uprostred sú textové file managery typu mc. Zobrazujú všetko v textovom termináli a sú orientované na rýchle ovládanie pomocou klávesnice.

Každý z nich má očividne výhody aj nevýhody.

Grafických programov pribúda každým dňom a sú čím ďalej, tým lepšie. Skúsení UNIX správcovia však príkazový riadok odmietajú pustiť k vode. Prečo? Je to najrýchlejší a rokmi overený spôsob práce. Posúdte sami:

Tým nechcem povedať, že ja používam výhradne ls. I ja mám file manager a používam ho na lokálnom počítači, ale keď už mám použiť ls, tak si to spríjemním.

ls

ls je veľmi krátky príkaz. Takže nie je až také ťažké/namáhavé ho napísať mnoho krát. Ale často ho používame aj s prepínačmi (na detailnejší výpis): ls -l alebo ls -la. No to už je o čosi viac. Mne sa to zdá dosť, najmä keď si spomeniem koľko krát za deň ho použijem.

alias

Nič nie je stratené, alias vám ušetrí pár úderov do klávesnice. Vytvorí "nový príkaz", na ktorý sa potom možno odkazovať jeho menom.

Najčastejšie sa používa ls -l, dokonca omnoho častejie ako ls, preto by bol na mieste príkaz l, ktorý urobí presne to isté ako ls -l. Nič ľahšie:

alias l='ls -l'

Odteraz vždy keď ťuknete l a Enter, vykoná sa príkaz ls -l (vypíše obsah aktuálneho adresára v dlhom formáte). l je teraz synosymom pre list.

Takto si ho môžeme definovať v aktuálnom shelli. Ten si ho zapamätá dokiaľ ho neukončíte. Ak ho chcete mať aj po ďalšom prihlásení, preba ho pridať do súboru .bash_profile, ak používate bash, alebo .profile pre ksh, vo vašom domácom adresári.

Mimochodom, dosť často býva dokonca samotné ls aliasnuté na farebné ls: alias ls='ls --color=auto' práve v súbore ~/.bash_profile.

Funguje to dokonale, chcete vylistovať obsah nejakého iného adresára: l /cesta/adresár a vidíte čo je v ňom.

Ale čo keď je súborov priveľa? (skúste taký adresár /etc) Určite poviete: "To je jednoduché, stačí to stránkovať cez less": l /etc | less

Áno, to zaberie, ale stáva sa to tak často, že by si to zaslúžilo tiež nejakú skratku. Lenže alias má isté obmedzenia. Nahradí vždy meno aliasu príkazom, ktorý sme mu priradili a ktorý je pevne definovaný. Ale my potrebujeme v strede tohto príkazu napísať meno adresára, ktoré sa mení. Na toto je alias krátky.

funkcie

Ale shell má aj na toto recept. Urobíme funkciu ll, ktorá ako argument dostane meno adresára:

ll()
{
    ls -l "$@" | less
}

Premenná shellu $@, obsahuje všetky argumenty s ktorými sme program alebo funkciu volali.

Použitie je jednoduché: ll /etc.

ll je teda niečo ako long list, list with less, ako len chcete. :)

Takúto funkciu si môžeme tiež pridať do ~/.bash_profile, pre ďalšie použitie.

Zopár tipov na listovanie do vášho ~/.bash_profile:

Aliasy
alias ls='ls --color=auto'
alias l='ls -l'
Funkcie
la() { ls -la "$@"; }
ll() { ls -la "$@"|less; }
lt() { ls -lat "$@"|less; }
lr() { ls -laR "$@"|less; }
lf() { ls -la $floppy "$@"; }
lc() { ls -la $cdrom "$@"; }
lz() { ls -la $zipdisk "$@"; }

Pred tým, než pomenujete nový alias či funkciu, si otestujte, či už neexistuje príkaz s menom, ktoré chcete použiť. Jednoducho ho napíšte do príkazového riadku. Ak zareaguje nejak inak než bash: meno: command not found, tak musíte hľadať iné meno. Alias i funkcia majú prednosť pred programami a prekryli by tento príkaz. Ale možno práve to môže byť zámer.

Nielen ls

Hovorili sme síce o príkaze ls, ale podobne si môžete zjednodušiť aj iné príkazy, ktoré často používate. Čo tak napríklad cd (change directory) do často používaných adresárov?

Ďalšie užitočné aliasy (pre inšpiráciu).

alias u='cd ..'
alias c=clear
alias f=finger
alias p=ping
alias t=traceroute
alias df='sync;df -h'
alias kick='kill -KILL'
alias bc='bc -q'
Tipy na ďalšie čítanie