Uživatelské nástroje

Nástroje pro tento web


znaky-a-vyrazy

Znaky a výrazy


SPECIÁLNÍ ZNAKY (metaznaky) mají zvláštní význam, interpretem je shell
$ 1) prompt (výzva), vyjadřuje připravenost shellu k přijetí příkazu; jde o výchozí označení pro běžného uživatele
2) hodnota proměnné
$ auto=jeep
$ echo $auto
jeep
# 1) prompt (výzva), vyjadřuje připravenost shellu k přijetí příkazu; jde o výchozí označení pro uživatele root
2) komentář v konfiguračních souborech či skriptech (každý takto uvozený řádek je systémem ignorován)
\ zpětné lomítko, značí zalomení řádku textu
> znaménko „větší než“, značí pokračování řádku textu
- pomlčka, čte data ze STDOUT
$ gzip -cd soubor.tar.gz | tar -xf -
-- dvě pomlčky, značí ukončení voleb příkazu, následující řetězec je považován za argument
$ mkdir -- -dir
(vytvoří adresář „-dir“; obdoba je mkdir ./-dir)
; středník, značí konec příkazu
$ cd /usr/sbin; ls -la
& ampersand, spustí příkaz paralelně na pozadí, aniž by blokoval příkazový řádek (vhodné zejména pro větší úlohy)
&<n> indikátor souborového popisovače
&& dvojitý ampersand, spustí druhý příkaz, jen pokud první skončí úspěšně (resp. vrátí nulový návratový kód)
$ mount /mnt/fd && cp -R /mnt/fd /home/uzivatel/xxx/ && umount /mnt/fd
|| dvojitá roura, spustí druhý příkaz, jen pokud první skončí neúspěšně (resp. vrátí nenulový návratový kód)
$ cd ~/.ssh 2> /dev/null || mkdir ~/.ssh
(<seznam>) kulaté závorky pro seskupování příkazů (příkazy se provedou v kopii shellu)
$ (a; b) & c &
(příkazy „a“ a „b“ se provedou na pozadí sekvenčně, tzn. jeden za druhým, příkaz „c“ paralelně)
$ (sleep 30m; echo "konec smeny") &
{ <seznam>;} složené závorky pro seskupování příkazů (příkazy se provedou v aktuálním shellu)
$ { a; b;} & c &
(příkazy „a“ a „b“ se provedou na pozadí sekvenčně, tzn. jeden za druhým, příkaz „c“ paralelně)
$ cd users || { mkdir users; cd users;}
ZNAKY PŘESMĚROVÁNÍ přesměrují standardní vstup / výstup / error příkazu
< / 0< přesměrování standardního vstupu (STDIN / souborový popisovač 0)
$ mail tom@atlas.cz < seznam.txt
> / 1> přesměrování standardního výstupu (STDOUT / souborový popisovač 1)
$ ls -la > obsah_adresare.txt
(výstup příkazu zapíše do daného souboru, který zároveň vytvoří, pokud existuje, přepíše jeho obsah)
$ cat soub1 | tee soub2 > soub3
(výstup příkazu zapíše do více souborů současně)
$ wc -l < report > /tmp/lines
(počet řádků souboru „report“ se zapíše do „/tmp/lines“)
2> přesměrování chybového výstupu (STDERR / souborový popisovač 2)
$ cat soubor1 soubor2 > soubor3 2> /dev/null
(chybový výstup příkazu se zahodi)
$ make all 2> /dev/pts/3
(chybový výstup zobrazí v jiném terminálu)
2>&1 přesměrování chybového výstupu na standardní výstup (záleží však na pořadí přesměrování STDOUT)
$ ls sb1 sb2 > sb3 2>&1 / ls sb1 sb2 &> sb3
(STDOUT i STDERR se zapíše pouze do sb3)
$ ls soub1 soub2 2>&1 > soub3
(STDERR vypíše na obrazovku a STDOUT do soub3)
$ make all 2>&1 | less
(vhodné pokud proces vypisuje více chybových hlášení)
>> přesměrování standardního výstupu na konec souboru
$ tail /var/log/messages >> logs.txt
(výstup příkazu přidá na konec daného souboru, pokud neexistuje, vytvoří ho)
2>> přesměrování chybového výstupu na konec souboru
# fsck /dev/sda1 2>> error
<<EOF přesměrování standardního vstupu ze souboru (skriptu)
#!/bin/bash
mail $user <<EOF
<text>
EOF
(přesměruje text ze skriptu až po zvolený řetězec „EOF“ na STDIN příkazu „mail“)
$ cat <<END
> Jsem $LOGNAME. <-'
> END <-'
(interaktivní forma)
| roura, přesměruje výstup jednoho příkazu ke zpracování na vstup příkazu dalšímu
$ cat notes | grep linux
(vypíše všechny řádky souboru obsahující slovo „linux“)
$ ls -l | grep "^d" | wc -l
(vypíše počet podadresářů v pracovním adresáři)
tee <soubor> čte STDIN, jehož výstup zobrazí na STDOUT a zároveň zapíše do daných souborů, -a nepřepíše obsah souboru, výstup přidá na jeho konec
$ ls -l | tee /tmp/test | wc -l
(výstup příkazu „ls“ zapíše do souboru „/tmp/test“, na STDOUT zobrazí pouze počet řádků)
$ who | sort | tee -a log1 log2
(setříděný výstup příkazu „who“ zapíše jak na STDOUT, tak do souborů „log1“ a „log2“)
ZÁSTUPNÉ ZNAKY slouží pro specifikaci jmen souborů
* hvězdička, zastupuje libovolný počet jakýchkoliv znaků včetně mezery, kromě výrazů začínajících tečkou
# rm -Rf /*
(smaže celý systém)
$ ls *' '*
(vypíše z aktuálního adresáře soubory obsahující mezeru v názvu)
? otazník, zastupuje právě jeden libovolný znak včetně mezery, kromě výrazů začínajících tečkou
# find / -name "*.19??"
(najde všechny soubory s příponou „.19xx“)
[...] hranaté závorky, definují právě jeden z uvedených znaků, jenž má či nemá daný výraz obsahovat; pro označení intervalu znaků se užívá „-“ (např. [A-Z], [a-z] nebo [0-9]), pro negaci výčtu znaků slouží „!“
$ ls -l text_[ab].txt
(vypíše údaje o souborech „text_a.txt” a „text_b.txt”)
$ ls -l text_*[ab]*.txt
(vypíše soubory obsahující v názvu kombinaci daných znaků)
$ rm -f .[!.]*
(smaže všechny skryté soubory v aktuálním adresáři)
{...} složené závorky, definují řetězec (řetězce oddělené čárkou), jenž má daný výraz obsahovat; řetězec může předcházet tzv. preambule a následovat tzv. postscript, který je přidán ke každému z výrazů
$ mkdir p{an,lo,ru}t
(vytvoří adresáře „pant”, „plot” a „prut”)
$ mv text{1,2,3,4,5}.txt text_0{1,2,3,4,5}.txt
$ touch .{a,b,c,d,e}
(vytvoří skryté soubory daných jmen)
$ touch {1..100}
(vytvoří sto souborů)
$ echo {A..Z} {a..z} {0..9}
(zobrazí interval daných znaků)
$ echo {A..Z}{a..z}{0..9}
(zobrazí trojmístné kombinace znaků v daném pořadí)
`<seznam>` / $(<seznam>) apostrofy, příkaz uvnitř je zpracován a nahrazen svým výstupem
$ pracovni_adresar=`pwd`
$ echo $pracovni_adresar
/home/kuba
(první příkaz definuje proměnnou „pracovni_adresar”, druhý vypíše její hodnotu)
$ ls -l `which java` / ls -l $(which java)
(výstup příkazu „which java” se předá příkazu „ls -l”)
ZNAKY VÝLUKY potlačují význam speciálních znaků
\ zpětné lomítko, brání interpretaci následujícího znaku shellem
$ echo \$auto
$auto
'...' jednoduché uvozovky, brání interpretaci jakéhokoliv řetězce shellem; jednoduché uvozovky však do sebe samých uzavřít nelze
$ echo '$auto'
$auto
$ echo ''$auto''
jeep
"..." dvojité uvozovky, obdoba jednoduchých, avšak povolují interpretaci zástupných znaků a znaků „$“ a „`“, „\“ má svůj řídící význam pouze tehdy, následuje-li znak „$“, „"“, „`“, „\“ a nový řádek; dvojité uvozovky však do sebe samých uzavřít nelze
# find / -type d -name "[A-Z]*"
$ echo "`pwd`"
/home/kuba
$ echo "$auto"
jeep
$ echo "\$auto"
$auto
$ echo ""$auto""
jeep


REGULÁRNÍ VÝRAZY (rozšířené) specifikují daný řetězec v textu, interpretem je program
speciální znaky: určují charakter výrazu
. tečka, zastupuje libovolný jeden znak včetně mezery
[...] hranaté závorky, definují právě jeden znak z daného výčtu povolených či zakázaných znaků, „^” na začátku závorek zakazuje znaky, „-“ značí interval znaků
(...) kulaté závorky, definují celý výraz
| roura, znamená „nebo“, odděluje hledané výrazy
\ zpětné lomítko, snižuje význam následujícího speciálního znaku
poziční znaky: definují pozici výrazu
^ stříška, značí začátek řádku
$ dolar, značí konec řádku
\<...\> potlačené lomené závorky, definují daný řetězec
kvantifikátory: uvádí počet opakování předchozího výrazu
? otazník, min. 0-krát, max. 1-krát
* hvězdička, min. 0-krát, max. neomezeně
+ plus, min. 1-krát, max. neomezeně
{n} výraz ve složených závorkách, právě n-krát
{m,n} výraz ve složených závorkách, min. m-krát, max. n-krát
{m,} výraz ve složených závorkách, min. m-krát
{,n} výraz ve složených závorkách, max. n-krát
regulární výraz: odpovídá:
a. „a“ + jakýkoliv jeden znak
a+b „ab“, „aab“, „aaab“ ...
a\+b „a+b“
o?hon „ohon“ či „hon“
auto(mobil)? „auto“ či „automobil“
mikro(fon|skop) „mikrofon“ či „mikroskop“
^(odkud|kam): řádek začínající řetězcem „odkud:“ nebo „kam:“
ha{1,3} „ha“ či „haha“ či „hahaha“
<T[DH]> „<TD>“ či „<TH>“
\<a.*a\> řetězec začínající i končící písmenem „a“
\[[a-zA-Z]\] libovolné písmeno uzavřené v „[]“
[0-9]+ alespoň jedna číslice
[0-9]|[1-9][0-9] interval čísel „0“ - „99“
[0-9]{2} interval čísel „00“ - „99“
(19|20)[0-9]{2} interval čísel „1900“ - „2099“
[0-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]+ hexadecimální čísla
^$ prázdný řádek
[.^az\-] tečka, stříška, „a“, „z“, zpětné lomítko či pomlčka
[^ ,.]+ řetězec znaků neobsahující mezeru, čárku, ani tečku
.+0$ řádek končící znakem „0“, jemuž předchází min. 1 znak
^P.*(0[1-9])$ řádek začínající znakem „P“ a končící znaky „01“ - „09“
[+0-9 /-]{9,} jakékoliv telefonní číslo
[a-zA-Z0-9_.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} jakákoliv e-mailová adresa
(https?://)?(w{3}\.)?[a-zA-Z0-9.-]+\.[^ ]{2,} jakákoliv webová adresa
Poslední úprava: 2015/07/23 15:24 autor: Miroslav Bernát

Nástroje pro stránku

počet návštěv: