Práce s textovými soubory

Editor Vi

Obsluha

Spuštění:

vi soubor (soubor nemusí existovat)

Základním příkazem pro ukončení je :q. To projde pouze v případě, že jste v textu neprovedli žádné změny. Jinak skončíte s chybovým hlášením:

No write since last change (use ! to override)

Říká, že poslední změny v souboru nemáte uloženy. Vás další postup závisí na tom, zda je chcete uložit nebo ne.
Ukončení s uložením změn:
Klasický postup velí nejprve uložit změny příkazem :w a poté ukončit editor pomocí :q. Oba příkazy můžete sloučit do jednoho společného :wq.
Jelikož je tato varianta poměrně častá, byla pro ni vytvořena ještě jedna zkratka. Pokud v normálním režimu zadáte ZZ (dvě velká "Z"), provede se "inteligentní ukončení". Pokud byl soubor změněn, uloží se. Poté editor ukončí svou činnost.

Ukončení bez ukládání změn:
Jestliže změny nechcete uložit použijte příkaz :q!. Obdobně lze vykřičníkem přehlušit protesty i v několika dalších situacích.

Tři režimy práce

Příkazový mód:

Po otevření souboru je editor nastaven v příkazovém módu. V rámci příkazového módu můžete provádět následující operace:

Vkládací mód:

V rámci vkládacího režimu je možné přidávat nový text do souboru. K opuštění vkládacího režimu je potřeba stisknout klávesu ESC.
Následující příkazy vyvolají vkládací mód:

Režim příkazového řádku

Slouží k zadávání příkazů na příkazovém řádku. V něm se realizují nejkomplikovanější operace, jako je vyhledání a náhrada řetězce znaků, práce se soubory a podobně. Režim ex je zahájen znakem :. Bývá zvykem jména příkazů pro příkazový řádek zahajovat dvojtečkou, aby se tato skutečnost zdůraznila. Režim ex je jednorázový. Po provedení příkazu (který odešlete klávesou Enter) se editor vrátí do normálního režimu. Pokud chcete dosáhnout téhož, ale bez provedení příkazu, použijte jako obvykle [Esc].

Ovládání

Základní pohyby kurzoru

Samozřejmě fungují i klasické kurzorové klávesy. Pro zmíněnou obludnost existují dva rozumné důvody:

  1. Editor vi, který vznikal v době, kdy kurzorové klávesy nebyly.
  2. Lidé, píšící všemi deseti, nemusejí přestěhovávat ruce ze základní klávesnice a zoufale se tak brzdit.

Druhým nejčastějším pohybem je posun o jednu obrazovku. Ten ve vim zajistí klávesové kombinace [Ctrl-F] (směrem dolů) a [Ctrl-B] (vzhůru). V běžných implementacích můžete pro tyto pohyby používat i obvyklé klávesy [PageDown] a [PageUp]. Vi se snaží při posunu na sousední řádek udržovat kurzor ve stejném sloupci. Je-li některý řádek kratší, posune kurzor na jeho poslední znak. Pokud se následující řádek opět prodlouží, vrátí se do původního sloupce.

Opakování příkazů

Téměř všechny příkazy vi lze provádět opakovaně. Pokud nejprve napíšete číslo n a po něm určitý příkaz, bude proveden n-krát. Například pohyb o 20 znaků doleva by zajistil příkaz 20h. Opakovat lze skutečně prakticky všechno, včetně komplikovaných věcí.
Další věci pro opakování:

Logické poskoky

Pro posuny o slovo slouží následující skupina příkazů:

Copy and paste

Veškeré likvidační operace mají jednu zajímavou vlastnost: vymazaný text se automaticky ukládá do registru, z nějž jej následně můžete vložit na jiné místo. O vložení se postará klávesa p (vkládá za aktuální pozici) nebo P (před aktuální pozici).

Odvolávání a vracení

Hledání

Příkaz k vyhledání řetězce znaků můžete ve vim zadat dvěma základními způsoby.

Je-li nastaveno :set ignorecase, vi je nebude rozlišovat. Pokud naopak použijete :set noignorecase, budou malá a velká písmena považována za odlišná (to je implicitní stav). Při nastavení :set smartcase se rozlišování malých/velkých písmen snaží chovat inteligentně. Zapíšete-li hledaný řetězec malými písmeny, hledá malá i velká. Pokud použijete nějaká velká písmena, hledá řetězec přesně v tom tvaru, ve kterém jste jej zadali.

Hledání je totiž pohyb se vším, co k němu náleží. Můžete ho proto kombinovat s modifikátory, které byly popsány v kapitole o editaci textu. Takže například d/ahoj vymaže vše od stávající pozice kurzoru až k nejbližšímu následujícímu výskytu řetězce "ahoj".

Editor Nano

 .d8888b.  888b    888 888     888 
d88P  Y88b 8888b   888 888     888 
888    888 88888b  888 888     888 
888        888Y88b 888 888     888 
888  88888 888 Y88b888 888     888 
888    888 888  Y88888 888     888 
Y88b  d88P 888   Y8888 Y88b. .d88P 
 "Y8888P88 888    Y888  "Y88888P"  
                               
88888b.   8888b.  88888b.   .d88b. 
888 "88b     "88b 888 "88b d88""88b
888  888 .d888888 888  888 888  888
888  888 888  888 888  888 Y88..88P
888  888 "Y888888 888  888  "Y88P"

Obsluha

Otevírání a vytváření souborů

Otevírání souborů i jejich vytváření je s nanem snadné, stačí jen napsat:

nano nazev_souboru

Nano nemá více režimů, to znamená, že můžete ihned začít psát a vkládat text. Jestliže editujete konfigurační soubor jako třeba /etc/fstab, použijte parametr -w (zakázání zalamování slov).

nano -w /etc/fstab

Je opravdu velmi důležité, abyste při otevírání konfiguračních souborů použili tento přepínač. Neučiníte-li tak, může se stát, že systém již nabootuje nebo bude mít jiné problémy.

Ukládání a ukončení

Chcete-li uložit provedené změny, zmáčkněte [Ctrl+O]. Chcete-li editor ukončit, použijte [Ctrl+X]. Budete-li ukončovat editor s otevřeným změněným soubor, nano se Vás zeptá, zda jej budete chtít uložit. Pokud změny nechcete zachovat, jenom zmáčkněte N, pro jejich uložení Y. V tom případě budete dotázáni na jméno souboru; napište jej a zmáčkněte Enter. Pokud jste omylem potvrdili, že chcete uložit soubor, avšak rozmysleli jste si to, můžete proces při žádosti o jméno souboru přerušit stiskem [Ctrl+C].

Vyjmutí a vkládání

Pro vyjmutí jedné řádky použijte [Ctrl+K] (držte CTRL a zároveň zmáčkněte k) — řádek zmizí. Pro vložení najeďte kurzorem tam, kam má text přijít, a zmáčkněte [Ctrl+U] — řádka byla vložena. Potřebujete-li přesunout celý odstavec, jednoduše pomocí [Ctrl+K] vyjměte řádek po řádce a pak je jedním [Ctrl+U] vložte na potřebné místo. Jak vidíte, celý odstavec se posunul tam, kam jste chtěli.

Hledání textu

Hledání textu je snadné, stačí zmáčknout [Ctrl+W] (od anglického "WhereIs"), napsat hledaný řetězec a zmáčknout Enter. Chcete-li hledat další výskyt, zmáčkněte Alt+W.
Poznámka: V nápovědě nano je klávesa Ctrl značena jako stříška (^), takže například [Ctrl+W] je zapsáno jako ^W. Klávesa Alt je značena jako M (od "Meta"), tudíž M-W znamená Alt+W.

Přesměrování

Přesměrování výstupu

Standardní výstup a standardní chybový výstup (zobrazený na terminálu) lze přesměrovat jinam, nejčastěji do souboru:

ls > seznam

Vznikne soubor seznam s výpisem obsahu adresáře. Pozor, pokud už soubor seznam existuje bude přepsán!
Zobrazení souboru provedete například příkazem cat.

Význam znaků <, >:

Pokud na konec příkazu přidáte řetězec >>název_souboru, výstup příkazu se připojí k souboru se zadaným názvem místo toho, aby se soubor přepsal. Symbol >> se označuje jako operátor připojení výstupu.
Chcete-li například připojit soubor soubor2 k souboru soubor1, zadejte:

cat soubor2 >> soubor1

Poznámka: Jestliže soubor soubor1 neexistuje, je vytvořen.

Zřetězení textových souborů

Sloučení různých souborů do jednoho souboru se označuje jako zřetězení. Na příkazový řádek zadejte například:

cat soubor1 soubor2 soubor3 > soubor4

Vytvoří se soubor soubor4, který se skládá z obsahu souborů soubor1, soubor2 a soubor3 připojených v daném pořadí. Pozor, příkaz cat nejdříve vytvoří výstupní soubor, což je nutné vzít na vědomí v případě složitějších řetězení.

Přesměrování vstupu

Pokud na konec příkazu přidáte řetězec < název_souboru, vstup příkazu se čte ze souboru se zadaným názvem. Symbol < se označuje jako operátor přesměrování vstupu.
Poznámka: Vstup lze přesměrovat pouze pro ty příkazy, které standardně přebírají vstup z klávesnice.

mail tomas < dopis1

Odešle soubor dopis1 jako zprávu uživateli tomas.

Černá díra

Soubor /dev/null je speciální soubor. Tento soubor má jedinečnou vlastnost, že je vždy prázdný. Všechna data, která odešlete do souboru /dev/null, se zahazují. Tato vlastnost je užitečná, když spouštíte program nebo příkaz, který generuje výstup, který chcete ignorovat.

Kromě standardního vstupu a výstupu příkazy často vytvářejí jiné druhy výstupu, například chybové a stavové zprávy známé jako diagnostický výstup. Podobně jako standardní výstup se i standardní chybový výstup vypisuje na obrazovku, pokud není přesměrován.

Máte například program nazvaný mujprog, který přijímá vstup z obrazovky a za běhu generuje zprávy, které byste chtěli ignorovat. Chcete-li číst vstup ze souboru mujskript a vyřadit standardní výstup zpráv, zadejte:

mujprog < mujskript 2> /dev/null

V tomto případě používá program mujprog soubor mujskript jako vstup a veškerý standardní chybový výstup se zahodí.

Kolony

Roura - pipe
Nástroj pro spojování procesů do řetězce pomocí vzájemného propojení standardních proudů tak, že je vždy výstup je nasměrován přímo do vstupu . Jde o jednosměrnou komunikaci.

V příkladu uvedeném níže příkaz ls vypisuje obsah adresáře a less je program, který umožňuje prohlížet obsah svého vstupu po jednotlivých stránkách, vracet se a vyhledávat. Kolona příkazů v příkladu tedy umožní prohlížet celý výpis postupně, i když se nevejde na jednu obrazovku terminálu.

ls -l | less