Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta –

Podobné prezentace


Prezentace na téma: "Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta –"— Transkript prezentace:

1 Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta – http://www.ms.mff.cuni.cz/~forst/) david.hoksza@mff.cuni.cz

2 standardní vstup/výstup standardní IO jsou reprezentovány standardními deskriptory souborů (file descriptor), s kterými by měly programy operovat /dev/tty*, /dev/console, /dev/pts/* stdin - 0 (klávesnice), stdout - 1 (obrazovka), stderr -2 (obrazovka) lze přesměrovat  odfiltrování chybových hlášek  ukládání dlouhého výstupu do souboru  potlačení libovolného výstupu  předpřipravení vstupu do souboru

3 přesměrování >  přesměruje standardní výstup  ls –l > dir_ouput.txt  echo “abcd” > /dev/pts/1  echo “abcd” > /dev/null >>  při existenci souboru bude proveden append <  přesměruje standardní vstup  wc –l < /etc/passwd program output lze definovat odkuď kam přesměrovávat  make > build_msg 2> error_msg  make > build_msg 2>&1

4 roury vstupy a výstupy programů lze řetězit za pomoci roury (pipe) program1 | program 2 | program 3 |… cat etc/passwd | tail - 10 | tr ‘[:lower:]’ ‘[:upper:]’ | cut –d: -f1

5 Úkol 1. Jaký je rozdíl mezi cat file >log 2>&1 cat file 2>&1 >log 2. Vypište do souboru všechny uživatele systému setříděné podle abecedy odzadu a k nim jejich skupiny oddělené od sebe tabulátorem (asi budete potřebovat alespoň jeden mezisoubor) 3. Setřiďte na obrazovku soubory v /etc (ne v podadresářích) od souboru s největším počtem řádku k souboru s nejmenším počtem řádků a na výstup vydejte dvojici s informací o jméně a počtu řádek 4. Viz. předchozí, ale vypište pouze jména souborů 5. Viz. předchozí, ale vypište pouze první třiVypište všechny uživatele systému velkými písmeny do souboru a obsahuje-li název písmena, tak je nahraďte za tečky a vypisujte pouze neduplicitní řádky 6. Najděte způsob pro vyprázdnění souboru s tím, že soubor musí zůstat zachována (použijte /dev/null)

6 Editor vi Visual editor vi [options] [filename] -R  read-only (přepisuje pouze je-li “přinucen”) +[N]  kurzor bude umístěn na N.tý řádek (poslední – není-li N zadáno) +/pattern  kurzor bude umístěn na první výskyt vzoru

7 Editor vi – schéma práce příkazový režim příkazový režim vstupu režim vstupu režim příkazů ex režim příkazů ex ( : ) q, ( : ) x ZZ i, a, I, A, o, O, s, S, c x, C, R, ( ^C ), :

8 Editor vi - pohyb šipky, pgDown, pgUP  nemusí fungovat na všech systémech a vzdálených konzolích!!! [N]k,[N]j  posun o N řádek nahoru/dolu [N]l, [N]h  posun o N znaků dopředu/dozadu [N]G  posun na N-tou (poslední) řádku [N]H  posun na N-tou (první) řádku na obrazovce [N]L  posun na N-tou (poslední) řádku na obrazovce od konce mZ  označení pozice znakem Z ´Z, `Z  skok na místo/začátek řádku pozice Z ´´, ``,  skok na místo/začátek řádku poslední pozice

9 Editor vi – přechod do vstupu i, a, I, A  zahájení editace před/za kurzor/řádku (insert, append) R  zahájení editace v replace módu o, O  zahájení editace po vložení řádky před/za aktuální řádku cc, C  zahájení editace po smazání řádky/do konce řádku s, S  zahájení editace po smazání znaku/řádku

10 Editor vi – mazání a práce s buffery x, X  smazání textu pod/před kurzorem dd, D  smazání řádky/do konce řádky smazaný text se ukládá do očíslovaných bufferů [N]pP  vložení N (jednoho) opakování bufferu před/za kurozor “np, “nP  vložení n-tého posledního bufferu [“Z]ym  vložení textu od kurzoru do místa daného příkazem pro pohyb h do bufferu (pojmenovaného Z) [“Z]yy  vložení řádky do bufferu (pojmenovaného Z) “Zp, “ZP  vložení bufferu pojmenovaného Z

11 Editor vi – další příkazy.  opakování posledního příkazu u  zruší poslední příkazy J  spojení řádek ~  zamění velké malé písmeno pod kurzorem rZ  změní znak pod kurzorem za Z z, z-  posunutí aktuální řádky nahoru/dolu Ctrl+g  info o poloze a stavu editovaného souboru %  skok na odpovídající závorku

12 Editor vi – hledání a nahrazení /pattern  nalezení vzoru – reguárního výrazu (pohyb pomocí n) /s/a/b/  nahradit výskyt a za b /s/a/b/g  nahradit každý (g = global) výskyt a za b /s/a/b/g  nahradit každý (g = global) výskyt a za b a každý potvrdit (c = confirmation)

13 Editor vi - ukončení :q[!]  ukončení bez uložení  byli-li provedeny změny, pak ! vynutí ukončení bez otázek :x[!] [file_name]  ukončení s uložením  byli-li provedeny změny při read-only, pak ! vynutí ukončení :w[!] [file_name]  uložení  byli-li provedeny změny při read-only, pak ! vynutí uložení

14 grep, egrep Vyhledání regulárního výrazu v řádcích e(xtended)grep umožňuje použití rozšířených regulárních výrazů [e]grep [options] file1 [file2, …]  -E egrep  -e pattern pattern je hledaný regulární výraz  -n před každou řádku její pořadové číslo  -r adresáře rekurzivně  -w shoda musí být celé slovo  -v invert – vyhledá řádky neobsahující slovo vyhovující podmínce  -x vyhledá řádky které přesně (jako celek) vyhovují podmínce

15 Regulární výrazy vyhledávání výrazů odpovídajících vzoru lehká podobnost s * a ? z DOSu vyhledávání s použitím metaznaků, kvantifikátorů, hranic, množin znaků, …

16 RV – jednoduché vyhledávání z  vyhledání výskytů znaku z abcd  vyhledání výskytů zřetězení znaků a, b, c, d.  zástupný znak za libovolný znak [z 1 z 2 z 3 z 3 ]  vyhovuje výskyt libovolného znaku z uvedené množiny [^z 1 z 2 z 3 z 3 ]  vyhovuje výskyt libovolného znaku různého od znaků z uvedené množiny [a-zA-Z]  vyhovuje libovolnému znaku z rozsahu a-z nebo A-Z \z  deaktivuje speciální význam znaku z (například tečky) |  operátor nebo  pattern 1 (pattern 2 |pattern 3 ) pattern 4 () jsou operátorem “přednosti” [][]

17 RV - skupiny znaků \d  číslice 0-9 \D  jakýkoliv znak kromě číslic 0-9 \w  znaky „slova” (ekvivalentní zápisu [a-zA-Z0-9]) \W  jakýkoliv znak kromě znaků „slova” (ekvivalentní zápisu [^a-zA-Z0-9]) \s  „bílé” znaky (mezera, tabulátor, znaky pro zalomení řádků) \S  jakýkoliv znak kromě „bílých” znaků [:alnum:]  alfanumerický znak (použití grep “\”[[:alnum:]]\”” file) [:space:]  mezera [:digit:]  číslice

18 RV - kvantifikátory *  minimálně 0krát (maximálně neomezeno) [\]?  minimálně 0krát, maximálně 1krát [\]+  minimálně 1krát (maximálně neomezeno) [\]{n [\]}  právě nkrát [\]{m,n [\]}  minimálně mkrát, maximálně nkrát [\]{m, [\]}  minimálně mkrát (maximálně neomezeno) kvantifikátory jsou hladové (zachytí maximální možnou odpovídající sekvenci) někdy lze nastavit líné vyhodnocování použitím otazníku za opakováním  x.+?x jistější  x[^x]+x

19 Příklady (jednoduché) cat|dog|mouse|fish colou?r  colour, color Set(Value)?  Set, SetValue ca*t  ct, cat, caat, caaat, ca…….at a\.*z  az, a.z, a..z, a….z, a. …..z a\+\+z  a++z ab{3,5}c  abbbc, abbbbc, abbbbbc.{3,5}pentane  cyclopentane, isopentane, neopentane \s[cmt]an\s  can, man, tan a[1-4-]z  a1z, a2z, a3z, a4z, a-z

20 RV – výrazy a jejich opakování [\](pattern[\])  uložení patternu do bufferu \N  použití N-tého bufferu  (abcd)x(ab)\1y\2  ([0-9]{2,4})\.([0-9]{5})xxx\1\*\2

21 RV - hranice ^  začátek řádku $  konec řádku \b  začátek nebo konec slova \<  začátek slova \>  konec slova

22 Příklady Nalezení emailových adres na řádce  ^[A-Za-z0-9._-]+@[A-Za-z0-9.-]+$ Nalezení dosovských cest k programům  [A-Z]:(\\[A-Z0-9_]+)+ Nalezení reálných čísel  (\+|-)?[1-9][0-9]*(\.[0-9]*)? Nalezení HTML tagů  ]*>.*?

23 Úkol 1. vytvořte textový soubor kde v obsahu bude mimo jiné “x+y=(23*5)” a vytvořte regulární výraz, který najde právě tento výraz 2. Co je nalezeno výrazem [[]] ? 3. Vyhledejte všechny čísla v textu 4. Vyhledejte v textu všechna rodná čísla. 5. Vyhledejte v textu všechny výskyty IP adres. 6. Vylepšete příklad s vyhledáním emailových adres, aby rozpoznával v části za @ formát xxx.yyyy (yyyy jsou 2-4 znaky)

24 sed (1) stream editor čte vstupní proud (defaultně po řádcích) a transformuje ho pomocí regulárních výrazů na výstupní sed format_str file1 [file2 …] sed –r  rozšířené regulární výrazy

25 sed (2) sed ‘s/pat1/pat2/’ file  nahradí první výskyt na řádce pat1 za pat2  sed ‘s/[0-9][0-9]*/_/’ file  sed "s/function\s* \b\([a-z]*\)\b/#function \1\nfunction \1/g" *.c sed ‘s/pat1/pat2/g’ file  dtto golbálně (na všechny výskyty)  sed 's/\([a-z]*\)\1/\1/g' sed -n ‘s/pat1/pat2/p’ file  -n … na výstup nejdou žádné nové řádky  vypisuje pouze řádky obsahující pat1 (zasubstitovanou pat2) sed ‘s/pat1/pat2/w wfile’ file  dtto do souboru wfile akce lze kombinovat  sed –n ‘s/pat1/pat2/gw wfile’ file

26 sed (3) složení příkazů  sed -e 's/a/A/' -e 's/b/B/' file smazání řádky s výrazem  sed ‘/pat/ d’ file  obecně lze sed ‘/pat/ action’ file přidání řádky před/za/místo řádky s výrazem  sed ‘/pat/ i new line text’ file  sed ‘/pat/ a new line text’ file  sed ‘/pat/ c new line text’ file

27 sed (4) – omezení řádků omezení na 1 řádku  sed “14 s/pat1/pat2/” file omezení na množinu řádku  sed “4,100 s/pat1/pat2/g” file omezení řádek výrazy  sed “/start/,/stop/ s/pat1/pat2/” file  sed “/start/,/stop/ d” file transforamce  sed '/\d\d*/ y/abc/ABC' file

28 Úkol 1. Nahraďte všechny výskyty slova black za white 2. Smažte první 2 řádky souboru 3. Smažte jednořádkové C komentáře (začínají // a pokračují do konce řádku) 4. Viz. předchozí, ale pokud komentář začína na začátku řádky, tak také smazat danou řádku (tj. po minulém příkladě můžou zbýt prázdné řádky a tyto odstranit) 5. Vypište do souboru sudy řádky souboru začínající na sudé číslo


Stáhnout ppt "Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta –"

Podobné prezentace


Reklamy Google