Základní příkazy Unixu: Porovnání verzí
(Doplnění (mail)) |
(→Ostatní: příloha v mail) |
||
(Není zobrazeno 9 mezilehlých verzí od stejného uživatele.) | |||
Řádka 97: | Řádka 97: | ||
** <TT>-exec příkaz </TT> se soubory vybranými podle kritéria bude proveden uvedený příkaz, ve kterém znaky {} reprezentují jméno vybraného souboru, text příkazu musí být ukončen mezerou, zpětným lomítkem a středníkem \; | ** <TT>-exec příkaz </TT> se soubory vybranými podle kritéria bude proveden uvedený příkaz, ve kterém znaky {} reprezentují jméno vybraného souboru, text příkazu musí být ukončen mezerou, zpětným lomítkem a středníkem \; | ||
− | find /proc -name \*conn\* -exec | + | # nalezení souborů, které mají v názvu obsažen řetězec „conn“ |
+ | find /proc -name \*conn\* | ||
+ | # nalezení souborů, které byly čteny nejdéle před 60 minutami | ||
+ | find /etc -type f -amin -60 | ||
+ | # vypsání adresářů, které nepatří skupině „root“ | ||
+ | find /etc -type d -not -group root -exec ls -ld {} \; | ||
== Textové utility == | == Textové utility == | ||
Řádka 244: | Řádka 249: | ||
^[a-z]*$ řádky obsahující pouze malá písmena | ^[a-z]*$ řádky obsahující pouze malá písmena | ||
\.[0-9] výraz označuje tečku následovanou číslicí | \.[0-9] výraz označuje tečku následovanou číslicí | ||
+ | |||
+ | Příklady použití: | ||
+ | |||
+ | grep '[hs]d[a-z]$' /proc/partitions # vypíše seznam pevných disků a jejich velikostí (v KiB) | ||
+ | |||
+ | ;iconv: | ||
+ | * filtr - konverze kódování | ||
+ | * přepínače: | ||
+ | ** <TT>-l </TT> vypíše seznam kódování (cp1250, utf8, iso8859-2, …) | ||
+ | ** <TT>-f xx</TT> kódování znaků na vstupu (zadejte místo „xx“) | ||
+ | ** <TT>-t </TT> kódování znaků na výstupu | ||
+ | |||
+ | Příklady použití: | ||
+ | |||
+ | iconv -f cp1250 -t utf8 < vstup.txt > vystup.txt | ||
== Porovnávání souborů == | == Porovnávání souborů == | ||
Řádka 254: | Řádka 274: | ||
;diff soubor1 soubor2: | ;diff soubor1 soubor2: | ||
* porovnává dva soubory po jednotlivých řádcích a hledá rozdíly mezi nimi | * porovnává dva soubory po jednotlivých řádcích a hledá rozdíly mezi nimi | ||
− | * vypisuje změněné řádky, výstup se používá jako vstup pro program patch | + | * vypisuje změněné řádky, výstup se používá jako vstup pro program <code>patch</code> |
* přepínače: | * přepínače: | ||
− | ** <TT>-u </TT> unifikovaný výstup (používá se nejčastěji, modifikované řádky jsou odlišeny znaky plus a mínus, které vyjadřují, zda byl řádek smazán nebo přidán; změněné řádky jsou obklopeny původními,aby se při použití programu patch poznalo, je-li zpracovávaný soubor ve stavu, který byl zachycen programem diff) | + | ** <TT>-u </TT> unifikovaný výstup (používá se nejčastěji, modifikované řádky jsou odlišeny znaky plus a mínus, které vyjadřují, zda byl řádek smazán nebo přidán; změněné řádky jsou obklopeny původními,aby se při použití programu <code>patch</code> poznalo, je-li zpracovávaný soubor ve stavu, který byl zachycen programem diff) |
** <TT>-r </TT> rekurzivní běh | ** <TT>-r </TT> rekurzivní běh | ||
** <TT>-N </TT> zahrnuty i nové soubory | ** <TT>-N </TT> zahrnuty i nové soubory | ||
Řádka 280: | Řádka 300: | ||
* přepínače: | * přepínače: | ||
** <TT>-123 </TT> potlačí výstup příslušného sloupce (např. -13 propustí na standardní výstup pouze druhý sloupec) | ** <TT>-123 </TT> potlačí výstup příslušného sloupce (např. -13 propustí na standardní výstup pouze druhý sloupec) | ||
+ | |||
+ | ;patch: | ||
+ | * nástroj na zahrnutí změn podle výstupu nástroje <code>diff</code> do zvoleného souboru | ||
+ | ** <TT>-b přípona</TT> uložit zálohu souboru s udanou příponou | ||
+ | ** <TT>-R </TT> reverzní změna (též pokud někdo porovnal příkazem <code>diff</code> soubory obráceně) | ||
== Ostatní == | == Ostatní == | ||
+ | |||
+ | ;clear: | ||
+ | * smazání obrazovky (lze použít i kombinaci kláves CTRL+l) | ||
;mail příjemce: | ;mail příjemce: | ||
* odeslání e-mailu, parametrem je e-mailová adresa příjemce | * odeslání e-mailu, parametrem je e-mailová adresa příjemce | ||
− | * | + | * nejsou-li poskytnuty potřebné údaje, přepne se do interaktivního režimu, a v něm se zeptá na příjemce, subjekt a tělo e-mailu |
− | * | + | ** subjekt a příjemce je možné specifikovat na příkazovém řádku |
+ | ** tělo e-mailu lze předat na standardní vstup | ||
+ | * přepínače: | ||
+ | ** <code>-s </code> určení subjektu (víceslovný do uvozovek) | ||
+ | ** <code>-a </code> určení souboru s přílohou, lze opakovat pro zadání více příloh (podpora jen v novějších verzích příkazu <code>mail</code>) | ||
+ | |||
+ | mail -s "Test 1" rene.huzva@pslib.cz < /etc/motd # tělo je soubor /etc/motd | ||
+ | echo Tělo e-mailu | mail -s "Test 2" rene.huzva@pslib.cz # tělo je standardní vstup skrze rouru od příkazu echo | ||
+ | |||
+ | ;mutt: | ||
+ | * klient pro čtení/posílání elektronické pošty | ||
+ | * příjemce je zadán jako parametr | ||
** <code>-s </code> určení subjektu (víceslovný do uvozovek) | ** <code>-s </code> určení subjektu (víceslovný do uvozovek) | ||
+ | ** <code>-a </code> určení souboru s přílohou, lze opakovat pro zadání více příloh | ||
+ | * pokud je <code>mutt</code> spuštěn v interaktivním režimu, spouští se pro vytvoření zprávy standardně editor VI, a proto je vhodné před spuštěním nastavit proměnnou prostředí <code>EDITOR</code> (nebo <code>VISUAL</code>) | ||
− | + | mutt -s "Test 2" -a /etc/passwd rene.huzva@pslib.cz < telo-emailu.txt | |
+ | export EDITOR=mcedit | ||
+ | mutt -s "Test 2" -a /etc/passwd rene.huzva@pslib.cz | ||
[[Kategorie:Práce s Linuxem]] | [[Kategorie:Práce s Linuxem]] |
Aktuální verze z 27. 2. 2015, 08:43
Základní příkazy Unixu obsahují příkazy, které umožňují efektivně pracovat v příkazovém řádku, zejména při zpracování textových dat. V seznamu jsou postupně představeny různé kategorie příkazů. Text je součástí série článků Práce s Linuxem. Čtenář zde navazuje na předchozí články (zejména Příkazový řádek v Unixu a Základní informace o systému). Základní zde uvedené příkazy jsou využity v dalších článcích (BASH: Přesměrování, BASH: Kolony).
Obsah
Příkazy pro práci s adresáři
- ls [cesta]
- výpis obsahu adresáře
- přepínače:
- -a vypíše všechny soubory v adresáři včetně souborů, které začínají tečkou (tzv. skryté soubory)
- -l dlouhý výpis (včetně práv, počet hardlinek, vlastníka, skupiny, délky, času poslední modifikace)
- -t setřídí výpis podle data poslední modifikace, od nejnovějších ke starším
- -u setřídí výpis podle času posledního přístupu k souboru, od nejnovějších ke starším
- -r opačný způsob třídění
- -F přidat znak k souborům určující jejich typ, normálním nic (spustitelný*, adresář/, symbolická linky@, FIFO|, socket=)
- -R rekurzivní výpis podadresářů
- -L vypsat soubor, na který ukazuje linka místo linky samotné (kombinace -RL jde i za linky)
- -d vypíše adresáře jako ostaní soubory místo jejich obsahu
- -f netřídit obsah adresáře
- -i vypíše číslo i-nodu každého souboru
- mkdir [adresář]
- vytvoření adresáře
- přepínače:
- -p rekurzivní vytváření (více adresářů najednou)
- rmdir [adresář]
- smazání adresáře
- adresář musí být prázdný (mazání neprázdných adresářů - viz: rm -r)
- cd [adresář]
- změna aktuálního adresáře
- bez parametru přepne do domácího adresáře
cd dir přepne do adresáře se jménem dir
(absolutní nebo relativní cesta)
cd .. přepne do nadřízeného adresáře
cd - přepne do adresáře, ve kterém jsme byli naposledy (krok zpět)
cd ~/dir označuje adresář dir ve vlastním domácím adresáři
cd ~huzva označuje domácí adresář uživatele s přihlašovacím jménem huzva
- pwd
- výpis aktuálního adresáře
- du
- vypíše obsazený prostor (výsledek v kB)
- přepínače
- -s spočítat jen výsledek za celý podstrom adresářů
- -h výstup v jednotkách (kB, MB, GB apod.)
Příkazy pro práci se soubory
- cp [soubor1] [cílové_jméno]
- cp [soubor1] [soubor2] [soubor3] ... [cílový adresář]
- kopírování souboru(ů), cíl musí být vždy uveden (tečka označuje aktuální adresář)
- přepínače:
- -r rekurzivní kopírování podadresářů
- -i interaktivní (při přepisu souboru se ptá)
- -a zachovává čas, vlastníka, skupinu, přístupová práva (používá se k archivaci)
- mv [původní_jméno] [nové_jméno]
- přejmenování souboru a jeho případný přesun
- přesouvat adresáře lze jen v rámci jednoho filesystému (jednoho oddílu, resp. partition - jinak je nutné soubory kopírovat)
- rm [soubor]
- smazání souboru
- přepínače:
- -i interaktivní (každé mazání bude vyžadovat souhlas uživatele)
- -f na nic se neptej a mazej
- -r rekurzivní mazání včetně podadresářů
SMRTELNÉ: rm -rf .* (vyhoví i dvě tečky - příkaz maže i v nadřízených adresářích) SPRÁVNĚ: rm -rf .[^.]*
- hexdump [soubor]
- hexadecimální výpis bajtů v souboru
- přepínače:
- -C kromě hexadecimálního výstupu vypíše i ASCII reprezentaci znaků (kromě řídících znaků)
- find [adresář] [podmínka] [operace]
- rekurzivní prohledávání stromu adresářů a souborů
- podmínka:
- -name soubor nalezení souboru dle jména. Lze použít metaznaky *,?,[], musí však být uzavřeny do apostrofů nebo uvozovek nebo uvozeny zpětným lomítkem, aby byly interpretovány příkazem find a ne expandovány shellem. Varianta -iname soubor ignoruje velká/malá písmena
- -user jméno hledá se soubor, jehož vlastníkem je uživatel jméno
- -type typ hledá soubory daného typu, kde typ nabývá hodnoty:
- f obyčejný soubor
- d adresář
- l linka
- -atime n hledají se soubory, ke kterým bylo před n dny naposledy přistupováno
- -mtime n hledají se soubory, do kterých byl před n dny proveden poslední zápis
- -links n hledá se soubor se specifikovaným počtem odkazů (linků)
- -size n hledají se soubory o velikosti n jednotek, kde jednotka je standardně 512 bajtů nebo se dá určit písmenem, které následuje těsně za číslem:
- c v bajtech
- k v kilobajtech
- -a operátor logického součinu ("a")
- -o operátor logického součtu ("nebo")
- ! negace
- pokud je před číselným výrazem (výše označeno jako n) uveden znak + (plus), znamená to že se budou hledat soubory, u nichž kritérium přesahuje danou hodnotu. Pokud je před číselným výrazem znak - (mínus), budou se hledat soubory s kritériem nedosahujícím danou hodnotu.
- operace:
- -print zobrazení jmen souborů, které byly vybrány (GNU find nalezené soubory zobrazuje i bez tohoto parametru)
- -exec příkaz se soubory vybranými podle kritéria bude proveden uvedený příkaz, ve kterém znaky {} reprezentují jméno vybraného souboru, text příkazu musí být ukončen mezerou, zpětným lomítkem a středníkem \;
# nalezení souborů, které mají v názvu obsažen řetězec „conn“ find /proc -name \*conn\* # nalezení souborů, které byly čteny nejdéle před 60 minutami find /etc -type f -amin -60 # vypsání adresářů, které nepatří skupině „root“ find /etc -type d -not -group root -exec ls -ld {} \;
Textové utility
- cat [soubor]
- vypsání obsahu souboru
- přepínače:
- -n očíslovat na výstupu řádky (viz též příkaz
nl
)
- -n očíslovat na výstupu řádky (viz též příkaz
- tac [soubor]
- vypsání obsahu souboru s obráceným pořadím řádků
- head [soubor]
- výpis začátku souboru (stadardně 10 řádků)
- přepínače:
- -číslo počet vypsaných řádků od začátku souboru
- -c číslo počet vypsaných bajtů od začátku souboru
- tail [soubor]
- výpis konce souboru (stadardně 10 řádků)
- přepínače:
- -číslo počet vypsaných řádků od konce souboru
- -cčíslo počet vypsaných bajtů od konce souboru
- -f na konci souboru čekej a zobrazuj přírustky
- file [soubor]
- určí typ souboru podle jeho obsahu (spustitelný, GIF, ZIP, text, prázdný, linka, ...)
- definice typů je v souboru /etc/magic (resp. /usr/share/magic)
- stat [soubor]
- vypíše obsah inodu (vlastník, poslední změna souboru a inodu, velikost, přístupová práva, atd.)
- strings [soubor]
- vypíše řetězce z binárního souboru
- wc [soubor]
- vypíše počet řádků, slov a písmen v souboru
- přepínače:
- -l počet řádků
- -w počet slov
- -c počet znaků
- touch [soubor]
- mění datum poslední modifikace souboru
- když soubor neexistuje, je vytvořen nový s nulovou délkou
- přepínače:
- -t MMDDhhmm[[SS]RR][.ss] použít tento čas
- cut [soubor]
- vertikální řez souborem
- přepínače:
- -bpozice pozice vyříznutí podle sloupců počítáno od 1
- -fpoložky položky (implicitní oddělovač je tabelátor)
- -dznak definuje znak jako oddělovač položek (tj. jiný, než tabelátor)
- tvar seznamu položek (pozic):
- 2-5 druhá až pátá položka (pozice)
- -5 první až pátá položka (pozice)
- 1,7 první a sedmá položka
- nl [soubor]
- očíslovat řádky souboru (výstupu)
- join [soubor1] [soubor2]
- tiskne na výstup odpovídající řádky obou souborů podle společné identifikace
- přepínače:
- -1 sloupec z prvního souboru slučovat podle identifikace ze zadaného sloupce
- -2 sloupec z druhého souboru slučovat podle identifikace ze zadaného sloupce
- -t oddělovač použít jiný oddělovač v vstupních a výstupních souborech
Filtry
- less [soubor] ...
- vstup opisuje na výstup po stránkách, lepší a novější varianta příkazu more
- název je slovní hříčka: program méně umí více, než program více, který toho umí méně, než program méně (more znamená anglicky více a less znamená méně)
- ovládací klávesy:
- mezera posun o stránku vpřed
- b posun o stránku zpět
- q konec programu
- :n skočí na následující soubor uvedený na příkazové řádce
- /řetězec hledat řetězec směrem dopředu
- ?řetězec hledat řetězec směrem dozadu
- n hledat další výskyt řetězce (v původním směru hledání)
- N hledat další výskyt řetězce v opačném směru, než bylo zadáno původní hledání
- F čeká a zobrazuje přírustky v souboru - obdoba příkazu tail -f soubor
- dos2unix
- provádí konverzi DOSového formátu konce řádku - znaky CR (Carriage Return - návrat vozíku tiskárny, kód 0x0D hexadecimálně, resp. 13 decimálně) a LF (Line Feed - posun papíru v tiskárně o jeden řádek, tj. 0x0A hexadecimálně, resp. 10 decimálně) do formátu konce řádků v Unixu (jen znak CR)
dos2unix soubor.txt dos2unix < soubor.dos > soubor.unx
- unix2dos
- provádí konverzi z Unixového formátu konce řádku (znak LF) na formát DOSu (znaky CR a LF)
- tee [soubor]
- filtr - opisuje vstup do souboru a zároveň na obrazovku
- přepínače:
- -a nový text se připojí na konec souboru
- sort [+číslo] [přepínače] [soubor]
- filtr - třídění vstupu
- přepínače:
- -n setřídění numerické (pokud jsou číselné hodnoty)
- -r setřídění sestupné
- -b ignorovat počáteční mezery
- -f nebudou se rozlišovat malá a velká písmena (velká písmena jsou převáděna na malá)
- -k číslo určuje sloupec, od kterého se posuzuje pořadí při třídění (číslovány od 1)
- -k číslo1,číslo2 určuje rozsah sloupců pro třídění
- -tznak určení znaku, který odděluje jednotlivé sloupce
- -u z výstupního souboru budou vyloučeny duplicitní řádky (pro posouzení duplicit se porovnávají pouze klíče)
- uniq [paramery] [soubor]
- filtr - odstraňuje duplicitní řádky ze setříděného vstupu
- přepínače:
- -číslo přeskočí se zadaný počet řádků od začátku
- -u budou se vypisovat pouze řádky, které nejsou duplicitní
- -d budou se vypisovat pouze řádky, které jsou duplicitní
- -c na začátku každého řádku se vypíše počet výskytů
- grep [výraz] [soubor]
- hledá výraz v souboru a vypisuje řádky, které ho obsahují
- přepínače:
- -c vypíše počet řádků, ve kterých byl nalezen vzor
- -i ignoruje rozdíly mezi malými a velkými písmeny
- -l zobrazuje pouze jména souborů, ve kterých byl nalezen vzor
- -n zobrazí čísla řádků obsahujících vzor
- -s potlačen chybový výstup
- -v vypíše řádky neobsahující vzor
- -r rekurzivní hledání v podadresářích
- -q nalezený řádek se nevypisuje - používá se např. v testech ve skriptech, kde jen testujeme návratový kód, tj. nalezeno - pravda (0), nenalezeno - nepravda (1)
- při specifikaci hledaného řetězce lze použít regulární výraz, ve kterém lze použít následující speciální znaky (doporučuji zapisovat regulární výraz do uvozovek či apostrofů):
^ začátek řádku $ konec řádku . libovolný znak * libovolný počet opakování předchozího znaku [] právě jeden znak z množiny znaků uvedených v těchto závorkách, při specifikaci lze použít následující dva speciální znaky: - používá se pro označení intervalu znaků z množiny ASCII (např. a-z, 0-9) ^ negace výčtu znaků \ potlačení speciálního významu následujícího znaku
Příklady regulárních výrazů:
^# řádky začínající znakem křížek (hash) ^$ prázdné řádky ^.$ řádky obsahující právě jeden znak ^[a-z]*$ řádky obsahující pouze malá písmena \.[0-9] výraz označuje tečku následovanou číslicí
Příklady použití:
grep '[hs]d[a-z]$' /proc/partitions # vypíše seznam pevných disků a jejich velikostí (v KiB)
- iconv
- filtr - konverze kódování
- přepínače:
- -l vypíše seznam kódování (cp1250, utf8, iso8859-2, …)
- -f xx kódování znaků na vstupu (zadejte místo „xx“)
- -t kódování znaků na výstupu
Příklady použití:
iconv -f cp1250 -t utf8 < vstup.txt > vystup.txt
Porovnávání souborů
- cmp
- porovnává dva soubory po jednotlivých bajtech, ohlásí první rozdílný bajt
- přepínače:
- -s potlačení výstupu o nalezených odchylkách
- diff soubor1 soubor2
- porovnává dva soubory po jednotlivých řádcích a hledá rozdíly mezi nimi
- vypisuje změněné řádky, výstup se používá jako vstup pro program
patch
- přepínače:
- -u unifikovaný výstup (používá se nejčastěji, modifikované řádky jsou odlišeny znaky plus a mínus, které vyjadřují, zda byl řádek smazán nebo přidán; změněné řádky jsou obklopeny původními,aby se při použití programu
patch
poznalo, je-li zpracovávaný soubor ve stavu, který byl zachycen programem diff) - -r rekurzivní běh
- -N zahrnuty i nové soubory
- -u unifikovaný výstup (používá se nejčastěji, modifikované řádky jsou odlišeny znaky plus a mínus, které vyjadřují, zda byl řádek smazán nebo přidán; změněné řádky jsou obklopeny původními,aby se při použití programu
- popis standardního výstupu programu (unifikovaný formát viz výše):
Ve výpisu je nejdříve údaj o typu a rozsahu nalezených změn, poté následuje výpis řádek z obou souborů: znak < označuje řádky prvého souboru, znak > označuje řádky druhého souboru. Údaj o typu a rozsahu změn má tuto strukturu m x n, kde:
m označuje čísla řádek prvního souboru n označuje čísla řádek druhého souboru x může nabývat hodnot: a přidání řádků k prvnímu souboru d zrušení řádků z druhého souboru c změna znaků na řádcích
Např. zápis 8,20 c 8,22 označuje že na řádcích 8 až 20 z prvního souboru byly provedeny změny, které jsou zapsány na řádcích 8 až 22 druhého souboru (současně byly dva řádky vloženy).
- comm [-123] soubor1 soubor2
- zjišťuje, které řádky ve dvou setříděných souborech jsou stejné
- výstup obsahuje tři vzájemně se prolínající sloupce s následujícím významem:
- 1. sloupec - řádek je v prvním souboru, není ve druhém
- 2. sloupec - řádek je ve druhém souboru, není v prvním
- 3. sloupce - řádek je v obou souborech
- přepínače:
- -123 potlačí výstup příslušného sloupce (např. -13 propustí na standardní výstup pouze druhý sloupec)
- patch
- nástroj na zahrnutí změn podle výstupu nástroje
diff
do zvoleného souboru- -b přípona uložit zálohu souboru s udanou příponou
- -R reverzní změna (též pokud někdo porovnal příkazem
diff
soubory obráceně)
Ostatní
- clear
- smazání obrazovky (lze použít i kombinaci kláves CTRL+l)
- mail příjemce
- odeslání e-mailu, parametrem je e-mailová adresa příjemce
- nejsou-li poskytnuty potřebné údaje, přepne se do interaktivního režimu, a v něm se zeptá na příjemce, subjekt a tělo e-mailu
- subjekt a příjemce je možné specifikovat na příkazovém řádku
- tělo e-mailu lze předat na standardní vstup
- přepínače:
-
-s
určení subjektu (víceslovný do uvozovek) -
-a
určení souboru s přílohou, lze opakovat pro zadání více příloh (podpora jen v novějších verzích příkazumail
)
-
mail -s "Test 1" rene.huzva@pslib.cz < /etc/motd # tělo je soubor /etc/motd echo Tělo e-mailu | mail -s "Test 2" rene.huzva@pslib.cz # tělo je standardní vstup skrze rouru od příkazu echo
- mutt
- klient pro čtení/posílání elektronické pošty
- příjemce je zadán jako parametr
-
-s
určení subjektu (víceslovný do uvozovek) -
-a
určení souboru s přílohou, lze opakovat pro zadání více příloh
-
- pokud je
mutt
spuštěn v interaktivním režimu, spouští se pro vytvoření zprávy standardně editor VI, a proto je vhodné před spuštěním nastavit proměnnou prostředíEDITOR
(neboVISUAL
)
mutt -s "Test 2" -a /etc/passwd rene.huzva@pslib.cz < telo-emailu.txt export EDITOR=mcedit mutt -s "Test 2" -a /etc/passwd rene.huzva@pslib.cz