Uživatelské nástroje

Nástroje pro tento web


soubory-a-adresare

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
soubory-a-adresare [2019/04/12 11:25]
Miroslav Bernát
soubory-a-adresare [2019/06/14 10:21] (aktuální)
Miroslav Bernát
Řádek 49: Řádek 49:
 | **grep** <​vyraz>​ (<​soubor/​adresar>​) | vyhledá v textovém souboru řetězce, které obsahují daný výraz (vypíše vždy celý řádek), **-v** naopak vypíše řádky, které daný řetězec neobsahují,​ **-n** vypíše číslo řádku, **-c** vypíše pouze počet řádků obsahujících daný výraz, **-l** vypíše pouze jména souborů obsahujících shodný výraz, **-L** naopak vypíše jen jména souborů neobsahujících daný výraz, **-i** ignoruje velikost písmen, **-f** <​soubor>​ čte výrazy z daného souboru (na každém řádku jeden), **-o** vypíše jen tu část řádku, odpovídající výrazu, **-E** obdoba příkazu „egrep“,​ **-R** rekurzivně,​ **-w** vyhledá celá slova, jimž výraz vyhovuje, **--color** barevně zvýrazní odpovídající řetězec; není-li soubor uveden, čte ze STDIN\\ ''​$ grep linux notes''​ / ''​cat notes | grep linux''​\\ ''​$ grep '​^P.*r$'​ notes''​\\ ''​$ grep -E '​AB|CD'​ notes''​\\ ''​$ grep -R linux ~/​data''​\\ ''​$ ls -l | grep '​^d'''​ | | **grep** <​vyraz>​ (<​soubor/​adresar>​) | vyhledá v textovém souboru řetězce, které obsahují daný výraz (vypíše vždy celý řádek), **-v** naopak vypíše řádky, které daný řetězec neobsahují,​ **-n** vypíše číslo řádku, **-c** vypíše pouze počet řádků obsahujících daný výraz, **-l** vypíše pouze jména souborů obsahujících shodný výraz, **-L** naopak vypíše jen jména souborů neobsahujících daný výraz, **-i** ignoruje velikost písmen, **-f** <​soubor>​ čte výrazy z daného souboru (na každém řádku jeden), **-o** vypíše jen tu část řádku, odpovídající výrazu, **-E** obdoba příkazu „egrep“,​ **-R** rekurzivně,​ **-w** vyhledá celá slova, jimž výraz vyhovuje, **--color** barevně zvýrazní odpovídající řetězec; není-li soubor uveden, čte ze STDIN\\ ''​$ grep linux notes''​ / ''​cat notes | grep linux''​\\ ''​$ grep '​^P.*r$'​ notes''​\\ ''​$ grep -E '​AB|CD'​ notes''​\\ ''​$ grep -R linux ~/​data''​\\ ''​$ ls -l | grep '​^d'''​ |
 | **egrep** / **grep -E** <​vyraz>​ (<​soubor/​adresar>​) | vyhledá v textovém souboru řetězce za použití rozšířených regulárních výrazů; není-li soubor uveden, čte ze STDIN\\ ''​$ egrep -o '​^[^:​]+'​ /​etc/​passwd''​\\ (vypíše všechny uživatele v systému) | | **egrep** / **grep -E** <​vyraz>​ (<​soubor/​adresar>​) | vyhledá v textovém souboru řetězce za použití rozšířených regulárních výrazů; není-li soubor uveden, čte ze STDIN\\ ''​$ egrep -o '​^[^:​]+'​ /​etc/​passwd''​\\ (vypíše všechny uživatele v systému) |
-| **sed** (<​adresa>​) <​prikaz>​ (<​soubor>​) | filtruje a edituje text neinteraktivní formou (využití zejména ve skriptech), **-e** <​skript>​ provede daný skript, **-f** <​soubor>​ provede skript obsažený v daném souboru, **-i** provede změny přímo v souboru (jinak je nutné změny uložit použitím přesměrování),​ **-n** nevypíše výstup na STDOUT; adresa představuje buď pořadové číslo řádku od začátku vstupu (např. 1,10 = rozmezí řádků), znak  „$“ (poslední řádek vstupu) či vzorek (regulární výraz) ohraničený z obou stran oddělovačem – standardně „/“; příkaz **s** nahradí vzorek následujícím výrazem ohraničeným oddělovači (jen první vyhovující vzorek), //n// právě //n//tý výskyt vzorku, **g** nahradí vzorek globálně, u každého výskytu, **a** přidá výraz pod řádek se zadaným vzorkem, <​n>​**p** vypíše daný řádek souboru (s volbou "​-n"​),​ **d** smaže celý řádek obsahující daný výraz, **!**<​prikaz>​ provede příkaz pro všechny adresy, kromě adres uvedených; není-li soubor uveden, čte ze STDIN\\ ''​$ echo "11 x, 22 x, 33 x" | sed '​s/​x/​y/​2'''​\\ (nahradí pouze druhý výskyt řetězce „x“ řetězcem „y“)\\ ''​$ sed -i '​s/​retezec1/​retezec2/​g'​ soubor''​\\ (nahradí první řetězec druhým v celém souboru)\\ ''​$ sed 's/ \+/​\t/​g'​ test1 > test2''​\\ (nahradí v souboru různý počet mezer jedním tabulátorem)\\ ''​$ echo "Log retention:"​ $(sed -n '​3p;​6p'​ /​etc/​logrotate.conf)''​\\ (vypíše 3. a 6. řádek souboru)\\ ''​$ sed '/​dev/​!d'​ soubor''​\\ (vypíše řádky obsahující výraz „dev“)\\ ''​$ sed -i '​1,​10d'​ soubor''​\\ (smaže prvních 10 řádků souboru)\\ ''​$ sed -i '​5,​$d'​ soubor''​\\ (smaže vše od 5. řádku až po konec souboru)\\ ''​$ sed '​1,/​START/​d'​ soubor''​\\ (smaže vše do slova „START“ včetně)\\ ''​$ sed '​1,/​STOP/​!d'​ soubor''​\\ (smaže vše od slova „STOP“)\\ ''​$ sed -e '/​^#/​d;​ /^$/d' soubor1 > soubor2''​\\ (odstraní v souboru komentáře a prázdné řádky)\\ ''#​ sed -i '/​auth ​       required ​     pam_deny.so/​a auth        ​required ​     pam_tally2.so deny=5'​ /​etc/​pam.d/​system-auth-ac''​\\ (přidá výraz pod řádek se zadaným vzorkem)\\ ''​$ sed '/​^[^#​]*\(sha[25]\|md5\)/​!d'​ /​etc/​pam.d/​system-auth /​etc/​pam.d/​common-password 2> /dev/null | egrep -o "​sha[1256]{3}|md5"​ || sed '/​^[^#​]*ENCRYPT_METHOD/​!d'​ /​etc/​login.defs''​\\ (zobrazí šifrovací algoritmus pro nově vytvořená hesla) |+| **sed** (<​adresa>​) <​prikaz>​ (<​soubor>​) | filtruje a edituje text neinteraktivní formou (využití zejména ve skriptech), **-e** <​skript>​ provede daný skript, **-f** <​soubor>​ provede skript obsažený v daném souboru, **-i** provede změny přímo v souboru (jinak je nutné změny uložit použitím přesměrování),​ **-n** nevypíše výstup na STDOUT; adresa představuje buď pořadové číslo řádku od začátku vstupu (např. 1,10 = rozmezí řádků), znak  „$“ (poslední řádek vstupu) či vzorek (regulární výraz) ohraničený z obou stran oddělovačem – standardně „/“; příkaz **s** nahradí vzorek následujícím výrazem ohraničeným oddělovači (jen první vyhovující vzorek), //n// právě //n//tý výskyt vzorku, **g** nahradí vzorek globálně, u každého výskytu, **a** přidá výraz pod řádek se zadaným vzorkem, <​n>​**p** vypíše daný řádek souboru (s volbou "​-n"​),​ **d** smaže celý řádek obsahující daný výraz, **!**<​prikaz>​ provede příkaz pro všechny adresy, kromě adres uvedených; není-li soubor uveden, čte ze STDIN\\ ''​$ echo "11 x, 22 x, 33 x" | sed '​s/​x/​y/​2'''​\\ (nahradí pouze druhý výskyt řetězce „x“ řetězcem „y“)\\ ''​$ sed -i '​s/​retezec1/​retezec2/​g'​ soubor''​\\ (nahradí první řetězec druhým v celém souboru)\\ ''​$ sed 's/ \+/​\t/​g'​ test1 > test2''​\\ (nahradí v souboru různý počet mezer jedním tabulátorem)\\ ''​$ echo "Log retention:"​ $(sed -n '​3p;​6p'​ /​etc/​logrotate.conf)''​\\ (vypíše 3. a 6. řádek souboru)\\ ''​$ sed '/​dev/​!d'​ soubor''​\\ (vypíše řádky obsahující výraz „dev“)\\ ''​$ sed -i '​1,​10d'​ soubor''​\\ (smaže prvních 10 řádků souboru)\\ ''​$ sed -i '​5,​$d'​ soubor''​\\ (smaže vše od 5. řádku až po konec souboru)\\ ''​$ sed '​1,/​START/​d'​ soubor''​\\ (smaže vše do slova „START“ včetně)\\ ''​$ sed '​1,/​STOP/​!d'​ soubor''​\\ (smaže vše od slova „STOP“)\\ ''​$ sed -e '/​^#/​d;​ /^$/d' soubor1 > soubor2''​\\ (odstraní v souboru komentáře a prázdné řádky)\\ ''#​ sed -i '/auth%%[[:​blank:​]]%%\+required%%[[:​blank:​]]%%\+pam_deny.so/​a auth\trequired\tpam_tally2.so deny=5'​ /​etc/​pam.d/​system-auth-ac''​\\ (přidá výraz pod řádek se zadaným vzorkem)\\ ''​$ sed '/​^[^#​]*\(sha[25]\|md5\)/​!d'​ /​etc/​pam.d/​system-auth /​etc/​pam.d/​common-password 2> /dev/null | egrep -o "​sha[1256]{3}|md5"​ || sed '/​^[^#​]*ENCRYPT_METHOD/​!d'​ /​etc/​login.defs''​\\ (zobrazí šifrovací algoritmus pro nově vytvořená hesla) |
 | **awk** '<​program>'​ (<​soubor>​) | filtruje text neinteraktivní formou (využití zejména ve skriptech); program je série pravidel obsahující vzorek, akci či obojí, akce je uzavřena do „{}“; **-f** <​soubor>​ čte program z daného souboru, **-F** <​retezec>​ určí oddělovač položek vstupu, **-v** <​promenna>​=<​hodnota>​ nastaví danou proměnnou v rámci programu; mezi vestavěné proměnné patří **NR** počet záznamů (řádků) oddělených novým řádkem, **NF** počet položek na řádku oddělených oddělovačem (implicitně bílým místem), na jednotlivé položky se odkazuje $1, $2 atd., $0 odkazuje na celý záznam, **RS** definuje oddělovač záznamů, **FS** definuje oddělovač položek, **ORS** definuje výstupní oddělovač záznamů, **OFS** definuje výstupní oddělovač položek; pro porovnání řetězců slouží operátory **==** je rovno, **!=** není rovno, **<** méně než, **>** více než, **<=** méně než nebo rovno, **>=** více než nebo rovno; regulární výrazy jsou uzavřeny v „/​“„/​“,​ pro porovnání se používá **~** vzorek odpovídá RE, **!~** vzorek neodpovídá RE;  **||** logické „nebo“, **&&​** logické „a“; není-li soubor uveden, čte ze STDIN\\ ''​$ awk '/​nameserver/​ {print}'​ /​etc/​resolv.conf''​\\ (vypíše ze souboru řádky obsahující „nameserver“)\\ ''​$ awk '​{print $1, $2}' /​etc/​fstab''​\\ (vypíše každé první a druhé slovo všech řádků souboru)\\ ''​$ awk -F ":"​ '​{print $1, $7}' /​etc/​passwd''​\\ (vypíše všechny uživatele a jejich přihlašovací shell)\\ ''​$ awk '​{print $1 > "​soubor1";​ print $2 > "​soubor2"​}'​ test''​\\ (přesměruje výpis prvního a druhého slova do souborů)\\ ''​$ awk '​length > 10' seznam.txt''​\\ (vypíše řádky delší než deset znaků)\\ ''​$ awk 'NF < 5' seznam.txt''​\\ (vypíše řádky kratší než pět slov)\\ ''​$ awk 'NR == 5' error.log''​\\ (vypíše 5. řádek souboru)\\ ''​$ awk 'NR == 5, NR == 10' album''​\\ (vypíše 5. až 10. řádek souboru)\\ ''​$ awk '​{print NR,"​->",​NF}'​ seznam.txt''​\\ (vypíše počet slov u každého řádku souboru)\\ ''​$ ls -l | grep "​^-"​ | awk '{sum += $5} END {print sum/​1024/​1024}'''​\\ (vypíše velikost všech souborů v pracovním adresáři v MB)\\ ''#​ ne=$(awk -F ":"​ '{if (length($2) > 2 && ($5 == ""​ || $5 >= 99999)) print $1}' /​etc/​shadow);​ %%[[ -z "​$ne"​ ]]%% && echo "​NONE"​ || echo "​$ne"​ | tr " " "​\n"''​\\ (vypíše uživatele s neomezenou dobou platnosti hesla)\\ ''​$ sed '/​^[^:​]/​!d'​ /​etc/​inittab | awk -F "#"​ '​{print $1}' | awk -F ":"​ '{if %%(($4 !~ /^\// && $4 !~ /^$/) || ($4 ~ /​[|]+.?​[^/​]/​ && $4 !~ /^$/))%% print $4}'''​\\ (vyhledá v souboru příkazy, které nejsou uvedeny absolutní cestou) | | **awk** '<​program>'​ (<​soubor>​) | filtruje text neinteraktivní formou (využití zejména ve skriptech); program je série pravidel obsahující vzorek, akci či obojí, akce je uzavřena do „{}“; **-f** <​soubor>​ čte program z daného souboru, **-F** <​retezec>​ určí oddělovač položek vstupu, **-v** <​promenna>​=<​hodnota>​ nastaví danou proměnnou v rámci programu; mezi vestavěné proměnné patří **NR** počet záznamů (řádků) oddělených novým řádkem, **NF** počet položek na řádku oddělených oddělovačem (implicitně bílým místem), na jednotlivé položky se odkazuje $1, $2 atd., $0 odkazuje na celý záznam, **RS** definuje oddělovač záznamů, **FS** definuje oddělovač položek, **ORS** definuje výstupní oddělovač záznamů, **OFS** definuje výstupní oddělovač položek; pro porovnání řetězců slouží operátory **==** je rovno, **!=** není rovno, **<** méně než, **>** více než, **<=** méně než nebo rovno, **>=** více než nebo rovno; regulární výrazy jsou uzavřeny v „/​“„/​“,​ pro porovnání se používá **~** vzorek odpovídá RE, **!~** vzorek neodpovídá RE;  **||** logické „nebo“, **&&​** logické „a“; není-li soubor uveden, čte ze STDIN\\ ''​$ awk '/​nameserver/​ {print}'​ /​etc/​resolv.conf''​\\ (vypíše ze souboru řádky obsahující „nameserver“)\\ ''​$ awk '​{print $1, $2}' /​etc/​fstab''​\\ (vypíše každé první a druhé slovo všech řádků souboru)\\ ''​$ awk -F ":"​ '​{print $1, $7}' /​etc/​passwd''​\\ (vypíše všechny uživatele a jejich přihlašovací shell)\\ ''​$ awk '​{print $1 > "​soubor1";​ print $2 > "​soubor2"​}'​ test''​\\ (přesměruje výpis prvního a druhého slova do souborů)\\ ''​$ awk '​length > 10' seznam.txt''​\\ (vypíše řádky delší než deset znaků)\\ ''​$ awk 'NF < 5' seznam.txt''​\\ (vypíše řádky kratší než pět slov)\\ ''​$ awk 'NR == 5' error.log''​\\ (vypíše 5. řádek souboru)\\ ''​$ awk 'NR == 5, NR == 10' album''​\\ (vypíše 5. až 10. řádek souboru)\\ ''​$ awk '​{print NR,"​->",​NF}'​ seznam.txt''​\\ (vypíše počet slov u každého řádku souboru)\\ ''​$ ls -l | grep "​^-"​ | awk '{sum += $5} END {print sum/​1024/​1024}'''​\\ (vypíše velikost všech souborů v pracovním adresáři v MB)\\ ''#​ ne=$(awk -F ":"​ '{if (length($2) > 2 && ($5 == ""​ || $5 >= 99999)) print $1}' /​etc/​shadow);​ %%[[ -z "​$ne"​ ]]%% && echo "​NONE"​ || echo "​$ne"​ | tr " " "​\n"''​\\ (vypíše uživatele s neomezenou dobou platnosti hesla)\\ ''​$ sed '/​^[^:​]/​!d'​ /​etc/​inittab | awk -F "#"​ '​{print $1}' | awk -F ":"​ '{if %%(($4 !~ /^\// && $4 !~ /^$/) || ($4 ~ /​[|]+.?​[^/​]/​ && $4 !~ /^$/))%% print $4}'''​\\ (vyhledá v souboru příkazy, které nejsou uvedeny absolutní cestou) |
 | **tee** (<​soubor>​) | čte ze STDIN a zapisuje na STDOUT a případně do daného souboru, **-a** nepřepíše obsah souboru, výstup přidá na jeho konec\\ ''​$ ls | tee /tmp/test | wc -l''​\\ (výstup příkazu „ls“ zapíše do souboru „/​tmp/​test“,​ na STDOUT zobrazí pouze počet řádků)\\ ''​$ who | sort | tee -a log1 log2''​\\ (setříděný výstup příkazu „who“ zapíše jak na STDOUT, tak do souborů „log1“ a „log2“) | | **tee** (<​soubor>​) | čte ze STDIN a zapisuje na STDOUT a případně do daného souboru, **-a** nepřepíše obsah souboru, výstup přidá na jeho konec\\ ''​$ ls | tee /tmp/test | wc -l''​\\ (výstup příkazu „ls“ zapíše do souboru „/​tmp/​test“,​ na STDOUT zobrazí pouze počet řádků)\\ ''​$ who | sort | tee -a log1 log2''​\\ (setříděný výstup příkazu „who“ zapíše jak na STDOUT, tak do souborů „log1“ a „log2“) |
Řádek 68: Řádek 68:
 | **convmv** <​soubor/​adresar>​ | změní typ kódování jména souboru/​adresáře,​ **-f** <​zdrojovy_kod>​ určí původní kód, **-t** <​cilovy_kod>​ určí nový kód, **-i** interaktivní režim, **-r** rekurzivně,​ **--notest** zajistí skutečné překódování souboru\\ ''​$ convmv --notest -f cp1250 -t UTF-8 *''​ | | **convmv** <​soubor/​adresar>​ | změní typ kódování jména souboru/​adresáře,​ **-f** <​zdrojovy_kod>​ určí původní kód, **-t** <​cilovy_kod>​ určí nový kód, **-i** interaktivní režim, **-r** rekurzivně,​ **--notest** zajistí skutečné překódování souboru\\ ''​$ convmv --notest -f cp1250 -t UTF-8 *''​ |
 | **recode** <​zdrojovy_kod>​**..**<​cilovy_kod>​ <​soubor>​ | změní typ kódování textových souborů, **-l** vypíše typy kódování,​ **-f** potlačí chybový výstup, **-v** podrobný výpis\\ ''​$ echo '​Výpis jmen všech souborů'​ | recode -f UTF-8..flat''​\\ ''​$ recode ..HTML < page.txt > page.html''​\\ ''​$ find . -name "​*.txt"​ -exec recode cp1250..UTF-8 '​{}'​ \;''​ | | **recode** <​zdrojovy_kod>​**..**<​cilovy_kod>​ <​soubor>​ | změní typ kódování textových souborů, **-l** vypíše typy kódování,​ **-f** potlačí chybový výstup, **-v** podrobný výpis\\ ''​$ echo '​Výpis jmen všech souborů'​ | recode -f UTF-8..flat''​\\ ''​$ recode ..HTML < page.txt > page.html''​\\ ''​$ find . -name "​*.txt"​ -exec recode cp1250..UTF-8 '​{}'​ \;''​ |
-| **convert** <​zdroj>​ <cil> | změní formát ​obrázkových ​souborů, případně i jejich velikost\\ ''​$ convert image.tif image.jpg''​ |+| **convert** <​zdroj>​ <cil> | změní formát souborů, případně i jejich velikost\\ ''​$ convert image.tif image.jpg''​\\ ''​$ IFS=',';​ cmds="​hostname -s,​date,​ifconfig -a"; for cmd in $cmds; do { echo "​[$USER@${HOSTNAME} ${PWD/#​$HOME/​~}]"​ "​${cmd}";​};​ eval "​${cmd}";​ done > info.txt && convert -background black -fill white info.txt info.png''​\\ (vytvoří printscreen terminálu se zadanými příkazy) ​|
 | **aplay** <​soubor>​ | přehraje daný audio soubor | | **aplay** <​soubor>​ | přehraje daný audio soubor |
 | **arecord** <​soubor>​.wav | vytvoří „wav“ audio soubor | | **arecord** <​soubor>​.wav | vytvoří „wav“ audio soubor |
Poslední úprava: 2019/04/12 11:25 autor: Miroslav Bernát

počet návštěv: