P004 UNIX
Nějaké příklady
|
Úvod
|
Ve všech souborech v běžném adresáři, které mají příponu jména '.tex'
nahraďte řetězec ' | \end{syntax} ' řetězcem '\end{syntax}% '.
Zjistěte, zda existuje adresář zadaný prvním pozičním parametrem. Pokud ne, vytvořte jej a tento stav oznamte uživateli hlášením na stnd. chybový výstup. Vytvořte skript, který smaže všechny soubory zadané jako poziční parametry. Před mazáním každého souboru nechť se zeptá, zda se tento soubor má smazat. Uživatel musí odpovědět 'y' nebo 'n'. Pokud odpoví 'y', soubor smažte, pokud odpoví cokoli jiného, soubor ponechte. Použijte jiné řešení než 'rm -i'. Předejte na standardní výstup poslední poziční parametr. Zjistěte, zda existuje proveditelný soubor zadaný prvním pozičním parametrem. Pokud ano, spusťte jej a předejte mu další poziční parametry. Následující posloupností příkazů přejmenujte všechny soubory.txt na soubory.TXT v běžném adresáři. Doplňte příkaz ????? ls *.txt > pom ed pom <<EOF ????? w q EOF sh pom rm pom Máte v běžném adresáři soubory jmen např.:
Hromadně přejmenujte všechny soubory pojmenované pouze
jednou číslicí na 01 02 03 ... Ostatní ponechte bez
přejmenování.
Napište skript, který zkontroluje, zda je zadán právě jeden poziční parametr a tento jeden poziční parametr je jméno existujícího neprázdného souboru. Pokud není, pak o tom vypište hlášení. Na standardní chybový výstup vypište hlášení '*Stala se chyba*'. Napište příkaz, který smaže všechny normální soubory v běžném adresáři a všech jeho podadresářích, které byly naposledy změněny před více než dvěma dny. Napište příkaz, který smaže všechny normální soubory v běžném adresáři a všech jeho podadresářích, které neobsahují řetězec 'nemaz'. Napište příkaz, který smaže všechny soubory (nikoli adresáře) v běžném adresáři a všech jeho podadresářích, které mají nulovou velikost. Napište příkaz, který smaže všechny soubory (nikoli adresáře) v běžném adresáři a všech jeho podadresářích, které obsahují řetězec 'malý pivo'. Na standardní výstup předejte počet normálních souborů umístěných v adresářovém podstromu od běžného adresáře, které obsahují alespoň jeden řetězec 'velký pivo'. Napište příkaz, který v běžném adresáři a všech jeho podadresářích přidá normálním souborům a podadresářům právo zápisu pro skupinu. Napište příkaz, který v běžném adresáři a všech jeho podadresářích spočítá počet souborů a adresářů, které buď vlastní uživatel 'novak', nebo kdekoli ve jméně obsahují řetězec 'novak'.
Soubor obsahuje pouze záznamy tohoto typu. Každý záznam na
jednom řádku. Pole na řádku jsou oddělena mezerou.
Všechny záznamy souboru změňte do tvaru:
Napište příslušný příkaz pro editor ed nebo řádkový režim
editoru vi. Realizujte jedním příkazem.
Soubor obsahuje pouze záznamy tohoto typu. Každý záznam na
jednom řádku. Pole na řádku jsou oddělena mezerou.
Všechny záznamy souboru změňte do tvaru:
Napište příslušný příkaz pro editor ed nebo řádkový režim
editoru vi. Realizujte jedním příkazem.
Napište příkaz pro editor ed nebo řádkový režim editoru vi, který všechny řádky v souboru nahradí z tvaru:
do tvaru:
Realizujte jedním příkazem.
Soubor CONFIG obsahuje řádky ve tvaru: Nastavte proměnnou SEMESTR na hodnotu klíče 'tedsemestr' ze souboru CONFIG (tj. v tomto případě nechť proměnná SEMESTR nabyde hodnoty 1996leto).starysemestr:1995zima tedsemestr:1996leto novysemestr:1996zima Napište filtr pomocí příkazu 'sed', který bude měnit záznamy z typu:
na typ:
tj. vypustí se třetí pole. Čtvrté pole v originálním záznamu může
obsahovat libovolný počet dvojteček.
Ze souboru /etc/passwd, který má záznamy ve tvaru:
vytvořte seznam ve tvaru (je zaměněno pořadí příjmení a jména):
Všem položkám běžného adresáře nastavte přístupová práva tak, aby s nimi mohl jakkoli pracovat pouze vlastník. Pozor: neproveditelným souborům nenastavujte 'x'. Všem adresářům a proveditelným souborům běžného adresáře nastavte přístupová práva tak, aby do nich mohli vstupovat a spouštět je i ostatní. Přístupová práva neproveditelných souborů ponechte beze změny. Napište všechny potřebné příkazy, kterými vytvoříte adresář pom, v němž bude moci kdokoli vytvářet soubory, ale rušit je bude smět pouze jejich vlastník. Jakým příkazem zruším všechny soubory a podadresáře (i neprázdné) běžného adresáře, jejichž jméno začíná tečkou (pozor - nesmějí se zrušit položky '.' a '..'). Provedeme-li posloupnost příkazů: Kolik odkazů bude uvedeno na řádku, který vypíše příkaz ls?rm -rf /tmp/a mkdir -p /tmp/a/b/c /tmp/a/b/d /tmp/a/b/d/e touch /tmp/a/b/d/f /tmp/a/b/f ls -ld /tmp/a/b Všem adresářům v běžném (pouze) adresáři přidejte právo čtení a vstupu pro ostatní. Napište skript, který soubor zadaný prvním pozičním parametrem zkopíruje do souborů zadaných druhým až posledním pozičním parametrem. Napište skript, kterému při spuštění zadáme na příkazovém řádku jména souborů. Pokud je zadáno více než 100 souborů, skript všechny soubory smaže. Napište skript, který smaže všechny soubory zadané pozičními parametry. Pokud je však některý z pozičních parametrů '*', vypište dotaz, zda lze všechny soubory v běžném adresáři smazat. Pokud je odpověď 'y', potom je smažte. Napište skript, který přečte všechny soubory zadané na příkazovém řádku a jejich obsah předá na standardní výstup (varianta příkazu cat) s tím, že opakující se řádky (ze všech) předá pouze jednou. Opakující se řádky nemusejí být bezprostředně za sebou. Pořadí řádků na výstupu nemusí odpovídat pořadí řádků na vstupu. Napište skript, který v běžném adresáři ze všech souborů vyřadí řádky, které v prvním sloupci začínají znakem #. Napište příkaz, který čte standardní vstup a na výstup předá pouze ty řádky, které v prvním sloupci nezačínají znakem # Proměnná KDO obsahuje libovolně dlouhý seznam uživatelů oddělených mezerami. Vyřaďte vlastní jméno, které získáte z proměnné LOGNAME. Napište skript, který ze všech souborů v běžném adresáři vyřadí řádky, které začínají řetězcem 'Jan Novák'. Ze seznamu cest zadaných v proměnné PATH vyjměte cestu '.'. Napište skript, který proměnným prom1, prom2, prom3, ... přiřadí postupně obsahy pozičních parametrů (první do prom1, druhý do prom2, ...). Počet pozičních parametrů není omezen. Proměnné LAST přiřaďte poslední poziční parametr.
|
Michal Brandejs brandejs@informatics.muni.cz
| |