V minulém dílu jsem uveřejnil dvě utilitky sloužící k přejmenovávání souborů. Ani dnes si jednu neodpustím:
Soubor num : #!/usr/bin/perl |
Tento malý skriptík je opět v jazyce Perl a vyžaduje nejméně čtyři argumenty příkazové řádky: prefix, postfix, číslo_od a nejméně jeden název souboru. Jeho úkolem je přejmenovat všechny zadané soubory tak, aby získaly jméno tvaru: <prefix><číslo><postfix>
.
Spustíte-li program například takto:
num "file" "" 0 *
…přejmenují se všechny soubory aktuálního adresáře na tvar:
file0000 file0001 file0002 ...
Voláním:
num "img" ".jpeg" 10 *.jpg
…přejmenujete všechny soubory aktuálního adresáře, které mají příponu .jpg
na:
img0010.jpeg img0011.jpeg img0012.jpeg ...
Jak prográmek funguje? Pole @ARGV
je seznam argumentů příkazové řádky. Příkazem shift(@ARGV)
se vrátí (a z pole odstraní) první položka. Inicializují se tak proměnné $prefix
, $postfix
a $od
. Následuje cyklus „foreach“, který pokaždé vyrobí nové jméno souboru ($new
), zvýší počítadlo $from
a soubor přejmenuje.
Úklid na disku
Pokud v Linuxu zhavaruje nějaký program, obvykle po sobě zanechá soubor core
. Slouží k ladicím účelům, uchovává v sobě totiž podmínky, při kterých došlo ke zhroucení programu, ale pro obyčejného uživatele je naprosto k ničemu. V mnohých případech zabírá docela dost místa, a tak je vhodné je občas z disku vymazat.
Následující prográmek prochází zadaným adresářem včetně podadresářů (nebo pokud počáteční adresář nezadáte, celým adresářovým stromem) a hledá soubory core
. Pokud nějaký nalezne, zeptá se vás, jestli jej chcete smazat a poté ho z disku odstraní.
Soubor rmcore :
|
Nechcete-li, aby se vás skript neustále ptal, jestli má soubor zrušit, jednoduše odstraňte volbu -i
za příkazem rm
.
Zavedení aliasů
Aliasy přišly původně z C-shellu, ale dnes je podporuje už snad každý příkazový interpretr. Slouží k definici nových příkazů pomocí substituce řetězce. Příkazem alias
si pojmenujete krátkým názvem nějaký složitý příkaz a v příkazovém interpretru jej pak používáte místo toho dlouhého. O aliasech se více dozvíte třeba v manuálových stránkách BASHe ( man bash
) – já zde uvedu jen pár užitečných možností, jejichž vložení do vašeho systému by mohlo stát za zvážení.
alias ls='ls --color' alias lsa='ls -a' alias lsl='ls -l -a'
Touto trojicí jsme vytvořili aliasy příkazu ls. Napíšeme-li nyní samotné ls
, příkazový procesor zjistí, že se jedná o alias a rozvine jej do příkazu ls --color
, což znamená barevný výpis obsahu adresáře. Zadáme-li lsa
, alias se rozvine na ls -a
, ale ls
je rovněž alias, takže výsledkem bude ls --color -a
, tedy barevný výpis všech souborů adresáře. Podobně je to i s příkazem lsl
– ten se rozvine na ls --color -l -a
(dlouhý barevný výpis všech souborů adresáře).
Jak je vidět, aliasy se uplatňují rekurzivně – ale nemusíte mít strach, systém je proti nekonečné smyčce dobře ochráněn.
Aliasy můžete také použít k eliminaci překlepů. Já například často místo make
napíšu maek
nebo mkae
. Výrazně jsem si urychlil práci zavedením aliasů:
alias maek=make alias mkae=make
Vždy, když se spletu, systém správně pochopí, co vlastně chci…
Občas se hodí vyrobit i alias na příkaz pro přechod do nějakého adresáře:
alias cdfl='cd /mnt/floppy' alias cdcd='cd /mnt/cdrom' alias cddoc='cd /usr/doc' alias cdetc='cd /etc'
Můžete namítnout, že pro takové účely je zde proměnná prostředí CDPATH
, ale jistě uznáte, že napsání cdfl
je podstatně kratší než cd floppy
…
(Do proměnné prostředí CDPATH
se ukládají celé cesty k oblíbeným adresářům. V příkazu cd
pak místo absolutní cesty stačí zadat jednoduché jméno oblíbeného adresáře.)
Mohli bychom pokračovat třeba mountováním:
alias mntfl='mount /mnt/floppy; cd /mnt/floppy' alias mntcd='mount /mnt/cdrom; cd /mnt/cdrom' alias umntfl='umount /mnt/floppy' alias umntcd='umount /mnt/cdrom'
Alias mntfl
namountuje disketu a rovnou do ní přejde. Stejně tak mntcd
, které mountuje pro změnu jednotku CD-ROM. Co dělají umntfl
a umntcd
, jistě dokážete uhodnout sami.
Chcete-li mít své aliasy k dispozici ihned po každém přihlášení, zapište je do souboru .bashrc
(pokud používáte jako shell BASH) ve svém domovském adresáři:
Soubor ~/.bashrc :
|
Od příštího spuštění příkazového interpretru je už budete mít zavedeny…
A to je pro dnešek vše. Máte-li sami nějaké nápady a vylepšení, se kterými byste se chtěli podělit s ostatními čtenáři, neváhejte a využijte diskuzní fórum k tomuto článku.