Root.cz - Triky pro zacatecniky 6

Transkript

Root.cz - Triky pro zacatecniky 6
Root.cz - Triky pro zacatecniky 6
Page 1 of 3
Triky pro zacatecniky 6
28.08.2000
Posledne jsem trochu nakousnul presmerovani standardniho vstupu a vystupu. Dnes si tuto vybornou
vlastnost probereme trochu dukladneji. Predem ale upozornuji, ze se uvedene priklady budou tykat
predevsim bashe a v jinych shellech (Korn shell, C shell) vam nemusi fungovat (vetsinou budou).
Predstavte si situaci, kdy potrebujete zachytit vysledek prikazu do souboru, abyste si jej mohli
pozdeji prohlednout ci nejak zpracovat. Napriklad instalujete program ze zdrojovych textu a chcete
vedet, co pri tom dela. Nejjistejsim zpusobem je prohlednout si Makefile, ale nektere rozsahle
produkty maji nemene dlouhe Makefily a navic, pokud neznate syntaxi tohoto uzitecneho souboru,
stejne nic nepochopite. Pokud instalace probiha neinteraktivne (instalator se vas na nic nepta), staci
napsat make install > vystup. V souboru vystup pak najdete vse, co se pri instalaci zapisovalo na
standardni vystup. Pak jiz neni problem hledat spousteni prikazu install, cp, mv, rm, chmod apod.
Ted uz vite, ze jeden znak vetsitka () presmeruje standardni vystup z programu do souboru. Vetsina
unixovych filtru spoleha na toto chovani. Takze pokud chcete vytvorit animovany gif, pouzijete neco
jako gifsicle -lforever -d110 -O2 out*gif > banner.gif. Velky pozor si ale musite davat, pokud
manipulujete s jedinym souborem. Pokud chcete provest transformaci na souboru, NESMITE vystup
z filtru presmerovat do stejneho souboru, ktery se zaroven pouziva pro vstup dat. Shell totiz jeste
pred spustenim prikazu vytvori vystupni soubor a pokud existuje, zkrati jeho velikost na nulu. Takze
napriklad pouziti prikazu cstocs 1250 il2 soubor.txt > soubor.txt se rovna ztrate vsech dat v danem
souboru. Spravny tvar vyse zmineneho prikazu je cstocs 1250 il2 soubor.txt > soubor.tmp; mv
soubor.tmp soubor.txt a prevede soubor v kodovani Windows do kodovani ISO-8859-2, ktere
pouziva Linux. Jeste ted si vzpominam na okamzik, kdy jsem poprve objevil toto chovani shellu.
Tehdy jsem nekolik dnu rucne upravoval naskenovany obrazek a pak jsem v nem chtel zmenit jednu
barvu na pruhlednou prikazem giftrans ...
Vetsitko se da pouzit i na vytvareni prazdnych souboru ci mazani obsahu existujicich souboru. Prikaz
> soubor.txt vytvori soubor soubor.txt o velikosti 0 bytu. Pokud tento soubor existoval, bude jeho
delka zkracena na 0 bytu. Toho se da uspesne vyuzit na mazani logovacich souboru, pokud
nepouzivate sofistifikovanejsi reseni logrotate. Napriklad je uz soubor .xsession-errors prilis
dlouhy? Zkratme jej prikazem > .xsession-errors. Mohli bychom sice pouzit rm, ale nektere
programky spatne nesou neexistenci svych souboru.
Nebyl by to Unix, kdyby neexistovala i jina cesta, jak vytvorit prazdny soubor a tou je prikaz touch.
Touch dela presne to, co napovida jeho nazev, tedy dotkne se souboru, zmeni cas posledniho
pristupu a posledni zmeny na soucasnost, ale jinak soubor nemeni, ani nemaze. Pouze pokud soubor
neexistuje, tak jej vytvori (prazdny, ovsem). Maly priklad syntaxe vam ukaze, jak se muzete
dotknout nebe :-) : touch nebe.
Nekdy se vam ale nemusi hodit chovani vetsitka, ktere vzdy prepisuje soubor. Treba byste byli
spokojenejsi, kdyby se novy obsah pripsal na konec souboru. Zadny problem, misto jednoho vetsitka
pouzijte vetsitka dve. Napriklad cat hesla.txt >> jak_se_stat_crackerem.txt pripoji obsah souboru
hesla.txt na konec souboru jak_se_stat_crackerem.txt.
http://www.root.cz/print.phtml?id=459
8/8/2002
Root.cz - Triky pro zacatecniky 6
Page 2 of 3
Mozna trochu programujete a tak vas napadlo, ze pokud je mozne presmerovat standardni vystup,
musi jit presmerovat i standardni chybovy vystup. Trefa. Jde to. Jedinou zmenou oproti normalnimu
presmerovani je pridani cisla 2 pred vetsitko. Napriklad prikaz make 2> chyby.txt ulozi do souboru
chyby.txt hlaseni vsech chyb pri kompilaci. Pro zajimavost vam ukazu skript, ktery pouzivam pri
kompilovani jadra:
#!/bin/bash
cd /usr/src/linux
make clean
make dep
echo "make bzImage" > chyba_kompilace
make bzImage 2>> chyba_kompilace || exit 1
beep
echo "make modules" >> chyba_kompilace
make modules 2>> chyba_kompilace || exit 1
beep
echo "make modules_install" >> chyba_kompilace
make modules_install 2>> chyba_kompilace || exit 1
echo "Done." >> chyba_kompilace
beep
Po skonceni si staci prohlednout soubor chyba_kompilace a hned vidim vsechna varovani i chyby.
Beep je mala utilitka, ktera vyloudi skreky ze systemoveho reproduktoru. Pokud ma o ni nekdo
zajem, pak ma smulu, o zdrojaky jsem prisel a uz si nepamatuji, jak jsem ji vytvoril. Pokud
nepotrebujete videt standardni chybovy vystup, tak jej presmerujte do /dev/null, kde se zarucene
ztrati.
Nekdy se hodi presmerovat do souboru jak standardni vystup, tak i standardni chybovy vystup. V
bashi staci dat pred vetsitko ampersand: &, napriklad ls -l neexistujici_soubor /tmp &>vystup.txt.
Kdyz je mozne si takhle hrat s presmerovanim vystupu z prikazu, musi to jit i se vstupem. Jednoduse
napisete za prikaz mensitko a nazev souboru, ktery ma nahradit standardni vstup. Program pak
nebude cist pokyny ci data z terminalu, ale ze zvoleneho souboru. Kdysi jsem napriklad takto ovladal
ftp. Vytvoril jsem si soubor s obdobnym obsahem:
open sunsite.mff.cuni.cz
user anonymous
password [email protected]
cd /pub/OS/Linux/kernel/v1.2
bin
get linux-1.2.13.tar.gz
quit
Pak jsem spustil prikaz at midnight a napsal na standardni vstup ftp < prikazy.txt. O pulnoci pak
demon atd spustil ftp klienta a ten si precetl ma prani z urceneho souboru (za jeho obsah nerucim, uz
jsem to dlouho nezkousel a na lokale ftp server nemam).
To je pro dnesek vse, priste se podivame na nektere dalsi prikazy, napriklad at a tee. Jeste si na zaver
neodpustim skrytou reklamu: informace, jak nastavovat a zprovoznovat hardware hledejte na serveru
[http://hardware.penguin.cz] Linux Hardware.
http://www.root.cz/print.phtml?id=459
8/8/2002
Root.cz - Triky pro zacatecniky 6
Page 3 of 3
Autor: Leos Literak ([email protected])
Oblast: Praxe
http://www.root.cz/print.phtml?id=459
8/8/2002

Podobné dokumenty

Jemný úvod do shellů II

Jemný úvod do shellů II K přesměrování výstupu slouží znaménko ’>’. Příkladem může být následující zápis: $ ls > vypis.txt Tento zápis způsobí že vše, co by se vypsalo na STDOUT, skončí v souboru vypis.txt. Chybová hlášen...

Více

Hacking, cracking a warez

Hacking, cracking a warez Oba tyto zakladni principy jsou mezi hackery siroce, i kdyz nikoli vseobecne, prijimany. Vetsina hackeru se hlasi k hackerske etice v prvnim zde uvedenem vyznamu a naplnuje jeji vyznam psanim a zve...

Více

Root.cz - Triky pro uz ne zacatecniky

Root.cz - Triky pro uz ne zacatecniky zcela novou verzi programu XY ve verzi 0.1. Celi zhavi jste spustili tento program, ale jake bylo vase zklamani, kdyz se misto XAw (X Athena Widget - puvodni knihovna pripravku projektu XFree) apli...

Více

Úvod do Programování

Úvod do Programování Naštěstí nám operační systém (budeme teď chvíli mluvit konkrétně o Windows) umožňuje to, co program vypisuje, velmi jednoduše zapsat do textového souboru. Jak?7 Spustíme si příkazový řádek – v nabí...

Více

Fórum DreamServeru - DreamServer - WoW server

Fórum DreamServeru - DreamServer - WoW server 1.Jabber stahnete na: http://sourceforge.net/projects/psi/files/Psi/0.14/psi-0.14-win-setup.exe/download 2.Instalujte ho. 3.Pak vam tam vyskoci par tabulek vsechny vypnete. 4.Nechte tam jen pouhy p...

Více

U´lozˇisˇteˇ digita´lnıch dat pro potreby U´K VSˇB-TU

U´lozˇisˇteˇ digita´lnıch dat pro potreby U´K VSˇB-TU školy báňské – Technické univerzity Ostrava, která by pomocı́ něho zpřı́stupňovala digitálnı́ verze naskenovaných článků ze sbornı́ků vědeckých pracı́ a elektronické verze kvalifi...

Více