+ All Categories
Home > Documents > Úvod do UNIXu ( 4 th round)

Úvod do UNIXu ( 4 th round)

Date post: 21-Jan-2016
Category:
Upload: laird
View: 33 times
Download: 0 times
Share this document with a friend
Description:
Ú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/) [email protected]. standardn í vstup /v ýstup. - PowerPoint PPT Presentation
28
Ú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
Transcript
Page 1: Úvod do UNIXu ( 4 th  round)

Úvod do UNIXu (4th 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/)

[email protected]

Page 2: Úvod do UNIXu ( 4 th  round)

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

Page 3: Úvod do UNIXu ( 4 th  round)

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 < input > output lze definovat odkuď kam přesměrovávat

make > build_msg 2> error_msg make > build_msg 2>&1

Page 4: Úvod do UNIXu ( 4 th  round)

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

Page 5: Úvod do UNIXu ( 4 th  round)

Ú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)

Page 6: Úvod do UNIXu ( 4 th  round)

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

Page 7: Úvod do UNIXu ( 4 th  round)

Editor vi – schéma práce

příkazový

režim

příkazový

režim

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,cx, C, R

<ESC>,(^C)

<LF>, <Bkspc>

:

Page 8: Úvod do UNIXu ( 4 th  round)

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

Page 9: Úvod do UNIXu ( 4 th  round)

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

Page 10: Úvod do UNIXu ( 4 th  round)

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

Page 11: Úvod do UNIXu ( 4 th  round)

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<LF>, z- posunutí aktuální řádky nahoru/dolu

Ctrl+g info o poloze a stavu editovaného souboru

% skok na odpovídající závorku

Page 12: Úvod do UNIXu ( 4 th  round)

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)

Page 13: Úvod do UNIXu ( 4 th  round)

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í

Page 14: Úvod do UNIXu ( 4 th  round)

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

Page 15: Úvod do UNIXu ( 4 th  round)

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ů, …

Page 16: Úvod do UNIXu ( 4 th  round)

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 [z1z2z3z3]

vyhovuje výskyt libovolného znaku z uvedené množiny [^z1z2z3z3]

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 pattern1(pattern2|pattern3) pattern4

() jsou operátorem “přednosti”

[][]

Page 17: Úvod do UNIXu ( 4 th  round)

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

Page 18: Úvod do UNIXu ( 4 th  round)

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

Page 19: Úvod do UNIXu ( 4 th  round)

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

Page 20: Úvod do UNIXu ( 4 th  round)

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

Page 21: Úvod do UNIXu ( 4 th  round)

RV - hranice

^ začátek řádku

$ konec řádku

\b začátek nebo konec slova

\< začátek slova

\> konec slova

Page 22: Úvod do UNIXu ( 4 th  round)

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ů <([A-Z][A-Z0-9]*)\b[^>]*>.*?</\1>

Page 23: Úvod do UNIXu ( 4 th  round)

Ú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 textu4. 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)

Page 24: Úvod do UNIXu ( 4 th  round)

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

Page 25: Úvod do UNIXu ( 4 th  round)

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

Page 26: Úvod do UNIXu ( 4 th  round)

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

Page 27: Úvod do UNIXu ( 4 th  round)

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

Page 28: Úvod do UNIXu ( 4 th  round)

Úkol

1. Nahraďte všechny výskyty slova black za white2. Smažte první 2 řádky souboru3. 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


Recommended