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

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Doplnění, opravy vzhledu)
(Přidán úkol a nadpisy grep a cut)
Řádka 89: Řádka 89:
  
 
* <code>cat</code>... čte vstup a opisuje data na výstup
 
* <code>cat</code>... čte vstup a opisuje data na výstup
* <code>grep</code>... čte vstup a opisuje na výstup jen řádky obsahující parametr.
+
* <code>grep</code>... čte vstup a opisuje na výstup jen řádky obsahující parametr. Viz [[#Filtr grep|samostatná kapitolka]].
 
* <code>less</code>... stránkování výstupu, ukončujeme stiskem „q“
 
* <code>less</code>... stránkování výstupu, ukončujeme stiskem „q“
 
  tar --help | less
 
  tar --help | less
Řádka 107: Řádka 107:
 
* <code>sort</code>
 
* <code>sort</code>
 
  cat /etc/passwd | cut -d : -f 1,5 | sort
 
  cat /etc/passwd | cut -d : -f 1,5 | sort
* <code>cut</code>
+
* <code>cut</code>... vybere jen některé sloupce z&nbsp;tabulky. Viz [[#Filtr <code>cut</code>|samostatná kapitolka]].
 
* <code>tee</code>... opisuje vstup na obrazovku i do souboru či do dvou souborů
 
* <code>tee</code>... opisuje vstup na obrazovku i do souboru či do dvou souborů
 
  $ date | tee file1 file2   
 
  $ date | tee file1 file2   
Řádka 130: Řádka 130:
 
  cat /dev/stdin
 
  cat /dev/stdin
 
  cat < /etc/passwd
 
  cat < /etc/passwd
 +
 +
 +
== Filtr <code>grep</code> ==
 +
 +
 +
== Filtr <code>cut</code> ==
  
  
Řádka 146: Řádka 152:
 
* Zobrazte seznam souborů v adresáři <tt>/bin</tt>. Pokud se výpis nevleze na obrazovku, zařiďte, aby se vypsala jen první obrazovka a výpisem šlo listovat (nahoru, dolů, o celé stránky, vyhledávat).
 
* Zobrazte seznam souborů v adresáři <tt>/bin</tt>. Pokud se výpis nevleze na obrazovku, zařiďte, aby se vypsala jen první obrazovka a výpisem šlo listovat (nahoru, dolů, o celé stránky, vyhledávat).
 
* Vypište uživatelská jména uživatelů registrovaných v systému s GNU/Linuxem. Každé jméno na jeden řádek.
 
* Vypište uživatelská jména uživatelů registrovaných v systému s GNU/Linuxem. Každé jméno na jeden řádek.
 +
 +
 +
== Úkoly ==
 +
# Proč nefunguje tento postup? Opravte:
 +
#* Výběr uživatelů se správnou doménou:
 +
echo Eduard; Karásek; karaed@seznam.cz; 48 > data.txt
 +
echo Karel; Seznamicz; karel@seznamicz.cr; 25 >> data.txt
 +
echo Jana; Dolanská; dolanska@centrum.cz; 37 >> data.txt
 +
cat data.txt | grep @seznam.cz
  
  
 
== Zdroje ==
 
== Zdroje ==
 
* [http://www.codecoffee.com/tipsforlinux/articles2/042.html codecoffee.com > Tips for Linux > Input/Output Redirection in Unix]
 
* [http://www.codecoffee.com/tipsforlinux/articles2/042.html codecoffee.com > Tips for Linux > Input/Output Redirection in Unix]

Verze z 5. 2. 2015, 07:04


„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.“

       Douglas McIlroy


Obsah

K čemu je přesměrování vstupů?


Procesy v Unixu a Linuxu

Přesměrování vstupů je vlastně způsob komunikace mezi procesy. Proces si můžeme představit jako černou skříňku s:

Vstup a výstup programů pak můžeme navzájem propojit.


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


Další příklady
cat /proc/meminfo
cat /proc/meminfo | head
cat /proc/meminfo | head -n 1 > memory.txt
cat /proc/meminfo | grep Free
cat /etc/passwd | grep student


Speciální soubory

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

Viz také: Významné složky GNU/Linuxu.


Filtry

Jako filtr označujeme program, který čte data ze standardního vstupu a zapisuje výsledky na standardní výstup. Typické unixové programy se tedy chovají jako filtry.

tar --help | less
head -n 1 /proc/meminfo
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


Hrátky — filtr cat;)

cat
cat > /dev/stdout
cat > pokus.txt
cat /dev/stdin
cat < /etc/passwd


Filtr grep

Filtr cut

Zopakujte si


Vyzkoušejte si


Úkoly

  1. Proč nefunguje tento postup? Opravte:
    • Výběr uživatelů se správnou doménou:
echo Eduard; Karásek; karaed@seznam.cz; 48 > data.txt
echo Karel; Seznamicz; karel@seznamicz.cr; 25 >> data.txt
echo Jana; Dolanská; dolanska@centrum.cz; 37 >> data.txt
cat data.txt | grep @seznam.cz


Zdroje

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