220 likes | 322 Views
Ú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
E N D
Ú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ářů • taroperation [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?