Základní příkazy Unixu: Porovnání verzí
 (→Filtry:  iconv)  | 
				 (→Ostatní:  příloha v mail)  | 
				||
| Řádka 316: | Řádka 316: | ||
** subjekt a příjemce je možné specifikovat na příkazovém řádku  | ** subjekt a příjemce je možné specifikovat na příkazovém řádku  | ||
** tělo e-mailu lze předat na standardní vstup  | ** 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>-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  |   mail -s "Test 1" rene.huzva@pslib.cz < /etc/motd             # tělo je soubor /etc/motd  | ||
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 
patchpoznalo, 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 
diffdo 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 
diffsoubory 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:
-  
-surčení subjektu (víceslovný do uvozovek) -  
-aurč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
-  
-surčení subjektu (víceslovný do uvozovek) -  
-aurčení souboru s přílohou, lze opakovat pro zadání více příloh 
 -  
 -  pokud je 
muttspuš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