Rheinwerk Computing Linux - 7 The Shell

7.11 Efektívna práca s Bashom

Táto podsekcia vám má ukázať, ako si môžete uľahčiť každodennú prácu s bash (Bourne-Again-Shell).

computing

7.11.1 História príkazov

Určite by ste mali poznať najjednoduchšiu funkciu bash, ktorá za vás pracuje: históriu príkazov. Ukladá naposledy zadané príkazy. Máte k nim prístup a nemusíte ich znova zadávať, aby ste ich získali späť. Okrem toho bash ponúka možnosť úpravy týchto príkazov.

Jednoduché volanie do histórie vám poskytne prehľad príkazov obsiahnutých v histórii. Po zadaní čísla sa zobrazí posledných n záznamov.

Výpis 7.59 História príkazov

Môžete vymazať nechcené záznamy v histórii zo zoznamu histórie pomocou histórie -d.

Rolovanie v histórii

Predpokladajme napríklad, že bol vykonaný príkaz find/usr/local/bin -name "názov súboru". Teraz chcete spustiť ten istý príkaz s iným názvom súboru. Aby ste nemuseli všetko znova zadávať, môžete posledný príkaz zadaný do príkazového riadku načítať kurzorovou klávesou hore.

Ďalším stlačením klávesu so šípkou nahor program bash znovu načíta príkaz, ktorý bol volaný pred posledným, do príkazového riadku atď. - je to také jednoduché. Pomocou klávesu so šípkou dole môžete znova prechádzať históriu vpred.

Úpravy v príkazovom riadku

Aby sa prispôsobilo staré volanie hľadania, musí sa do starého príkazového vstupu vložiť nový názov súboru. Pomocou kurzorových klávesov sa môžete pohybovať v príkazovom riadku doľava a doprava a mazať a vkladať znaky na všetkých pozíciách.

Výkričník má v bashe veľmi zvláštnu funkciu. Používa sa na volanie príkazov z histórie.

Posledný zadaný príkaz môžete opakovať s dvoma výkričníkmi:

Výpis 7.60 Opätovné vykonanie posledného príkazu

Môžete tiež opakovať jeden z príkazov uložených v histórii príkazov zadaním čísla príkazu. Číslo histórie príkazu môžete získať zavolaním príkazu history. Príkaz sa potom vykoná znova pomocou! N (kde n je číslo príkazu).

Výpis 7.61 !n

Vyhľadajte príkazy

Veľmi užitočnou vlastnosťou bash je, že dokáže vyhľadávať príkazy zadaním prvých niekoľkých znakov príkazu. Teraz si asi hovoríte, čo si tým môžete predstaviť? Ako to často býva, túto funkčnosť je možné najlepšie vysvetliť na príklade.

[napr.] Užívateľ najskôr zadá príkaz uname a potom príkaz uptime. Teraz by chcel znova spustiť uptime, neskôr premenovať, bez toho, aby znovu zadával tieto príkazy. Prvý pohľad do histórie príkazov je často ťažkopádny. Preto používateľ používa vyhľadávanie príkazov.

Najjednoduchší variant je teraz nasledovný: Používateľ zadá výkričník a potom okamžite nasleduje za prvým písmenom príkazu, tj „U“. Shell potom zavolá posledný príkaz, ktorý začal s „u“, teda uptime. Ale ak chce užívateľ volať uname, nestačí vložiť za výkričník znak „u“. Aby ste to dosiahli, musíte zadať druhé písmeno príkazu, tj „N“, potom sa znovu vykoná posledný príkaz, ktorý sa začal na „UN“:

Výpis 7.62 Hľadanie príkazov

Posledný príkaz, ktorý obsahoval konkrétny reťazec, nájdete volaním !? bež znova.

Z vreca trikov

Toto je oveľa pohodlnejšie robiť s kombináciou klávesov Ctrl + R. Pomocou tohto postupu vám bash automaticky zobrazí, ktorý príkaz by sa vykonal pri úprave príkazového riadku:

Výpis 7.63 Ctrl + R

Nahraďte časti starých príkazov

Pamätáte si na opakované volanie, podľa ktorého bolo treba upraviť, aby ste vyhľadali nový názov súboru? To je možné v bash znova zjednodušiť, ak bol príkaz find posledný zadaný. Zadaním znakového reťazca, ktorý sa má nahradiť v poslednom príkaze, možno vykonať starý príkaz upravený.

Uvedené volanie hľadania vyzeralo takto: find/usr/local/bin -name „názov súboru“. Aby bolo možné vyhľadať názov súboru zsh a použiť ten istý príkaz, musí sa so starým príkazom manipulovať podľa vzoru \ Alter-String \ NewString \, teda:

Výpis 7.64 Príkaz find s novým názvom súboru

7.11.2 Automatické dopĺňanie názvov súborov

Podobnou praktickou funkciou ako história príkazov je automatické dopĺňanie názvov súborov, ktoré sa ovláda v bashe klávesom tab. Pretože programy zobrazujú súbory aj v systéme Unix, táto funkcia s nimi samozrejme tiež pracuje.

Pri použití klávesu Tab je potrebné rozlišovať medzi dvoma prípadmi:

  • Existuje iba jeden zodpovedajúci súbor.
  • Existuje niekoľko zodpovedajúcich súborov.

Iba jeden kandidát

Pre prvý prípad vytvoríme ukážkový adresár, do ktorého umiestnime súbor s názvom abc.txt.

Výpis 7.65 Vytvorte vzorový adresár so súborom

Ak teraz používame program ako/bin/ls, ktorému tento súbor odovzdáme ako parameter, musíme stlačiť kláves Tab, pretože v adresári je iba jeden súbor a bash automaticky priradí názov súboru Požadovaná pozícia vo vstupe.

[Napr.] Vyskúšajte sami: Prejdite do nového adresára, zadajte znak ls a medzeru a stlačte kláves Tab. Bash by teraz mal do príkazového riadku automaticky zapísať názov súboru abc.txt.

Teraz v adresári vytvoríme súbor s názvom xyz.txt. Ak zopakujete posledný príklad za nových podmienok, nebude to fungovať ľahko. Bash sám nevie, ktorý z dvoch súborov má odovzdať ako parameter. Trik teraz funguje tak, že sa zadá toľko znakov názvu súboru, kým nezostane iba jeden názov súboru, ktorý sa zhoduje s prvými znakmi - v takom prípade stačí prvé písmeno súboru (buď „a“ alebo „) xВ «), pretože žiadny názov súboru neobsahuje rovnaké znaky. Ak potom znovu stlačíte kláves Tab, bash automaticky doplní názov súboru.

Ale bash môže za vás urobiť kus práce. Predpokladajme, že v jednom adresári sú dva súbory abc a abd. Ak aj tak nie je na výber medzi znakmi, stlačením klávesu Tab sa tieto znaky vždy zobrazia na monitore. Takže ak v takomto adresári stlačíte kláves Tab, bash napíše prvé dva znaky (pretože aj tak sú rovnaké a mali by ste ich zadať) na obrazovku. Potom musíte zadať iba „c“ alebo „d“.

V prípade, že sa súbor xyz stále nachádza v adresári, musí sa znova zadať prvé písmeno, pretože by sa mohli znova vyskytnúť dva prípady.

Ak existuje viac ako jeden súbor, môžete pri zadávaní príkazov dvakrát stlačiť kláves Tab a získať tak prehľad o súboroch v adresári. Stlačením tohto tlačidla dvakrát vám bash vždy poskytne výber súborov, ktoré sú podľa vášho predchádzajúceho vstupu stále možné.

To znamená v príklade: Keby ste mali v adresári znova tri súbory xyz, abc a abd, bash by najskôr uviedol všetky tri. Ak potom zadáte „A“ a stlačíte kláves Tab, bash vám na obrazovke zobrazí „B“ (jediná užitočná možnosť). Ak potom znova dvakrát kliknete na kláves Tab, bash teraz vygeneruje dva možné názvy súborov abc a abd.

Ďalej je klávesová karta „inteligentná“: Na začiatku vstupu do shellu má zmysel iba spustiteľný príkaz - podľa toho sú dokončené iba spustiteľné súbory alebo zabudované shelly.