Vstup a výstup procesů, přesměrování

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Speciální soubory: Doplněn význam)
m (Varianty přesměrování: Změna vzhledu příkladů)
Řádka 36: Řádka 36:
 
*: Výstup procesu budeme zapisovat do souboru <tt>soubor</tt>.
 
*: Výstup procesu budeme zapisovat do souboru <tt>soubor</tt>.
 
*: Pokud soubor neexistuje, vytvoří se. Pokud soubor již existuje, nová data přepíší ta, která v něm byla.
 
*: Pokud soubor neexistuje, vytvoří se. Pokud soubor již existuje, nová data přepíší ta, která v něm byla.
*: Příklad: <tt>ls -l > ~/obsah_adresare.txt</tt>
+
ls -l > ~/obsah_adresare.txt
 
* <tt>program '''>>''' soubor</tt>
 
* <tt>program '''>>''' soubor</tt>
 
*: Stejně jako předchozí, ale pokud soubor již existuje, nově zapisovaná data se připojí na konec souboru.
 
*: Stejně jako předchozí, ale pokud soubor již existuje, nově zapisovaná data se připojí na konec souboru.
*: Příklad: <tt>echo "Druhy adresar:" >> ~/obsah_adresare.txt<br />ls druhy -l >> ~/obsah_adresare.txt</tt>
+
echo "Druhy adresar:" >> ~/obsah_adresare.txt
 +
ls druhy -l >> ~/obsah_adresare.txt
  
 
; Přesměrování chybového výstupu do souboru
 
; Přesměrování chybového výstupu do souboru
 
* <tt>program '''2>''' soubor</tt>
 
* <tt>program '''2>''' soubor</tt>
 
*: Chyby, které vypisuje program <tt>program</tt> se zapisují do souboru <tt>soubor</tt>.
 
*: Chyby, které vypisuje program <tt>program</tt> se zapisují do souboru <tt>soubor</tt>.
*: Příklad: <tt>cp a b 2> /dev/null</tt>
+
cp a b 2> /dev/null
*: Příklad: <tt>mv archiv.tar.gz zalohy 2> ~/zaloha_chyby.log</tt>
+
mv archiv.tar.gz zalohy 2> ~/zaloha_chyby.log
  
 
; Přesměrování standardního vstupu
 
; Přesměrování standardního vstupu
Řádka 55: Řádka 56:
 
*: Roura (anglicky pipe). Slouží k propojení dvou procesů.
 
*: Roura (anglicky pipe). Slouží k propojení dvou procesů.
 
*: Spustí se <tt>program2</tt>. Jako vstup dostane „konec roury“ (anglicky pipe). Pak se spustí program <tt>program1</tt>. Výstup z programu <tt>program1</tt> se posílá do „roury“ a <tt>program2</tt> ho dále zpracovává.
 
*: Spustí se <tt>program2</tt>. Jako vstup dostane „konec roury“ (anglicky pipe). Pak se spustí program <tt>program1</tt>. Výstup z programu <tt>program1</tt> se posílá do „roury“ a <tt>program2</tt> ho dále zpracovává.
*: Příklad: <tt>ls | sort | head</tt>
+
ls | sort | head
*: Příklad: <tt>cat /etc/passwd | cut -d : -f 1 | sort</tt>
+
cat /etc/passwd | cut -d : -f 1 | sort
  
 
== Speciální soubory ==
 
== Speciální soubory ==

Verze z 20. 1. 2012, 09:34


„Write programs that do one thing and do it well.
  Write programs to work together.
  Write programs that handle text streams, because that is an universal interface.“

(McIlroy)

Obsah

K čemu to je? (modelová situace)

Poznámka

Vlastně se tedy jedná o způsob komunikace mezi procesy.

Hrátky: program cat

Varianty přesměrování

Přesměrování standardního výstupu do souboru
ls -l > ~/obsah_adresare.txt
echo "Druhy adresar:" >> ~/obsah_adresare.txt
ls druhy -l >> ~/obsah_adresare.txt
Přesměrování chybového výstupu do souboru
cp a b 2> /dev/null
mv archiv.tar.gz zalohy 2> ~/zaloha_chyby.log
Přesměrování standardního vstupu
Propojení programů
ls | sort | head
cat /etc/passwd | cut -d : -f 1 | sort

Speciální soubory

Virtuální soubory reprezentující standardní vstup a výstup
Pomocné
cp ~/ahoj.txt /home/student/ahoj.txt 2> /dev/null

Pojmy

Roura jako způsob komunikace mezi procesy

Příklady

Filtry

tar --help | less
tail /var/log/apache2/error_log
ls | wc -l
tar -c * | gzip > archiv.tar.gz
tar -czf archiv.tar.gz *
tar -xzf archiv.tar.gz
cat /etc/passwd | cut -d : -f 1,5 | sort
$ date | tee file1 file2   
Thu Jun 10 11:10:34 CEST 2004
$ cat file1   
Thu Jun 10 11:10:34 CEST 2004

Zopakujte si

Vyzkoušejte si

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje