Úvod do UNIXu ( 3 rd round)

Post on 25-Jan-2016

33 views 1 download

description

Úvod do UNIXu ( 3 rd round). David Hoksza david.hoksza@mff.cuni.cz. Utility. more, less cat head, tail echo wc diff cut paste split tr sort uniq find xargs tar (grep) (sed). more. more +num_skip +/reg_exp file1 [file2…] num_skip počet přeskočených řádků reg_exp - PowerPoint PPT Presentation

transcript

Úvod do UNIXu (3rd round)

David Hoksza

david.hoksza@mff.cuni.cz

Utility

more, less cat head, tail echo wc diff cut paste split tr sort uniq find xargs tar (grep) (sed)

more

more +num_skip +/reg_exp file1 [file2…] num_skip

počet přeskočených řádků reg_exp

vyhledání daného výrazu v každém ze souborů příkazy

ENTER posun na další řádek

SPACE posun o stránku

z posun o tolik, kolik SPACE a argument (číslo) mění default posun (SPACE bude nyní

posouvat o hodnotu čísla) b

posun o obrazovku zpět (platí pro soubory) :n, :p, :f

další soubor (next), předchozí soubor (previous), výpis aktuálního souboru a řádku v

spustí textový editor na daném řádku (platí pro soubory)

less, cat

less [options] file1 [file2 … ] umožňuje zpětný pohyb příkazy společné s more a vi pohyb šipkami

cat [options] file1 [file2 … ] nestránkovaný výpis souboru -n

číslování řádek -E

ukazuje na konci řádek $

head, tail

head [options] file1 [file2…] prvních 10 řádek souboru -n N

prvních N řádek souboru -c N

prvních N bytů souboru

tail [options] file1 [file2…] posledních 10 řádek souboru -n N

posledních N řádek souboru -c N

posledních N bytů souboru

echo, wc

echo [options] string -n

nevypisuje konec řádku wc [options] file1 [file2…]

word count -w

počet slov -l

počet řádek -L

délka nejdelší řádky -c

počet bytů

diff

diff [options] file1 file2 difference porovnání obsahu 2 souborů (adresářů) je-li file - , pak se porovnává se standardním vstupem -b

ignoruje počet bílých znaků -B

ignoruje prázdné řádky -C N

na výstupu se zobrazí i N řádek okolí (context) -i

case insensitive -r

rekurzivní porovnávání souborů u adresářů -x pattern

u prohledávání adresářů neporovnává soubory a poadresáře vyhovující pattern diff3

diff pro tři soubory

cut

cut [options] file1 [file2…] vyříznutí částí souborů po řádcích -cSEZNAM

pouze znaky ze seznamu -fSEZNAM

pouze pole ze seznamu -dODDELOVAC

definice jednoznakového oddělovače defaultní je TAB

-s pouze řádky obsahující oddělovače

SEZNAM má tvar: N[,M,…] – n-té pole (případně též M-té, …) N- – od n-tého pole dál -N – do n-tého pole M-N – m-té až n-té pole

paste, split

paste [options] file1 [file2…] složí soubory – řádky vedle sebe -dODDELOVAC

split [options] file [prefix] rozdělení souboru po 1000 řádcích do souborů prefixaa, prefixab,

prefixac, … -aN

délka suffixu vzniklých souborů bude N -d

použijí se numerické sufixy -lN

rozděluje se po N řádcích -bN

rozděluje po N bytech -CN

z každého řádku vezme N znaků lze použít v shellovém programování pro parsování proměnných (!)

tr

tr [options] mna1 [mna2] translate přeloží, smaže, zmáčkne znaky z mny1 ze standardního vstupu na standardní výstup

-d smaže (delete) znaky z mny1

-s zmáčkne (squeze) posloupnost stejných znaků vyskytujících se v mně1 do jednoho

mna z1z2z3z4-z5z6 – znaky a rozsahy znaků speciální znaky

\n … newline \r … return \t … tab [:alnum:] … písmena a číslice [:alpha:] … písmena [:digit:] … číslice [:lower:] … lower-case písmena [:upper:] … upper-case písmena [:space:] … mezery [:punct:] … ,.:; atd.

sort

sort [options] file setřídí řádky textu -b

ignoruje úvodní mezery -d

uvažuje pouze mezery a písmena (dictionary) -f

ignoruje velikost písmen -n

numericky – podle hodnoty čísel a ne podle slovníkového pořadí -r

reverse -o file_name

výstup do souboru

uniq

uniq [options] [filein [fileout]] obsahuje-li vstup za sebou duplicitní

řádky, pak vypíše pouze jedenkrát -c

prefixuje řádky počtem opakování -u

vypíše pouze neduplicitní (následné) řádky

find (1)

vyhledávání souborů find [options] path [expr]

-P nenásledovat symbolické linky (default)

-L následovat symbolické linky

-d nejdříve prohledávat podadresáře

-name pattern vyhledání souborů s daným vzorem (speciální znaky “?*[]”)

-iname pattern case insensitive verze name

-lname pattern soubor je symbolický link, jehož cíl má tvar vzoru

-ilname pattern case insensitive verze lname

-regex pattern soubor odpovídá regulárnímu výrazu

-iregex pattern case insensitive verze regex

-wholename pattern pattern se vztahuje ne pouze k souboru, ale k celé cestě

find (2)

-size [+|-]N[unit] c … byty, k … kilobyty, M … megabyty, G … gigabyty

-type d …adresář f … soubor l … symbolický link

-mindepth M, -maxdepth N prohledává od úrovně M, resp. do úrovně N

-amin [+|-]N přístup k souboru naposledy před N minutami

-anewer file soubor je novější, než poslední změna souboru file

-atime [+|-] N přístup k souboru naspoledy před 24*N hodinami

-cmin, -cnewer, -mtime, -mnewer viz. axxx, pro změnu údajů o souboru (c), resp. samotného souboru (m)

-empty prázdný soubor

find (3)

-gid N, -uid N GID, resp. UID souboru je N

-group name, -user name soubor patří skupině, resp. uživateli name

-perm mod soubory s právy právě mod (oktalově nebo znakově)

-perm –mod soubory s právem alespoň mod

-perm /mod soubory, kde alespoň jedna skupina splňuje definovaný

mód

find (4)

akce -print

vytiskne nalezené soubory (default) -fprint file

vytiskne nalezené soubory do douboru -printf format

vytiskne nalezené soubory v zadané formě (c styl) -ls

vytiskne nalzené soubory v ls formátu -delete

smaže nalezené soubory -prune

nevstoupí do nalezeného adresáře -exec command \;

s nalezenými soubory provede příkaz command (všechny jsou argumentem příkazu)

-exec command {} \; s nalezenými soubory provede příkaz command (po jednom)

find (5)

operátory ()

určuje prioritu !, not

negace expr1 expr2, expr1 -a expr2, expr1 –and expr2

musí platit expr1 i expr2 expr1 -o expr2, expr1 –or expr2

platí expr1 nebo expr2 expr1, expr2

provede expr1 a pak expr2

find (6)

find ~/ -name '*.txt' find /tmp/ -name ‘*.txt' -exec grep “www.” \; find ~/ -name 'core*' -delete; find . -name "rc.conf" -exec rm '{}' \; find /usr/src -not \( -name "*.h" -o -name ".*.c" \) -

print find ~ -type f \( -name “\*.php” -fprint php_files , -

name “\*.js” -fprint javascript_files \)

xargs

xargs [options] command provede příkaz a jako parametry doplní řetězce

ze standardního vstupu oddělené mezerou (jako na výrobní lince)

-d Z jako oddělovač se použije znak Z

-a file parametry se budou číst ze souboru

-i command …{} … {} … opakuje příkaz pro každou řádku se standardního

vstupu a její obsah vloží místo {} ls –1 *.[ch] | xargs –i cp {} {}.bak

tar (1)

archivace adresářů tar operation [options] file [dir]

operace -c

create -x

extract -t

list … vypíše obsah archivu -r

append -v

verbose … podrobnější informace o procesu options

-C dir přepnutí do adresáře dir

-f file pracuje se souborem file

-z zabalí/extrahuje za pomozi aplikace gzip

-j zabalí/extrahuje za pomozi aplikace bzip2

tar (2)

tar –cf dir.tar dir tar –czf dir.tar.gz dir tar –t –f dir.tar.gz tar –xjf dir.tar.bz2 file tar –xjf dir.tar.bz2 –C dir1/

Úkol

vypište loginy všech uživatelů systému vypište UID a domovské adresáře všech

uživatelů nahraďte oddělovače v /etc/passwd za

tabulátory vyberte soubor a změnte ho tak, aby

obsahoval pouze velká písmena setřiďte /etc/passwd podle loginů Jak smazat nalezené soubory bez použití

přepínače –delete v find?