Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Chytrému napověz i podruhé...

Před časem vyšel na Rootu článek ukazující možnosti zjednodušení práce s počítačem pomocí skriptování a setkal se s takovým ohlasem, že by byl hřích neudělat pokračování. Tak tedy, pohodlně se usaďte a nechte si napovědět i podruhé...

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious
Číslování souborů

V minulém dílu jsem uveřejnil dvě utilitky sloužící k přejmenovávání souborů. Ani dnes si jednu neodpustím:

Tabulka č. 96
Soubor num: #!/usr/bin/perl
use locale;

if (@ARGV < 4) {
  print "Použití: num <prefix> <postfix> <od> <soubory>... ";
  exit;
}

$prefix = shift(@ARGV);
$postfix = shift(@ARGV);
$from = shift(@ARGV);

foreach $file (@ARGV) {
  $new = sprintf("%s%04d%s", $prefix, $from, $postfix);
  $from++;
  if (!-e $new) {
    rename $file, $new;
  }
}

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

Tabulka č. 97
Soubor rmcore:

#!/bin/bash

DEST=${1:-"/"}
find "$DEST" -name core -and -type f -exec rm -i {} ;

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:

TIB2012

       
Tabulka č. 98
Soubor ~/.bashrc:

alias maek=make
alias mkae=make
alias mntfl='mount /mnt/floppy; cd /mnt/floppy'
alias mntcd='mount /mnt/cdrom; cd /mnt/cdrom'

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.

Michal Burda

Michal Burda

Michal Burda vystudoval informatiku a aplikovanou matematiku a nyní pracuje na Ostravské univerzitě jako odborný asistent. Zajímá se o data mining, Javu a Linux.

Školení: Zavedení Google Apps do firmy

Cílem školení je provést účastníky jednotlivými kroky zavedení Google Apps na vlastní doménu a seznámit je se základy administrace, aby byli schopni Google Apps sami udržovat a rozvíjet dle potřeb. Účastníci se také dozví, jak používat základní služby v balíku Google Apps (Gmail, Kalendář, Dokumenty a Weby Google) a jaké jsou možnosti jejich využití ve firmě.

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 2,88

Přehled názorů

Scriptová banka
Mikeš 13. 2. 2001 08:09
Nový
Překlepy na příkazové řádce
Pavel Satrapa 13. 2. 2001 08:50
Nový
└ 
Re: Překlepy na příkazové řádce
Michal Krause 13. 2. 2001 10:49
Nový
Shell nebo PERL pro zacatecnika
Michal 13. 2. 2001 10:45
Nový
├ 
Re: Shell nebo PERL pro zacatecnika
Jarda 13. 2. 2001 12:32
Nový
├ 
Re: Shell nebo PERL pro zacatecnika
Michal Burda 13. 2. 2001 21:51
Nový
├ 
Re: Shell nebo PERL pro zacatecnika
Pavel Kriz 13. 2. 2001 22:12
Nový
└ 
Re: Shell nebo PERL pro zacatecnika
Bob Blade 21. 2. 2001 13:44
Nový
Par drobnosti
Milos Dedecek 13. 2. 2001 11:45
Nový
└ 
Re: Par drobnosti
Michal Burda 13. 2. 2001 21:59
Nový
bez titulku
Miro Tankovic 13. 2. 2001 11:52
Nový
Dobrý článek
Michal Poupa 13. 2. 2001 12:37
Nový
rename z debianovskeho perlu
Matus Uhlar 15. 2. 2001 09:24
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem