Základní příkazy Unixu: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
m (Textové utility: cesta)
(Ostatní: příloha v mail)
 
(Není zobrazeno 17 mezilehlých verzí od stejného uživatele.)
Řádka 1: Řádka 1:
 +
'''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ů [[Linux#Práce s Linuxem|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]]).
 +
 
== Příkazy pro práci s adresáři ==
 
== Příkazy pro práci s adresáři ==
  
Řádka 4: Řádka 6:
 
* výpis obsahu adresáře
 
* výpis obsahu adresáře
 
* přepínače:
 
* přepínače:
** <TT>-a</TT> vypíše všechny soubory v adresáři včetně souborů, které začínají tečkou (tzv. skryté soubory)  
+
** <TT>-a </TT> vypíše všechny soubory v adresáři včetně souborů, které začínají tečkou (tzv. skryté soubory)  
** <TT>-l</TT> dlouhý výpis (včetně práv, počet hardlinek, vlastníka, skupiny, délky, času poslední modifikace)  
+
** <TT>-l </TT> dlouhý výpis (včetně práv, počet hardlinek, vlastníka, skupiny, délky, času poslední modifikace)  
** <TT>-t</TT> setřídí výpis podle data poslední modifikace, od nejnovějších ke starším  
+
** <TT>-t </TT> setřídí výpis podle data poslední modifikace, od nejnovějších ke starším  
** <TT>-u</TT> setřídí výpis podle času posledního přístupu k souboru, od nejnovějších ke starším  
+
** <TT>-u </TT> setřídí výpis podle času posledního přístupu k souboru, od nejnovějších ke starším  
** <TT>-r</TT> opačný způsob třídění  
+
** <TT>-r </TT> opačný způsob třídění  
** <TT>-F</TT> přidat znak k souborům určující jejich typ, normálním nic (spustitelný*, adresář/, symbolická linky@, FIFO|, socket=)  
+
** <TT>-F </TT> přidat znak k souborům určující jejich typ, normálním nic (spustitelný*, adresář/, symbolická linky@, FIFO|, socket=)  
** <TT>-R</TT> rekurzivní výpis podadresářů  
+
** <TT>-R </TT> rekurzivní výpis podadresářů  
** <TT>-L</TT> vypsat soubor, na který ukazuje linka místo linky samotné (kombinace -RL jde i za linky)  
+
** <TT>-L </TT> vypsat soubor, na který ukazuje linka místo linky samotné (kombinace -RL jde i za linky)  
** <TT>-d</TT> vypíše adresáře jako ostaní soubory místo jejich obsahu  
+
** <TT>-d </TT> vypíše adresáře jako ostaní soubory místo jejich obsahu  
** <TT>-f</TT> netřídit obsah adresáře  
+
** <TT>-f </TT> netřídit obsah adresáře  
** <TT>-i</TT> vypíše číslo i-nodu každého souboru  
+
** <TT>-i </TT> vypíše číslo i-nodu každého souboru  
  
 
;mkdir [adresář]:
 
;mkdir [adresář]:
 
* vytvoření adresáře
 
* vytvoření adresáře
 
* přepínače:
 
* přepínače:
** <TT>-p</TT> rekurzivní vytváření (více adresářů najednou)  
+
** <TT>-p </TT> rekurzivní vytváření (více adresářů najednou)  
  
 
;rmdir [adresář]:
 
;rmdir [adresář]:
Řádka 29: Řádka 31:
 
* bez parametru přepne do domácího adresáře
 
* bez parametru přepne do domácího adresáře
  
 +
cd dir    přepne do adresáře se jménem <code>dir</code> (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 -      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 ~/dir  označuje adresář dir ve vlastním domácím adresáři
  cd ~huzva  označuje domácí adresář uživatele se jménem huzva  
+
  cd ~huzva  označuje domácí adresář uživatele s přihlašovacím jménem huzva
  
 
;pwd:
 
;pwd:
Řádka 39: Řádka 43:
 
* vypíše obsazený prostor (výsledek v kB)
 
* vypíše obsazený prostor (výsledek v kB)
 
* přepínače
 
* přepínače
** <TT>-s</TT> spočítat jen výsledek za celý podstrom adresářů  
+
** <TT>-s </TT> spočítat jen výsledek za celý podstrom adresářů  
** <TT>-h</TT> výstup v jednotkách (kB, MB, GB apod.)  
+
** <TT>-h </TT> výstup v jednotkách (kB, MB, GB apod.)
  
 
== Příkazy pro práci se soubory ==
 
== Příkazy pro práci se soubory ==
Řádka 47: Řádka 51:
 
* kopírování souboru(ů), cíl musí být vždy uveden (tečka označuje aktuální adresář)
 
* kopírování souboru(ů), cíl musí být vždy uveden (tečka označuje aktuální adresář)
 
* přepínače:
 
* přepínače:
** <TT>-r</TT> rekurzivní kopírování podadresářů  
+
** <TT>-r </TT> rekurzivní kopírování podadresářů  
** <TT>-i</TT> interaktivní (při přepisu souboru se ptá)  
+
** <TT>-i </TT> interaktivní (při přepisu souboru se ptá)  
** <TT>-a</TT> zachovává čas, vlastníka, skupinu, přístupová práva (používá se k archivaci)  
+
** <TT>-a </TT> zachovává čas, vlastníka, skupinu, přístupová práva (používá se k archivaci)  
  
 
;mv [původní_jméno] [nové_jméno]:
 
;mv [původní_jméno] [nové_jméno]:
Řádka 58: Řádka 62:
 
* smazání souboru
 
* smazání souboru
 
* přepínače:
 
* přepínače:
** <TT>-i</TT> interaktivní (každé mazání bude vyžadovat souhlas uživatele)  
+
** <TT>-i </TT> interaktivní (každé mazání bude vyžadovat souhlas uživatele)  
** <TT>-f</TT> na nic se neptej a mazej  
+
** <TT>-f </TT> na nic se neptej a mazej  
** <TT>-r</TT> rekurzivní mazání včetně podadresářů  
+
** <TT>-r </TT> 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)
 
  SMRTELNÉ: rm -rf .* (vyhoví i dvě tečky - příkaz maže i v nadřízených adresářích)
Řádka 68: Řádka 72:
 
* hexadecimální výpis bajtů v souboru
 
* hexadecimální výpis bajtů v souboru
 
* přepínače:
 
* přepínače:
** <TT>-C</TT> kromě hexadecimálního výstupu vypíše i ASCII reprezentaci znaků (kromě řídících znaků)
+
** <TT>-C </TT> kromě hexadecimálního výstupu vypíše i ASCII reprezentaci znaků (kromě řídících znaků)
  
 
;find [adresář] [podmínka] [operace]:
 
;find [adresář] [podmínka] [operace]:
 
* rekurzivní prohledávání stromu adresářů a souborů
 
* rekurzivní prohledávání stromu adresářů a souborů
 
* podmínka:
 
* podmínka:
** <TT>-name</TT> 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  
+
** <TT>-name </TT> 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  
** <TT>-user</TT> jméno hledá se soubor, jehož vlastníkem je uživatel jméno  
+
** <TT>-user </TT> jméno hledá se soubor, jehož vlastníkem je uživatel jméno  
** <TT>-type</TT> typ hledá soubory daného typu, kde typ nabývá hodnoty:
+
** <TT>-type </TT> typ hledá soubory daného typu, kde typ nabývá hodnoty:
*** <TT>f</TT> obyčejný soubor  
+
*** <TT>f </TT> obyčejný soubor  
*** <TT>d</TT> adresář  
+
*** <TT>d </TT> adresář  
*** <TT>l</TT> linka  
+
*** <TT>l </TT> linka  
** <TT>-atime n</TT> hledají se soubory, ke kterým bylo před n dny naposledy přistupováno  
+
** <TT>-atime n </TT> hledají se soubory, ke kterým bylo před n dny naposledy přistupováno  
** <TT>-mtime n</TT> hledají se soubory, do kterých byl před n dny proveden poslední zápis  
+
** <TT>-mtime n </TT> hledají se soubory, do kterých byl před n dny proveden poslední zápis  
** <TT>-links n</TT> hledá se soubor se specifikovaným počtem odkazů (linků)  
+
** <TT>-links n </TT> hledá se soubor se specifikovaným počtem odkazů (linků)  
** <TT>-size n</TT> 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:
+
** <TT>-size n </TT> 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:
*** <TT>c</TT> v bajtech  
+
*** <TT>c </TT> v bajtech  
*** <TT>k</TT> v kilobajtech  
+
*** <TT>k </TT> v kilobajtech  
** <TT>-a</TT> operátor logického součinu ("a")  
+
** <TT>-a </TT> operátor logického součinu ("a")  
** <TT>-o</TT> operátor logického součtu ("nebo")  
+
** <TT>-o </TT> operátor logického součtu ("nebo")  
** <TT>!</TT> negace  
+
** <TT>! </TT> 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.
 
* 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:
 
* operace:
** <TT>-print</TT> zobrazení jmen souborů, které byly vybrány (GNU find nalezené soubory zobrazuje i bez tohoto parametru)  
+
** <TT>-print </TT> zobrazení jmen souborů, které byly vybrány (GNU find nalezené soubory zobrazuje i bez tohoto parametru)  
** <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 cat {} \; 2> /dev/null
+
# 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 99: Řádka 108:
 
;cat [soubor]:
 
;cat [soubor]:
 
* vypsání obsahu souboru  
 
* vypsání obsahu souboru  
 +
* přepínače:
 +
** <TT>-n </TT> očíslovat na výstupu řádky (viz též příkaz <code>nl</code>)
  
 
;tac [soubor]:
 
;tac [soubor]:
Řádka 106: Řádka 117:
 
* výpis začátku souboru (stadardně 10 řádků)
 
* výpis začátku souboru (stadardně 10 řádků)
 
* přepínače:
 
* přepínače:
** <TT>-číslo počet</TT> vypsaných řádků od začátku souboru  
+
** <TT>-číslo počet </TT> vypsaných řádků od začátku souboru  
** <TT>-c číslo</TT> počet vypsaných bajtů od začátku souboru  
+
** <TT>-c číslo </TT> počet vypsaných bajtů od začátku souboru  
  
 
;tail [soubor]:
 
;tail [soubor]:
 
* výpis konce souboru (stadardně 10 řádků)
 
* výpis konce souboru (stadardně 10 řádků)
 
* přepínače:
 
* přepínače:
** <TT>-číslo</TT> počet vypsaných řádků od konce souboru  
+
** <TT>-číslo </TT> počet vypsaných řádků od konce souboru  
** <TT>-cčíslo</TT> počet vypsaných bajtů od konce souboru  
+
** <TT>-cčíslo </TT> počet vypsaných bajtů od konce souboru  
** <TT>-f</TT> na konci souboru čekej a zobrazuj přírustky  
+
** <TT>-f </TT> na konci souboru čekej a zobrazuj přírustky  
  
 
;file [soubor]:
 
;file [soubor]:
Řádka 129: Řádka 140:
 
* vypíše počet řádků, slov a písmen v souboru
 
* vypíše počet řádků, slov a písmen v souboru
 
* přepínače:
 
* přepínače:
** <TT>-l</TT> počet řádků  
+
** <TT>-l </TT> počet řádků  
** <TT>-w</TT> počet slov  
+
** <TT>-w </TT> počet slov  
** <TT>-c</TT> počet znaků  
+
** <TT>-c </TT> počet znaků  
  
 
;touch [soubor]:
 
;touch [soubor]:
Řádka 137: Řádka 148:
 
* když soubor neexistuje, je vytvořen nový s nulovou délkou
 
* když soubor neexistuje, je vytvořen nový s nulovou délkou
 
* přepínače:
 
* přepínače:
** <TT>-t MMDDhhmm[[SS]RR][.ss]</TT> použít tento čas  
+
** <TT>-t MMDDhhmm[[SS]RR][.ss] </TT> použít tento čas  
  
 
;cut [soubor]:
 
;cut [soubor]:
 
* vertikální řez souborem
 
* vertikální řez souborem
 
* přepínače:
 
* přepínače:
** <TT>-bpozice</TT> pozice vyříznutí podle sloupců počítáno od 1  
+
** <TT>-bpozice </TT> pozice vyříznutí podle sloupců počítáno od 1  
** <TT>-fpoložky</TT> položky (implicitní oddělovač je tabelátor)  
+
** <TT>-fpoložky </TT> položky (implicitní oddělovač je tabelátor)  
** <TT>-dznak</TT> definuje znak jako oddělovač položek (tj. jiný, než tabelátor)  
+
** <TT>-dznak </TT> definuje znak jako oddělovač položek (tj. jiný, než tabelátor)  
 
* tvar seznamu položek (pozic):
 
* tvar seznamu položek (pozic):
** <TT>2-5</TT> druhá až pátá položka (pozice)  
+
** <TT>2-5 </TT> druhá až pátá položka (pozice)  
** <TT>-5</TT> první až pátá položka (pozice)  
+
** <TT>-5 </TT> první až pátá položka (pozice)  
** <TT>1,7</TT> první a sedmá položka  
+
** <TT>1,7 </TT> první a sedmá položka  
  
 
;nl [soubor]:
 
;nl [soubor]:
Řádka 156: Řádka 167:
 
* tiskne na výstup odpovídající řádky obou souborů podle společné identifikace
 
* tiskne na výstup odpovídající řádky obou souborů podle společné identifikace
 
* přepínače:
 
* přepínače:
** <TT>-1</TT> sloupec z prvního souboru slučovat podle identifikace ze zadaného sloupce  
+
** <TT>-1 </TT> sloupec z prvního souboru slučovat podle identifikace ze zadaného sloupce  
** <TT>-2</TT> sloupec z druhého souboru slučovat podle identifikace ze zadaného sloupce  
+
** <TT>-2 </TT> sloupec z druhého souboru slučovat podle identifikace ze zadaného sloupce  
** <TT>-t</TT> oddělovač použít jiný oddělovač v vstupních a výstupních souborech
+
** <TT>-t </TT> oddělovač použít jiný oddělovač v vstupních a výstupních souborech
  
 
== Filtry ==
 
== Filtry ==
Řádka 166: Řádka 177:
 
* 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ě)
 
* 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:
 
* ovládací klávesy:
** <TT>mezera</TT> posun o stránku vpřed  
+
** <TT>mezera </TT> posun o stránku vpřed  
** <TT>b</TT> posun o stránku zpět  
+
** <TT>b </TT> posun o stránku zpět  
** <TT>q</TT> konec programu  
+
** <TT>q </TT> konec programu  
** <TT>:n</TT> skočí na následující soubor uvedený na příkazové řádce  
+
** <TT>:n </TT> skočí na následující soubor uvedený na příkazové řádce  
** <TT>/řetězec</TT> hledat řetězec směrem dopředu  
+
** <TT>/řetězec </TT> hledat řetězec směrem dopředu  
** <TT>?řetězec</TT> hledat řetězec směrem dozadu  
+
** <TT>?řetězec </TT> hledat řetězec směrem dozadu  
** <TT>n</TT> hledat další výskyt řetězce (v původním směru hledání)  
+
** <TT>n </TT> hledat další výskyt řetězce (v původním směru hledání)  
** <TT>N</TT> hledat další výskyt řetězce v opačném směru, než bylo zadáno původní hledání  
+
** <TT>N </TT> hledat další výskyt řetězce v opačném směru, než bylo zadáno původní hledání  
** <TT>F</TT> čeká a zobrazuje přírustky v souboru - obdoba příkazu tail -f soubor  
+
** <TT>F </TT> čeká a zobrazuje přírustky v souboru - obdoba příkazu tail -f soubor  
  
 
;dos2unix:
 
;dos2unix:
Řádka 187: Řádka 198:
 
* filtr - opisuje vstup do souboru a zároveň na obrazovku
 
* filtr - opisuje vstup do souboru a zároveň na obrazovku
 
* přepínače:
 
* přepínače:
** <TT>-a</TT> nový text se připojí na konec souboru  
+
** <TT>-a </TT> nový text se připojí na konec souboru  
  
 
;sort [+číslo] [přepínače] [soubor]:
 
;sort [+číslo] [přepínače] [soubor]:
 
* filtr - třídění vstupu
 
* filtr - třídění vstupu
 
* přepínače:
 
* přepínače:
** <TT>-n</TT> setřídění numerické (pokud jsou číselné hodnoty)  
+
** <TT>-n </TT> setřídění numerické (pokud jsou číselné hodnoty)  
** <TT>-r</TT> setřídění sestupné  
+
** <TT>-r </TT> setřídění sestupné  
** <TT>-b</TT> ignorovat počáteční mezery  
+
** <TT>-b </TT> ignorovat počáteční mezery  
** <TT>-f</TT> nebudou se rozlišovat malá a velká písmena (velká písmena jsou převáděna na malá)  
+
** <TT>-f </TT> nebudou se rozlišovat malá a velká písmena (velká písmena jsou převáděna na malá)  
** <TT>-k</TT> číslo určuje sloupec, od kterého se posuzuje pořadí při třídění (číslovány od 1)
+
** <TT>-k </TT> číslo určuje sloupec, od kterého se posuzuje pořadí při třídění (číslovány od 1)
** <TT>-k</TT> číslo1,číslo2 určuje rozsah sloupců pro třídění
+
** <TT>-k </TT> číslo1,číslo2 určuje rozsah sloupců pro třídění
** <TT>-tznak</TT> určení znaku, který odděluje jednotlivé sloupce  
+
** <TT>-tznak </TT> určení znaku, který odděluje jednotlivé sloupce  
** <TT>-u</TT> z výstupního souboru budou vyloučeny duplicitní řádky (pro posouzení duplicit se porovnávají pouze klíče)  
+
** <TT>-u </TT> z výstupního souboru budou vyloučeny duplicitní řádky (pro posouzení duplicit se porovnávají pouze klíče)  
  
 
;uniq [paramery] [soubor]:
 
;uniq [paramery] [soubor]:
 
* filtr - odstraňuje duplicitní řádky ze setříděného vstupu
 
* filtr - odstraňuje duplicitní řádky ze setříděného vstupu
 
* přepínače:
 
* přepínače:
** <TT>-číslo</TT> přeskočí se zadaný počet řádků od začátku  
+
** <TT>-číslo </TT> přeskočí se zadaný počet řádků od začátku  
** <TT>-u</TT> budou se vypisovat pouze řádky, které nejsou duplicitní  
+
** <TT>-u </TT> budou se vypisovat pouze řádky, které nejsou duplicitní  
** <TT>-d</TT> budou se vypisovat pouze řádky, které jsou duplicitní  
+
** <TT>-d </TT> budou se vypisovat pouze řádky, které jsou duplicitní  
** <TT>-c</TT> na začátku každého řádku se vypíše počet výskytů  
+
** <TT>-c </TT> na začátku každého řádku se vypíše počet výskytů  
  
 
;grep [výraz] [soubor]:
 
;grep [výraz] [soubor]:
 
* hledá výraz v souboru a vypisuje řádky, které ho obsahují
 
* hledá výraz v souboru a vypisuje řádky, které ho obsahují
 
* přepínače:
 
* přepínače:
** <TT>-c</TT> vypíše počet řádků, ve kterých byl nalezen vzor  
+
** <TT>-c </TT> vypíše počet řádků, ve kterých byl nalezen vzor  
** <TT>-i</TT> ignoruje rozdíly mezi malými a velkými písmeny  
+
** <TT>-i </TT> ignoruje rozdíly mezi malými a velkými písmeny  
** <TT>-l</TT> zobrazuje pouze jména souborů, ve kterých byl nalezen vzor  
+
** <TT>-l </TT> zobrazuje pouze jména souborů, ve kterých byl nalezen vzor  
** <TT>-n</TT> zobrazí čísla řádků obsahujících vzor  
+
** <TT>-n </TT> zobrazí čísla řádků obsahujících vzor  
** <TT>-s</TT> potlačen chybový výstup  
+
** <TT>-s </TT> potlačen chybový výstup  
** <TT>-v</TT> vypíše řádky neobsahující vzor  
+
** <TT>-v </TT> vypíše řádky neobsahující vzor  
** <TT>-r</TT> rekurzivní hledání v podadresářích  
+
** <TT>-r </TT> rekurzivní hledání v podadresářích  
** <TT>-q</TT> 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)  
+
** <TT>-q </TT> 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ů):
 
* 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ů):
  
Řádka 239: Řádka 250:
 
  \.[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 245: Řádka 270:
 
* porovnává dva soubory po jednotlivých bajtech, ohlásí první rozdílný bajt
 
* porovnává dva soubory po jednotlivých bajtech, ohlásí první rozdílný bajt
 
* přepínače:
 
* přepínače:
** <TT>-s</TT> potlačení výstupu o nalezených odchylkách  
+
** <TT>-s </TT> potlačení výstupu o nalezených odchylkách  
  
 
;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  
 
* popis standardního výstupu programu (unifikovaný formát viz výše):
 
* 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:
+
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 &lt; označuje řádky prvého souboru, znak &gt; 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  
 
  m  označuje čísla řádek prvního souboru  
Řádka 274: Řádka 299:
 
** 3. sloupce - řádek je v obou souborech  
 
** 3. sloupce - řádek je v obou souborech  
 
* 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í ==
 +
 
 +
;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:
 +
** <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>-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]]

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

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)
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
  • 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říkazu mail)
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 (nebo VISUAL)
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