Príkazové prostredie UNIX. Jazyky shellu (sh, bash, ksh a ďalšie)

  • 29.07.2019

=====================================================

LABORATÓRNE PRÁCE č. 1 (doba realizácie - 3 hodiny)

Téma: „Úvod doškrupina

1. Úvod do škrupiny

Shell je tlmočník príkazov (príkazový procesor), ktorý poskytuje rozhranie medzi používateľom a jadrom systému Unix. Solaris ponúka tri hlavné príkazové procesory:

    Predvolený shell Bourne je / sbin / sh

    C shell - / bin / csh

    Príkazový procesor Korn - ./bin/ksh

Okrem tých, ktoré sú uvedené, poskytuje Solaris ďalšie škrupiny:

    J shell - / sbin / jsh

    Obmedzený Korn l - / usr /bin / rsh

    T shell - / usr / bin / tcsh

    GNU Bourne Again - / usr / bin / bash

    Z shell - usr / bin / zsh

Výber škrupiny je vecou osobných preferencií.

2. Spúšťanie príkazov

Akýkoľvek príkaz v systéme Unix pozostáva z názvu spusteného programu (príkazu), volieb (prepínačov) a argumentov odovzdaných programu. Oddeľovač príkazového riadku sú medzery alebo karty.

Príklad

$ / bin / ping –t 10 192.168.2.13

argument

shell prompt

Ak pri spustení programu nie je zadaná cesta k spustiteľnému súboru, OS postupne skenuje adresáre uvedené v premennej PATH. Ak sa v zobrazenom adresári nachádza program s týmto názvom, spustí sa na vykonanie. Aktuálny pracovný adresár sa pri vyhľadávaní programov nevyhľadáva, pokiaľ nie je uvedený v premennej PATH.

! Z bezpečnostných dôvodov sa správcovi neodporúča pridávať do premennej PATH aktuálny adresár a domáce (osobné) adresáre používateľa.

Príklady

Spustenie programu s úplnou cestou

$ / usr/ miestne/ kôš/ môj_ program

Spustenie programu z nadradeného (nadradeného) adresára

$ ../ miestne/ kôš/ môj_ program

Spustenie programu z aktuálneho adresára

$ ./ môj_ program

3. Špeciálne znaky v škrupine

Niektoré znaky shellu majú špeciálny význam.

3.1. Šablóny na generovanie názvov súborov

? (otáznik)zhoduje sa s ktorýmkoľvek jedným znakom okrem prvej bodky;

(hranaté zátvorky)definovať skupinu znakov (jeden znak je vybraný zo skupiny);

- (znamienko mínus ")definuje rozsah platných znakov;

! (Výkričník)odmieta nasledujúcu skupinu znakov;

* (symbol hviezdičky)sa zhoduje s ľubovoľným počtom znakov okrem prvej bodky.

3.2. Znaky presmerovania I / O

< - presmerovanie vstupu;

>, >> - presmerovanie výstupu;

2>, 2>> - presmerovanie chybových správ;

| - dopravník.

3.3. Substitučné symboly

$ variable_nameq - variabilná substitúcia;

$ (príkaz)alebo `príkaz` -substitúcia príkazov;

~ je substitúcia tildou.

4. Hľadajte

Ak chcete rýchlo nájsť súbory a adresáre, použite príkaz whereis, pre hlbší použite príkaz find (vyhľadajte súbory, ktoré vyhovujú zadaným požiadavkám;).

5. Textový editor vi

Textový editor vi je všestranný editor, ktorý nájdete v akomkoľvek systéme Unix. Okrem editácie textových súborov možno vi použiť aj na úpravy príkazového riadku.

Editor vi má 3 režimy činnosti (pozri obrázok).

Vstup do editora vi

Končiaci vi

Symbol „~“ (vlnovka) na prvej pozícii označuje prázdne (neexistujúce) riadky súboru.

Hlavným režimom je príkazový režim, v ktorom sa príkazy zadávajú stlačením postupnosti klávesov (na obrazovke sa nijako nezobrazujú).

Pohyb po texte v príkazovom režime sa vykonáva pomocou šípok a klávesov (doľava), (dole), (hore), (doprava).

Niektoré príkazy vi sú uvedené v tabuľke.

Odstrániť aktuálny riadok

Skopírujte aktuálny riadok do schránky

Y pohyb kurzora

Znaky označené kurzorom ukladajte do medzipamäte

V spodnej časti vložte nový riadok

Hore vložte nový riadok

Pridáva sa za kurzor

Pripojiť za aktuálny riadok

Vložiť pred kurzor

Vložiť pred aktuálny riadok

Nahraďte znak znakom klávesnice

Vkladanie textu zo schránky

. (bodka)

Zopakujte posledný vykonaný príkaz

Vrátiť posledný príkaz

Vrátiť späť všetky zmeny v aktuálnom riadku

Vymazanie znaku nad kurzorom

V režime zadávania sa do textu vkladajú všetky znaky zadané na klávesnici.

V režime posledného riadku sa zadávaný príkaz zobrazuje na poslednom riadku obrazovky.

6. Pomoc

Unix má elektronický manuál obsahujúci popis účelu príkazov, ich syntaxe, príkladov použitia atď. Príručka je vyvolaná príkazom man:

7. Základné príkazy shellu

sZO- zobrazovanie informácií o aktívnych užívateľoch;

ozvena- výstup správ do terminálu;

banner- výstup správ do terminálu veľkými písmenami;

muž- volanie do online systému pomoci;

dátum - zobrazenie aktuálneho dátumu;

napíš- zasielanie správ do terminálu iného používateľa;

mesg- povolenie / zákaz zobrazovania správ od iných používateľov;

poštou- odosielanie / prijímanie pošty;

novinky- oboznámenie sa s novinkami systému;

pwd- vypíše absolútny názov trasy aktuálneho pracovného adresára;

cd- zmena pracovného adresára;

je- zobrazenie informácií o obsahu adresára;

mkdir- vytvorenie adresára;

rmdir- odstránenie adresára;

dotknúť sa- aktualizácia časovej pečiatky súboru;

cp- kopírovanie súborov;

kat- zlúčenie a zobrazenie obsahu súborov;

viac- prezeranie obsahu súboru stránka po stránke.

mv - presun alebo premenovanie súboru;

rm- vymazanie súboru;

alias- vytvorenie aliasu;

tr- prevod znakov;

východ- dokončenie súčasného stavu škrupina- a;

tričko- zachytenie výsledkov dopravníka;

strihať - výber polí z riadku;

grep- vyhľadávanie podľa vzoru;

pr- výstup súborov na štandardný výstup v určenom formáte;

triediť- triedenie;

hlava- výstup prvých riadkov súboru;

chvost- výstup posledných riadkov súboru;

wc- počítanie počtu znakov, slov a riadkov;

čítať, ozvena - čítanie a zobrazovanie hodnôt premenných;

test - vyhodnotenie hodnoty výrazu;

expr, nechajme- výpočet aritmetických výrazov;

8. Shell- programy

Shell vám umožňuje uložiť postupnosť príkazov do súboru a potom ich vykonať. Ak chcete spustiť súbor s programom shell na vykonanie, musíte pridať právo na spustenie do prístupových práv:

$ chmod + x názov_súboru_programov

Vetvenie v shellových programoch je organizované pomocou operátorov:

ak-potom-ešte

Prevádzkovatelia slučiek:

CVIČENIA

1. Ktorý z nasledujúcich príkazov zobrazí uvítaciu správu na obrazovke? Čo nie? Prečo?

$ echo ahoj

$ Echo ahoj

$ echo AHOJ, SVET

$ banner ahoj

$ BANNER AHOJ, SVET

2. Pomocou príkazov pošlite správu z niekoľkých riadkov ozvenaa banner.

3. Zadajte dátum v dvoch riadkoch: v prvý ,deň, mesiac, rok, v druhomprúdovom čase a poskytnite výstupu komentár.

4. Pomocou príkazu napíš, poslať správu na konzolu. Posielajte správy na viac terminálov súčasne.

5. Pomocou príkazu mesg, zistite, či sú pre váš terminál povolené správy. Zakázať správy. Ako zareaguje systém, ak sa vám niekto pokúsi poslať správu?

6. Identifikujte svoje meno DOMOV-adresár.

7. Prejdite podstrom adresára a pomocou príkazov začnite na / export / home cd, lsa pwd.

8 .. Vytvorte vo svojom DOMOV-adresáre podadresárov ako:

ovocie kvety

jablko hruška hrozno ruža fialová púpava

tmavozelený

9. Byť vo svojom DOMOV-adresár, vytvorte nasledujúce podadresáre pomocou jedného príkazového riadku:

A B C D

10. Byť vo svojom DOMOV-adresár, vymaže všetky podadresáre adresára A.

11. Byť v DOMOV-adresár, vytvorte súbor macintosh v existujúcom adresári jablkoa viac súborov v adresároch tmavýa zelená... Zadajte adresár fznižuje... Byť v adresári fznižuje, skopírovať všetky podadresáre fruitsspolu so súbormi v nich do špeciálne vytvoreného adresára košík.

12. Byť v katalógu fznižuje, odstráňte adresár fruits.

13. Prečítajte si súbor .profilpomocou príkazov kata viac.

14. Vytvorte v DOMOV-adresársky textový súbor myfileviac riadkov pomocou príkazu kat.Vytvorte textový súbor MrFile,písaním rovnakých riadkov. Koľko súborov ste dostali? Prečo?

15. Prezrite si obsah súboru vytvoreného v úlohe 2.2 myfile... Skopírujte súbor myfilevyplniť mykopia.Zobraziť obsah oboch súborov.

16. Presuňte súbor mykopiado katalógu kvety.

17. Byť v DOMOV-adresár, vytvoriť odkaz mrodkazna súbor mykopianachádza sa v adresári kvety... Zobraziť súbor odkazu.

18. Pridajte do súboru riadok môjodkaz. Ktorý zo súborov môjodkaz, môjkópia, môjspis zmenili sa? Prečo?

19. Pomocou ktorého príkazu môžete určiť počet odkazov? Určte počet odkazov na súbory môjodkaz, môjkópia, môjspis.

Vymažte súbor mykopia... Čo sa stalo s odkazovým súborom? Určte počet odkazov na súbory môjodkaz, môjspis.

20. Vytvorte alias rktorý vytlačí obsah aktuálneho adresára v rozšírenom formáte.

21. Ukončite reláciu a znova sa zaregistrujte. Funguje alias? r? Čo treba urobiť, aby sa alias medzi reláciami „nestratil“?

22. Vytvorte alias bod, ktorý vytlačí zoznam súborov v pracovnom adresári, ktoré začínajú bodkou.

23. Pomocou príkazu dotknúť sa, vytvorte súbory v novom adresári s názvami, ktoré súčasne:

Šablóna a* zhodných 5 súborov;

Šablóna * azodpovedalo 4 spisom;

Šablóna ??.? zodpovedalo 3 spisom;

Šablóna * aa* priradené 2 súbory;

Šablóna ??? zhoduje sa s 1 súborom.

24. Aký príkaz by ste mali zadať, aby ste mohli robiť toto:

a) vytlačiť názvy všetkých súborov začínajúce bodkou;

b) vytlačiť názvy všetkých súborov s koncovkou ".TXT";

c) zobraziť názvy všetkých súborov obsahujúcich dané slovo „Môj“;

25. Nahraďte všetky malé písmená v jednom danom súbore veľkými písmenami, v druhom - všetky veľké písmená malými písmenami. Vylúčte zo súboru všetky duplicitné medzery.

26. Vytvorte súbor s názvom * ... Odstrániť iba tento súbor. Pri generovaní názvov súborov buďte opatrní!

27. Vytvorte súbor, ktorý má v názve medzeru. Ako môžem taký súbor vymazať?

28. Pomocou príkazu katzdvojnásobte obsah súboru pripojením pôvodného obsahu na koniec rovnakého súboru. Prejdite do adresára kvety... Pridať do súboru spisokzoznam obsahu adresára kvety.Zobraziť obsah súboru

29. Skúste čítať príkazom katneexistujúci súbor. Aká je reakcia systému? To isté urobte presmerovaním chybových správ do súboru myerror... Čo vidíte na obrazovke? Zobraziť súbor myerror.

30. Vytvorte kanál na zoznam iba mien a povolení súborov, ktoré sú momentálne vo vašom pracovnom adresári.

31. Upravte zostrojený kanál tak, aby bol zoznam uložený v súbore spisokVaše jeho DOMOV-adresár a zobrazil sa iba počet súborov v zozname.

32. Zobrazte obsah súboru / etc / passwdzoradené podľa poľa užívateľské meno.

33. Vytvorte alias prihlásenýna, ktorý zobrazí abecedný zoznam mien používateľov prihlásených do systému.

33. Pomocou príkazov zobrazte aktuálny dátum na obrazovke veľkými písmenami dátuma banner.

34. Priraďte k premennej SOMVaše registračné meno. Spustite ďalší škrupina... Vidíte túto premennú? Čo treba urobiť, aby som ju videl v splodenom škrupina? Zmeňte hodnotu premennej SOMvo vygenerovaných škrupina... Vyjdite z plodu škrupina. Pozrite si hodnotu tejto premennej v origináli škrupina... Vysvetlite výsledok.

35. Napíš škrupina-program infoktorý požiada používateľa o zadanie mena, adresy, dátumu, mesiaca a roku narodenia a zobrazenie týchto informácií v opačnom poradí

36. Napíš škrupina-program, ktorý zobrazí výzvu na zadanie čísla, uloží zadané číslo do premennej Y.a vytlačte správu „Y je väčšie ako 7“,ak je hodnota Y.viac ako 7 a "Y je."nie väčší než 7” inak.

37. Napíš shell program, ktorý na obrazovku vytlačí nasledujúce štatistiky:

a) vaše meno;

b) počet argumentov, s ktorými sa vychádza;

c) vypíše každý z jeho argumentov a dĺžku argumentu v znakoch;

38. Napíš škrupina- program, ktorý určuje počet argumentov na príkazovom riadku a vydá chybové hlásenie, ak počet argumentov nie je tri, alebo samotné argumenty, ak je ich počet tri.

39. Napíš škrupina- program, ktorý vás vyzve na zadanie ID užívateľa, skontroluje súlad ID s tými, ktoré sa používajú v systéme, a zobrazí celé meno DOMOV-adresár alebo v prípade neplatného identifikátora vydať chybové hlásenie.

40. Napíš shell program ahoj, ktorá poskytuje nasledujúcu odpoveď na argumenty príkazového riadku:

Argument „-D“- program vykoná príkaz dátum;

Argument „-L“- program zobrazí obsah aktuálneho adresára;

    ak na príkazovom riadku nie sú žiadne argumenty alebo nesprávne argumenty, program zobrazí pomoc s jeho možnosťami.

41. Napíš program slovktorý používateľa vyzve na zadanie jedného slova po druhom, kým nezadá slovo koniec... Zapamätajte si všetky slová, ktoré ste zadali. Po zadaní slova konieczobraziť všetky zadané slová.

42. Upravte výzvu systému tak, aby obsahovala úplný názov trasy aktuálneho pracovného adresára .

43. Napíš program vírusktorý vytvorí svoju vlastnú spustiteľnú kópiu s iným názvom a potom sa sám odstráni.

44. Napíš program vírus2 , ktorá vyhľadáva v aktuálnom adresári programy príkazového jazyka a pridáva príkaz na zobrazenie slov Infikovaný!”.

45. Napíš program vírus3 , ktorý pridáva vlastný kód na infikovanie ďalších programov do nájdených programov v príkazovom jazyku.

46. \u200b\u200bNapíš program vírus4 úpravou vírusu tak, aby po infikovaní bol infikujúci kód odstránený z infikujúceho programu.

47. Napíš program antivírusktorý by našiel všetky shell programy infikované vaším vírusom.

48. Upravte vyvinutý program tak, aby nielen našiel infikované programy v určenom adresári, ale aby ich „vyliečil“ uložením infikovanej verzie do nového súboru s koncovkou . vira odstránenie atribútu exekúcie z takého súboru.

49. Napíš program vírus5 čo by:

a) infikuje shell programy v aktuálnom adresári a jeho podadresároch vírusom, iba ak by užívateľ zadal príkaz je;

b) správa sa ako tím jebez toho, aby na termináli svojej práce niečo vydali.

50. Napíš program virus6 na základe programov vírus2 -vírus5 ktorého infikujúci kód nemohol program, ktorý ste vyvinuli, zistiť antivírusa infekcia by sa vyskytla pri akejkoľvek hodnote premennej CESTA.

51. Napíš program supervírus, ktorého spustenie infikuje vaše súbory vírusom vyvinutým v predchádzajúcej úlohe a pri každom prihlásení do systému sa pokúsi infikovať súbory vašich spolubojovníkov. Program supervírus sa po prvom spustení vymaže.

52. Napíš program superantivírus, ktorý deteguje a úplne „lieči“ (ak je zadaná príslušná možnosť) všetky súbory v zadanom adresári a jeho podadresároch od všetkých vyvinutých vírusov.

    prianie (príkazový shell UNIX) - Tento výraz má iné významy, pozri želanie. wish (Windowing Shell) je jednoduchý skriptovaný alebo interaktívny unixový shell pre X Window System a Mac OS X. Dáva používateľom možnosť ovládať komponenty ... ... Wikipedia

    Príkazová schránka - Shell operačného systému (z anglického shell shell) - tlmočník príkazov operačného systému (OS), ktorý poskytuje rozhranie pre interakciu používateľa s funkciami systému. Všeobecne existujú škrupiny s dvoma typmi rozhrania pre ... Wikipedia

    UNIX shell

    Unix shell - Príkazový shell UNIX (anglický unixový shell, často len „shell“ alebo „sh“) tlmočník príkazov používaný v operačných systémoch rodiny POSIX kompatibilných škrupín siahajúcich až do shellu Bourne, ktorý sa objavil v unixovej verzii 7. Obsah 1 ... ... Wikipedia

    Unix Shell - Príkazový shell UNIX (anglický unixový shell, často len „shell“ alebo „sh“) tlmočník príkazov používaný v operačných systémoch rodiny POSIX kompatibilných škrupín siahajúcich až do shellu Bourne, ktorý sa objavil v unixovej verzii 7. Obsah 1 ... ... Wikipedia

    Príkazový riadok - Tu je presmerovaná požiadavka na tlmočník príkazového riadku. Je potrebný samostatný článok na tému „Tlmočník príkazového riadku“. Vzhľad škrupiny (angl. Co ... Wikipedia

    Systém UNIX V - Mnoho potomkov systému V ... Wikipedia

    Systém Unix V - Mnoho potomkov System V AT T UNIX System V jednej z verzií operačného systému 1989. Boli vydané 4 hlavné verzie Relácií 1, 2, 3 a 4. System V Release 4 (SVR4) bol najúspešnejším a najpopulárnejším a slúžil ako zdroj pre ... ... Wikipedia

    UNIX - Rodokmeň systémov UNIX UNIX (čítať unix), skupina prenosných, multitaskingových a viacužívateľských ... Wikipedia

    Unix - Rodokmeň systémov UNIX Skupina UNIX (čitateľná v unixe) skupina prenosných, multitaskingových a viacužívateľských operačných systémov. Prvý systém UNIX bol vyvinutý v roku 1969 divíziou Bell Labs spoločnosti AT T. Od tej doby ... Wikipedia

Knihy

  • Shell skripty. Linux, OS X a Unix. Vedenie, Taylor Dave. Skripty Shell pomáhali správcom systému a programátorom automatizovať rutinné úlohy od počiatku počítačov. Od vydania prvého ... Kúpiť za 1217 UAH (iba Ukrajina)
  • Shell skripty. Linux, OS X a Unix, Taylor Dave, Perry Brandon. Skripty Shell pomáhali správcom systému a programátorom automatizovať rutinné úlohy od počiatku počítačov. Od vydania prvého ...

Určite takmer všetci čitatelia Habru poznajú škrupiny sh a bash. Väčšina z nás tiež počula niečo o zsh a tcsh. Týmto však zoznam existujúcich skinov nekončí. Môžu byť podmienene rozdelené do troch skupín:

  • Bourneove klony (bash, zsh)
  • C shell (csh, tcsh)
  • Založené na populárnych programovacích jazykoch (psh, ipython, scsh)
  • Exotické, konkrétne a všetko ostatné
O najzaujímavejších z nich sa bude diskutovať.

Účelom tohto článku nebolo preskúmať alebo kategorizovať všetky existujúce príkazové schránky. Chcem vám iba povedať o niektorých zaujímavých produktoch v tejto oblasti, aby som rozšíril obzor čitateľa. Budem rád. ak tým niekoho vyzvem, aby si tému preštudoval podrobnejšie alebo aby dokonca prešiel na inú.
Najprv stručne o tom, čo to je. Príkazový shell alebo tlmočník príkazov je aplikácia, ktorá poskytuje používateľovi rozhranie príkazového riadku, v ktorom buď zadáva príkazy jednotlivo, alebo spúšťa skripty pozostávajúce zo zoznamu príkazov. Ústne a v neformálnych textoch sa často nazýva „shell“, z anglického shell - shell.

Najrozšírenejšie sú POSIX-kompatibilné mušle, zostupujúce z shellu Bourne (shell Bourne), tak poďme na to

Bourneova škrupina a jej klony

Bourneova škrupina, spustiteľný súbor: š... Príkazový shell pomenovaný po jeho tvorcovi Stephenovi Bournovi. Väčšinu operátorov si požičal z jazyka Algol 68. Vydané v 7. vydaní operačného systému UNIX, kde išlo o predvolený shell. Doteraz veľká väčšina unixových systémov má / bin / sh, čo je symbolické alebo tvrdé prepojenie na sh-kompatibilný shell.

Bourne opäť škrupinu, spustiteľný súbor: bash... Názov možno preložiť ako „Bourne kráčal znovuzrodený“. Pravdepodobne najpopulárnejšia škrupina súčasnosti. De facto štandard pre Linux. Nebudem sa tým zaoberať, pretože na internete je veľa dobrých článkov o bash. Napríklad sem tam.

Z škrupina, spustiteľný súbor: zsh... Zadarmo moderná mušľa kompatibilná s sh. Má množstvo výhod oproti bash, pokiaľ ide o väčšinou interaktívnu prácu. Písali o nej o Habrém a
Okrem toho existuje pomerne veľa škrupín, ktoré spadajú do tejto skupiny: Kornova škrupina (ksh) a Almquistova škrupina (popol) atď., Nebudeme sa im však podrobne venovať.

C škrupina

C škrupina, spustiteľný súbor: csh Príkazový shell vyvinutý autorom vi Billom Joyom. Skriptovací jazyk csh bol založený, ako už z názvu vyplýva, na jazyku C. v tom čase, v roku 1978, to bol najpopulárnejší programovací jazyk medzi vývojármi a používateľmi BSD UNIX. V súčasnosti je najpopulárnejšou bezplatnou implementáciou csh tcsh.

Škrupina TENEX C., spustiteľný súbor: tcsh... Bolo to v tcsh, kde sa prvýkrát objavilo automatické dokončovanie. Toto je predvolený shell pre FreeBSD. Môžete si o tom prečítať viac.
Aby som jasne ukázal rozdiel v syntaxi, uvediem niekoľko príkladov skriptov, ktoré robia to isté pre interpret príkazov kompatibilný s csh a sh.

Podmienená konštrukcia:

Cyklus výpočtu prvých 10 mocností z dvoch:

#! / bin / sh i \u003d 2 j \u003d 1 while [$ j -le 10]; do echo "2 **" $ j \u003d $ i i \u003d `expr $ i" * "2` j \u003d` expr $ j + 1` hotovo #! / bin / csh set i \u003d 2 set j \u003d 1 while ($ j<= 10) echo "2 **" $j = $i @ i *= 2 @ j++ end

Zoznam funkcií podporovaných najnovšími verziami bash, zsh a tcsh je však veľmi podobný a výber konkrétneho shellu je väčšinou vecou vkusu. U menej bežných škrupín to tak nie je. Tu sú rozdiely výraznejšie.

Príkazové mušle založené na populárnych programovacích jazykoch.

Perl Shell, spustiteľný súbor: psh... Zavinovačka, ktorá kombinuje vlastnosti vyššie spomenutých zavinovačiek so silou Perlu. Pretože psh je napísaný v jazyku perl, dokonca ho možno spustiť aj v systéme Windows. Niekoľko príkladov použitia psh:
ls | s / r / k / # Nahradenie regulárnymi výrazmi ls | (print ++ $ i, ": $ _";) q # Rýchle filtre. Vo vnútri zložených zátvoriek je perlový výraz, kde $ _ obsahuje jeden riadok výstupu. netstat | ($ _\u003e 2;) g # grep filtre. Na výstup sú iba tie riadky, pre ktoré výraz v zátvorke vráti skutočný príkaz\u003e [\u003d FOO] # Presmerovanie príkazom otvoreného deskriptora súboru\u003e súbor # Ekvivalent príkazu 2\u003e súbor v bashe. Presmeruje výstupný a chybový prúd na súbor grep foo lib / ** / *. Pm # Použitie **, čo znamená aktuálny adresár a všetky podadresáre

Scsh, spustiteľný súbor scsh... Interpret príkazov s otvoreným zdrojom, ktorý ako skriptovací jazyk používa Schému 48. Nepodporuje štandardné funkcie pre iné shelly (história príkazov, úpravy textu na príkazovom riadku, cesta / dokončenie príkazu). Skriptovanie sa odporúča, ale nie pre interaktívnu prácu. Môže byť podľa vkusu milovníkov funkčného programovania. Nižšie je uvedený príklad skriptu, ktorý zobrazuje názvy všetkých spustiteľných súborov umiestnených v adresároch z premennej prostredia PATH
#! / usr / local / bin / scsh -s! # (define (spustiteľný súbor dir) (s-cwd dir (filtračný súbor spustiteľný? (adresár-súbory dir #t))))) (definovať (writeln x) x) (nový riadok)) (pre každý writeln (append-map spustiteľné súbory ((infix-splitter ":") (getenv "PATH"))))

IPython... Jedná sa o interaktívny shell pre programovací jazyk Python s množstvom ďalších funkcií. IPython má špeciálny profil, ktorý slúži ako shell systému. Spôsob spustenia tohto režimu závisí, ako to chápem, od verzie, ale na mojom počítači to vyzerá takto:
ipython3 --profile \u003d pysh

O IPythone už bolo napísaného veľa, okrem iného aj v ruštine (odkazy na konci článku). Pokúsim sa vymenovať jeho hlavné vlastnosti z hľadiska použitia ako príkazového shellu:

  • Cross-platform. K dispozícii je dokonca aj verzia pre Windows
  • Python 2.x alebo 3.x ako skriptovací jazyk, pokročilá introspekcia
  • Automatické dopĺňanie kódu Pythonu, ako aj názvov súborov a systémových príkazov.
  • Na základe nej história príkazov a makrá
  • Mechanizmus, ktorý urýchľuje navigáciu v adresároch, záložky a oveľa viac
Ako vidíte, z hľadiska interaktívnych schopností je IPython minimálne taký dobrý ako bash. Pokiaľ ide o skripty, IPython bude vhodný pre tých, ktorí poznajú python lepšie ako bash. V skutočnosti sa skripty v IPythone budú líšiť od čistého pythonu iba v zjednodušenom volaní systémových príkazov. Uvediem niekoľko príkladov integrácie pythonu a systémových príkazov:
# Povedzme, že sme chceli vypočítať celkovú veľkosť súborov protokolu dpkg: In: cd / var / log / / var / log In: log_files \u003d! Ls -l dpkg.log * In: log_files Out: "-rw-r - r-- 1 root root 1824 3. novembra 16:41 dpkg.log "In: pre riadok v log_files: ....: size + \u003d int (line.split ()) ....: In: size Out: 1330009 #. .. alebo postupne ping na tucet hostiteľov In: for i in range (100,110): ....:! ping -c 1 192.168.0. $ i ....:
Oddych
Toto samozrejme nie je úplný zoznam ani obľúbených skinov. Okrem vyššie uvedených kategórií sa tiež používa ich vlastná syntax, ktorá nie je kompatibilná s sh a nekopíruje existujúce PL. Príkladom je priateľská interaktívna škrupina (ryba). Ale na záver by som vám chcel povedať nie o nej, ale o konkrétnejšej spánkovej škrupine.

Sleep Dummy Shell, spustiteľný súbor: spánková škrupina... Presne povedané, spánkový shell nemožno nazvať príkazovým procesorom. nedokáže spracovať príkazy. A vo všeobecnosti nevie nič robiť, okrem pravidelného písania hviezdičiek "*" na štandardný výstup. Používa sa však presne ako príkazový shell a tu je dôvod, prečo: Povedzme, že chceme niekomu poskytnúť možnosť vytvárať ssh tunely prostredníctvom nášho servera so systémom Linux alebo Unix. Prečítajte si viac o tunelovaní ssh. Ale tohto niekoho nepotrebujeme, aby získal prístup k príkazovému riadku a súborovému systému nášho servera. Na to slúži spánková škrupina. Vytvoríme preň účet na serveri ako shell, nainštalujeme sleepshell. Vlastník účtu sa bude môcť pripájať a preposielať porty, nebude však môcť vykonávať príkazy.

To je všetko. Dúfam, že to bolo zaujímavé. Budem rád za akékoľvek pripomienky a rady k textu článku.

Súvisiace odkazy
www.faqs.org/faqs/unix-faq/shell/shell-differences - súhrnná tabuľka rozdielov a podobností shellu
www.mariovaldez.net/software/sleepshell - spánková figurína
ipython.org/ipython-doc/dev/interactive/shell.html - IPython ako systémový shell
www.opennet.ru/base/dev/ipython_sysadmin.txt.html - IPython shell ako nástroj správcu systému

Príkazový jazyk shell (v preklade - shell, shell) je v skutočnosti programovací jazyk na veľmi vysokej úrovni. V tomto jazyku používateľ ovláda počítač. Spravidla po prihlásení začnete komunikovať s shellom. Indikácia, že je shell pripravený na príjem príkazov, je výzva, ktorú vydáva na obrazovke. V najjednoduchšom prípade je to jeden dolár („$“). Shell nie je potrebný a jediný príkazový jazyk (aj keď je to on, kto je štandardizovaný v rámci POSIX - štandardu pre mobilné systémy). Napríklad jazyk cshell je dosť populárny, existujú aj kshell, bashell a ďalšie. Každý užívateľ si navyše môže vytvoriť svoj vlastný príkazový jazyk. Môže pracovať súčasne na jednej kópii operačného systému s rôznymi príkazovými jazykmi. shell je jedným z mnohých príkazov UNIX. To znamená, že sada príkazov „shell“ obsahuje príkaz „sh“ - vyvolanie tlmočníka „shell“. Prvý „shell“ sa zavolá automaticky po prihlásení a zobrazí sa výzva. Potom môžete zavolať akékoľvek príkazy na vykonanie, vrátane samotného „shellu“, ktorý vám vytvorí nový shell v starom. Napríklad ak v editore pripravíte súbor „file_1“:

Echo Ahoj!

potom to bude obyčajný textový súbor obsahujúci príkaz „echo“, ktorý po vykonaní zobrazí všetko napísané napravo od neho na obrazovke. Súbor „file_1“ môžete vytvoriť spustiteľným príkazom „chmod 755 file_1“. Môže sa však vykonať vysloveným volaním príkazu „sh“ („shell“):

Sh file_1

Sh< file1

Súbor je možné spustiť aj v aktuálnej inštancii „shellu“. Na tento účel existuje osobitný príkaz „.“ (bod), t.j.

Súbor_1

Pretože UNIX je viacužívateľský systém, môžete dokonca pracovať paralelne na osobnom počítači, povedzme na 12 obrazovkách (prepínanie z obrazovky na obrazovku ALT / funkčné tlačidlo), pričom na každej obrazovke máte svojím príkazom nového (alebo toho istého) používateľa. škrupina. Môžete tiež otvoriť veľké množstvo okien v grafickom režime X-Window a každé okno môže mať vlastného používateľa s vlastným príkazovým shellom ... Jadrom jazyka shellu je príkaz.

Štruktúry velenia:

Príkazy shellu majú zvyčajne nasledujúci formát:

<имя команды> <флаги> <аргумент(ы)>

Napríklad:

Ls -ls / usr / bin

Kde ls je názov príkazu na zobrazenie obsahu adresára, -ls sú príznaky („-“ je príznakový znak, l je dlhý formát, s je o „súboroch v blokoch), / usr / bin je adresár, pre ktorý sa príkaz vykoná. Tento príkaz zobrazí obsah adresára / usr / bin na obrazovke v dlhom formáte a zároveň pridá informácie o veľkosti každého súboru v blokoch. Táto štruktúra príkazov sa bohužiaľ nie vždy zachová. Nie vždy sa pred príznaky umiestni mínus, nie vždy sú príznaky v jednom slove. medzi príkazmi, ktoré majú exotické formáty, patria také „populárne“ príkazy, ako napríklad cc - volanie kompilátora C, tar - práca s archívmi, dd - kopírovanie súboru s transformáciou, hľadanie súborov a množstvo ďalších Spravidla je prvé slovo interpretované shellom ako príkaz.

prvé slovo bude shell dekódované ako (zreťazenie) príkaz, ktorý zobrazí súbor s názvom „mačka“ (druhé slovo) v aktuálnom adresári. Presmerovanie príkazu Štandardný vstup (vstup) - „stdin“ v operačnom systéme UNIX sa vykonáva z klávesnice terminálu a štandardný výstup (výstup) - „stdout“ je smerovaný na obrazovku terminálu. Existuje aj štandardný súbor diagnostických správ - „stderr“, o ktorom sa bude diskutovať o niečo neskôr. Príkaz, ktorý dokáže pracovať so štandardným vstupom a výstupom, sa nazýva FILTER. Používateľ má pohodlné prostriedky na presmerovanie vstupu a výstupu na ďalšie súbory (zariadenia). Symboly „\u003e“ a „\u003e\u003e“ označujú presmerovanie výstupu. ls\u003e file_1 príkaz "ls" vygeneruje zoznam súborov v aktuálnom adresári a umiestni ho do súboru "file_1" (namiesto vytlačenia na obrazovku). Ak súbor „file_1“ už existoval, bude prepísaný novým.

Pwd \u003e\u003e file_1

príkaz pwd vygeneruje celé meno aktuálneho adresára a umiestni ho na koniec súboru „file_1“, t.j. „\u003e\u003e“ sa pridá do súboru, ak nie je prázdny. Symboly "<" и "<<" обозначают перенаправление ввода.

Wc -l

bude počítať a zobrazovať počet riadkov v súbore_1.

Upraviť súbor_2<

vytvorí súbor "file_2" pomocou editora priamo z terminálu. Koniec zadania je určený znakom vpravo “<<" (т. е. "!"). То есть ввод будет закончен, когда первым в очередной строке будет "!". Можно сочетать перенаправления. Так

Wc -l súbor_4

Wc -l\u003e súbor_4

sa vykonávajú rovnakým spôsobom: počet riadkov v súbore „file_3“ sa počíta a výsledok sa umiestni do súboru „file_4“. Prostriedok, ktorý kombinuje štandardný výstup jedného príkazu so štandardným vstupom druhého, sa nazýva CONVEYOR a je označený zvislou čiarou „|“.

Ls | wc -l

zoznam súborov v aktuálnom adresári sa odošle na vstup príkazu „wc“, ktorý zobrazí počet riadkov adresára. S kanálom je možné kombinovať viac ako dva príkazy, keď všetky z nich, okrem prvého a posledného, \u200b\u200bsú filtre:

Súbor mačiek_1 | výsledok grep -h | triediť | mačka -b\u003e súbor_2

Tento kanál zo súboru „file_1“ („mačka“) vyberie všetky riadky obsahujúce slovo „výsledok“ („grep“), zoradí („zoradí“) výsledné riadky a potom číslo („mačka -b“) a výsledok prenesie do súbor „file_2“. Pretože zariadenia UNIX sú reprezentované špeciálnymi súbormi, dajú sa použiť v presmerovaniach. Špeciálne súbory sa nachádzajú v adresári „/ dev“. Napríklad „lp“ je tlač; "konzola" - konzola; „ttyi“ je i-tý terminál; „null“ je fiktívny (prázdny) súbor (zariadenie). Potom napríklad

Ls\u003e / dev / lp

vytlačí obsah aktuálneho adresára a file_1< /dev/null обнулит файл "file_1".

Zoradiť súbor_1 | tričko / dev / lp | chvost -20

V takom prípade bude súbor „file_1“ zoradený a odoslaný na tlač a na obrazovke sa tiež zobrazí posledných 20 riadkov. Vráťme sa k presmerovaniu východu. Štandardné súbory sú očíslované:

0 - štandardný vstup, 1 - štandardný výstup 2 - štandardný vstup Ak nechcete, aby sa na obrazovke zobrazovala chybová správa, môžete ju z obrazovky presmerovať na súbor, ktorý ste zadali (alebo ju dokonca „vyhodiť“ presmerovaním na súbor „prázdne zariadenie“ - / dev / null). Napríklad pri vykonávaní príkazu

Mačací súbor_1 súbor_2

ktorý by mal postupne zobrazovať obsah súborov „file_1“ a „file_2“ na obrazovke, vám poskytne napríklad nasledujúce

111111 222222 cat: f2: Žiadny takýto súbor alebo adresár

kde 111111 222222 je obsah súboru „file_1“ a chýba súbor „file_2“, o ktorom príkaz „cat“ nahlásil štandardný diagnostický súbor, štandardne rovnako ako štandardný výstup zobrazený na obrazovke. Ak takúto správu na obrazovke nechcete, môžete ju presmerovať na zadaný súbor:

Cat file_1 file_2 2\u003e f-err

chybové správy sa odošlú (ako naznačuje presmerovanie „2\u003e“) do súboru „f-err“. Mimochodom, všetky informácie môžete poslať do jedného súboru „ff“, ktorý v tomto prípade použije konštrukciu

Cat file_1 file_2 \u003e\u003e ff 2\u003e ff

Môžete určiť nielen to, ktorý zo štandardných súborov chcete presmerovať, ale aj to, do ktorého štandardného súboru chcete presmerovať.

Cat file_1 file_2 2 \u003e\u003e ff 1\u003e & 2

Tu sa najskôr „stderr“ presmeruje (v režime pridávania) do súboru „ff“ a potom sa štandardný výstup presmeruje na „stderr“, ktorým je v tomto okamihu súbor „ff“. To znamená, že výsledok bude podobný predchádzajúcemu. Konštrukcia „1\u003e & 2“ - znamená, že okrem čísla štandardného súboru, ktorý sa má presmerovať, musíte uviesť „&“ pred; celá stavba je napísaná bez medzier.<- закрывает стандартный ввод. >- zatvorí štandardný výstup. Príkazové súbory. Existuje niekoľko možností, ako sa dá textový súbor použiť ako príkaz. Nechajte editora vytvoriť súbor s názvom "cmd", ktorý obsahuje jeden riadok v nasledujúcom tvare:

Dátum; pwd; je

Môžete vyvolať shell ako príkaz označený „sh“ a odovzdať mu súbor „cmd“ ako argument alebo ako presmerovaný vstup, t.j.

$ sh cmd

$ sh

Po vykonaní ktoréhokoľvek z týchto príkazov sa zobrazí dátum, potom názov aktuálneho adresára a potom obsah adresára. Zaujímavejším a pohodlnejším spôsobom práce s dávkovým súborom je jeho premena na spustiteľný súbor, t.j. stačí z neho urobiť príkaz, ktorý sa dá dosiahnuť zmenou bezpečnostného kódu. Ak to chcete urobiť, musíte povoliť vykonávanie tohto súboru. Napríklad

Chmod 711 cmd

urobí bezpečnostný kód "rwx__x__x". Potom jednoduchý hovor

vykoná rovnaké tri príkazy. Výsledok bude rovnaký, ak ide o súbor s obsahom

Dátum; pwd; je

zastúpené v tvare: date pwd ls od prechodu na iný riadok je tiež oddeľovačom v postupnosti príkazov. Spustiteľnými súbormi teda nemôžu byť iba súbory získané kompiláciou a zostavením, ale aj súbory napísané v jazyku shellu. Vykonávajú sa v režime tlmočenia pomocou shellového tlmočníka.

Ladenie dávkových súborov

SHELL používa dva mechanizmy na ladenie dávkových súborov. Prvá je: set -v vytlačí riadky dávkového súboru tak, ako ich číta. Tento režim sa používa pri hľadaní syntaktických chýb. Ak ho chcete použiť, nemusíte upravovať dávkový súbor, napríklad: sh -v proc ... tu proc je názov dávkového súboru. Prepínač -v možno použiť v spojení s prepínačom -n, ktorý znemožňuje vykonávanie ďalších príkazov (príkaz set -n blokuje terminál až do zadania konca súboru EOF). Príkaz set -x vydáva príkazy tak, ako sú vykonávané, a riadky programu sa tlačia do terminálu a ich hodnoty sa nahradia namiesto premenných. Ak chcete zrušiť prepínače -x a -v, môžete použiť príkaz set - a na jeho nastavenie priradíte príslušnú hodnotu premennej makra. ŽIVOTNÉ PROSTREDIE (PREMENNÉ A PARAMETRE) V jazyku shellu môžete písať súbory príkazov a pomocou príkazu "chmod" ich spustiť. Potom sa nelíšia od ostatných príkazov UNIX.

Premenné shellu

Názov premennej shellu je sekvencia čísel a podčiarkovníkov, ktorá začína na písmeno. Hodnota premennej shellu je reťazec znakov. Skutočnosť, že v shelli existujú iba dva typy údajov: reťazec znakov a textový súbor, na jednej strane uľahčuje zapojenie koncových používateľov, ktorí nikdy predtým neprogramovali, a na druhej strane spôsobuje určitý vnútorný protest mnohých programátorov, ktorí sú zvyknutí výrazne väčšia rozmanitosť a väčšia flexibilita jazykových prostriedkov. Je však zaujímavé sledovať, ako vysoko kvalifikovaní programátori, ktorí sa oboznámili s „pravidlami hry“ shellu, na ne píšu programy mnohokrát rýchlejšie ako v jazyku C, ale čo je obzvlášť zaujímavé, v niektorých prípadoch fungujú tieto programy ešte rýchlejšie ako v jazyku C. Názov premennej je podobný tradičnému konceptu identifikátora, t.j. názov môže byť sled písmen, číslic a podčiarknutí, počnúc písmenom alebo podčiarkovníkom. Operátor priradenia "\u003d" možno použiť na priradenie hodnôt k premenným.

Var_1 \u003d 13 - „13“ nie je číslo, ale dvojciferný reťazec. var_2 \u003d "UNIX OS" - tu sa vyžadujú úvodzovky (""), pretože v reťazci je medzera.

Sú možné aj iné spôsoby priradenia hodnôt premenným shellu. Napríklad záznam

DAT \u003d `dátum`

spôsobí, že sa najskôr vykoná príkaz „date“ (zaškrtávacie políčka označujú, že je potrebné najskôr vykonať priložený príkaz) a výsledok jeho vykonania sa namiesto jeho vydania na štandardný výstup v tomto prípade priradí ako hodnota premennej “ DAT “. Hodnotu môžete premennej tiež priradiť pomocou príkazu „čítať“, ktorý umožňuje prijímať premennú z displeja (klávesnice) v dialógovom režime. Príkazu „čítať“ v príkazovom súbore zvyčajne predchádza príkaz „echo“, ktorý umožňuje predbežne zobraziť niektoré správy na obrazovke. Napríklad:

Echo -n „Zadajte trojciferné číslo:“ čítať x

Pri vykonávaní tohto fragmentu dávkového súboru po zobrazení správy

Zadajte trojciferné číslo:

tlmočník sa zastaví a počká na zadanie hodnoty z klávesnice. Ak zadáte povedzme „753“, stane sa to hodnotou premennej „x“. Jeden príkaz „čítať“ môže čítať (priraďovať) hodnoty pre niekoľko premenných naraz. Ak je v "prečítanom" viac premenných, ako je zadaných (oddelených medzerami), ostatným sa priradí prázdny reťazec. Ak je v príkaze "čítať" viac odovzdaných hodnôt ako premenných, ďalšie z nich sú ignorované. Ak odkazujete na premennú shellu, musíte pred názov umiestniť symbol „$“. Zobrazia sa teda príkazy echo $ var_2 echo var_2

Únik unixového systému OS var_2

Pozrime sa podrobnejšie na techniky úniku použité v škrupine. Ako úniky sa používajú dvojité úvodzovky (""), jednoduché úvodzovky ("") a spätné lomítko (\\). Ich činnosť je zrejmá z príkladov: Do jedného riadku môžete napísať niekoľko úloh.

X \u003d 22 y \u003d 33 z \u003d $ x A \u003d "$ x" B \u003d "$ x" C \u003d \\ $ x D \u003d "$ x + $ y + $ z" E \u003d "$ x + $ y + $ z „F \u003d $ x \\ + \\ $ y \\ + \\ $ z

(priradenie G \u003d $ x + $ y by pre medzery zlyhalo) Potom

Echo A \u003d $ A B \u003d $ B C \u003d $ C echo D \u003d $ D E \u003d $ E F \u003d $ F hodnotí sa eval Acho

Dostane sa na obrazovku

A \u003d 22 B \u003d $ x C \u003d $ x D \u003d 22 + 33 + 22 E \u003d $ x + $ y + $ z F \u003d 22 + 33 + 22 hodnotené A \u003d 22 hodnotené B \u003d 22 hodnotené C \u003d 22

Tu je niekoľko ďalších príkladov týkajúcich sa úniku z riadkových informačných kanálov. Nechajte premennú „string“ priradiť hodnotu „poľa“ 2x3: abc def Všimnite si, že aby sa zabránilo priradeniu ďalších medzier, začína druhý riadok poľa od prvej polohy nasledujúceho riadku: string \u003d „abc def“ Potom existujú tri varianty zápisu premennej do príkazu „echo“ echo $ string echo "$ string" echo "$ string" poskytne tri rôzne výsledky: abc def $ string abc def a postupnosť príkazov echo "str_1 str_2"\u003e file_1 echo "str_1 str_2"\u003e file_2 mačka file_1 file_2 dá postupne rovnaké súbory file_1 a file_2: str_1 str_2 str_1 str_2 Upozorňujeme tiež, že spätné lomítko (\\) nielenže unikne nasledujúcemu znaku, čo umožňuje použitie špeciálnych znakov jednoducho ako znakov predstavujúcich samých seba (môže uniknúť aj sám - \\\\), ale v príkazovom súbore umožňuje spätné lomítko „kombinovať riadky do jedného (uniknúť z konca riadku). Napríklad príklad príkazového riadku uvedený vyššie:

Súbor mačiek_1 | výsledok grep -h | triediť | mačka -b\u003e súbor_2

môžu byť napísané v dávkovom súbore, povedzme ako

Súbor mačiek_1 | grep -h \\ vysledok | triediť | mačka -b\u003e súbor_2

Mimochodom, symbol potrubia poskytuje aj efekt pokračovania príkazového riadku. V takom prípade môže poskytnúť krajší výsledok, napríklad:

Súbor mačiek_1 | výsledok grep -h | triediť | mačka -b\u003e súbor_2

Manipulácia s premennými shellu Napriek tomu, že sa s premennými shellu všeobecne zaobchádza ako s reťazcami, teda „35“ nie je číslo, ale reťazec dvoch znakov „3“ a „5“, v niektorých prípadoch môžu rôzne interpretované, napríklad ako celé čísla. Príkaz „expr“ má rôzne možnosti. Ukážme si niektoré na príkladoch: Spustenie dávkového súboru:

X \u003d 7 y \u003d 2 a \u003d `expr $ x + $ y`; echo a \u003d $ a a \u003d `expr $ a + 1`; echo a \u003d $ a b \u003d `expr $ y - $ x`; echo b \u003d $ b c \u003d `expr $ x" * "$ y`; echo c \u003d $ c d \u003d `expr $ x / $ y`; echo d \u003d $ d e \u003d `expr $ x% $ y`; echo e \u003d $ e

sa zobrazí

A \u003d 9 a \u003d 10 b \u003d -5 c \u003d 14 d \u003d 3 e \u003d 1

Operácii násobenia („*“) je potrebné uniknúť, pretože v prostredí shell je táto ikona vnímaná ako špeciálny znak, čo znamená, že na tomto mieste je možné nahradiť ľubovoľnú postupnosť znakov. Pomocou príkazu "expr" sú možné nielen (celé) aritmetické operácie, ale aj reťazcové operácie:

A \u003d `expr" cocktail ":" cock "; echo $ A B \u003d `expr" koktejl ":" chvost ""; echo $ B C \u003d `expr" koktejl ":" kuchár ""; echo $ C D \u003d `expr" kohút ":" koktail ""; ozvena $ D

Zobrazia sa čísla ukazujúce počet zhodných znakov v reťazcoch (od začiatku). Druhý riadok nemôže byť dlhší ako prvý:

4 0 0 0

Export premenných UNIX má koncept procesu. Proces vzniká, keď je spustený akýkoľvek príkaz na vykonanie. Napríklad pri písaní „s Vygeneruje sa „proces“ p. Na druhej strane môže „p“ plodiť ďalšie procesy. Predpokladajme, že „p“ volá „p1“ a „p2“, ktoré postupne vytvárajú príslušné procesy. Každý proces má svoje vlastné prostredie - sadu premenných, ktoré má k dispozícii Napríklad predtým, ako bolo spustené „p“, už existovalo prostredie, v ktorom už boli definované niektoré premenné. Spustenie „p“ vytvorí nové prostredie; „p1“ a „p2“ by už boli v ňom umiestnené. Premenné sú lokálne pre proces, v ktorom sú sú deklarované, to znamená tam, kde sú im priradené hodnoty. Ak ich chcete sprístupniť iným vytvoreným procesom, musíte ich explicitne odovzdať pomocou zabudovaného príkazu „export“.

možnosti

Parametre je možné odovzdať do dávkového súboru. Shell používa pozičné parametre (to je poradie, v akom sa objavujú, je nevyhnutné). V príkazovom súbore začínajú premenné zodpovedajúce parametrom (podobne ako shell-variables) znakom „$“ a potom nasleduje jedna z číslic od 0 do 9: Nech sa vyvolá „examp-1“ s parametrami „cock“ a „tail“. Tieto parametre spadajú do nového prostredia pod štandardnými názvami „1“ a „2“. (Štandardná) premenná s názvom "0" bude obsahovať názov volaného výpočtu. Pri prístupe k parametrom je pred číslicu umiestnený znak dolára „$“ (ako pri prístupe k premenným): $ 0 zodpovedá názvu tohto príkazového súboru; $ 1 je prvý parameter v poradí; $ 2 sekundový parameter atď. Pretože počet premenných, ktorým je možné odovzdať parametre, je obmedzený na jednu číslicu, t.j. 9. („0“, ako už bolo uvedené, má špeciálny význam), potom sa na prenos ďalších parametrov použije špeciálny príkaz „shift“. Jedinečný prístup k parametrom poskytuje príkaz „set“. Napríklad úryvok

Nastavte b s prvou ozvenou \u003d $ 1 sekunda \u003d $ 2 tretia \u003d $ 3

sa zobrazí

Prvý \u003d druhý \u003d b tretí \u003d c

tie. príkazom "set" sa nastavia hodnoty parametrov. To môže byť veľmi výhodné. Napríklad príkaz „date“ zobrazí aktuálny dátum, napríklad „pondelok 1. mája 12:15:10 2000“, ktorý sa skladá z piatich slov a potom

Nastaviť echo „dátumu“ $ 1 $ 3 $ 5

sa zobrazí

Po 01. 2000

Príkaz "set" umožňuje tiež riadiť vykonávanie programu, napríklad: set -v zobrazuje riadky načítané z shellu do terminálu. set + v zruší predchádzajúci režim. set -x pred vykonaním vytlačí príkazy do terminálu. set + x zruší predchádzajúci režim. Príkaz „set“ bez parametrov zobrazí stav softvérového prostredia terminálu.

Substitúcie škrupiny

Pred spustením priamej interpretácie a vykonania príkazov obsiahnutých v príkazových súboroch vykoná shell rôzne druhy substitúcií: 1. NÁHRADA VÝSLEDKOV. Všetky príkazy uvedené v úvodzovkách sa vykonajú a výsledok sa nahradí na ich mieste. 2. NÁHRADA HODNÔT PARAMETROV A PREMENNÝCH. To znamená, že slová začínajúce na „$“ sú nahradené zodpovedajúcimi hodnotami premenných a parametrov. 3. VÝKLAD PRIESTOROV. Uniknuté medzery sú ignorované. 4. GENERÁCIA NÁZVOV SÚBOROV. Slová sú kontrolované na prítomnosť špeciálnych znakov („*“, „?“, „“) A sú vykonávané zodpovedajúce generácie. Softvérové \u200b\u200bprostredie Každý proces má prostredie, v ktorom beží. Shell používa množstvo premenných prostredia. Ak zadáte príkaz „set“ bez parametrov, na obrazovke sa zobrazia informácie o množstve štandardných premenných vytvorených pri prihlásení (a odovzdaných všetkým vašim novým procesom „po dedičstve“), ako aj o premenných vytvorených a exportovaných vašimi procesmi. Konkrétny typ a obsah zobrazených informácií závisí vo veľkej miere od použitej verzie systému UNIX a spôsobu inštalácie systému.

Výsledok spustenia príkazu set bez parametrov (nedokončené):

HOME \u003d / root PATH \u003d / usr / local / bin: / usr / bin: / bin:.: / Usr / bin / X11: IFS \u003d LOGNAME \u003d sae MAIL \u003d / var / spool / mail / sae PWD \u003d / home / sae / STUDY / SHELL PS1 \u003d $ (PWD): "" PS2 \u003d\u003e SHELL \u003d / bin / bash

Poďme komentovať hodnoty premenných. HOME \u003d / root je názov domovského adresára, v ktorom sa užívateľ po prihlásení nachádza. To znamená, že po správnom zadaní používateľského mena a hesla sa ocitnem v adresári „/ root“. PATH \u003d / bin: / usr / bin:.: / Usr / local / bin: / usr / bin / X11 - táto premenná určuje postupnosť súborov, ktoré „shell“ hľadá pri hľadaní príkazu. Názvy súborov sú tu oddelené dvojbodkami. Poradie prehliadania zodpovedá poradiu mien v ceste. Spočiatku sa ale vyhľadávanie deje medzi takzvanými zabudovanými príkazmi. Integrované príkazy zahŕňajú najčastejšie používané príkazy ako „echo“, „cd“, „pwd“, „date“. Potom systém vyhľadá adresár „/ bin“, ktorý môže obsahovať príkazy „sh“, „cp“, „mv“, „ls“ atď. Potom adresár "/ usr / bin" s príkazmi "cat", "cc", "expr", "nroff", "man" a mnoho ďalších. Ďalej sa vyhľadávanie vyhľadáva v aktuálnom adresári („.“ Alebo v inej notácii pre „prázdny“, tj. „“), Kde sa najpravdepodobnejšie nachádzajú zadané príkazy. Po zadaní príkazového riadku a stlačení "shell" (po vykonaní potrebných substitúcií) rozpozná meno, ktoré sa zhoduje s príkazom, a vyhľadá ho v adresároch uvedených v PATH. Ak je príkaz umiestnený mimo týchto adresárov, nenájde sa. Ak existuje niekoľko príkazov s rovnakým názvom, zavolá sa ten, ktorý sa nachádza v adresári zobrazenom ako prvý. PATH, rovnako ako iné premenné, je možné ľahko zmeniť pridaním, preusporiadaním alebo vylúčením adresárov. IFS \u003d (Internal Field Separator) uvádza zoznam znakov používaných na oddelenie slov (polí). Jedná sa o „medzeru“, „tabuľku“ a „posun riadku“, takže tu naľavo od priradenia nie je nič viditeľné a dva riadky sú obsadené. LOGNAME \u003d root - prihlasovacie meno (meno používateľa). MAIL \u003d / var / spool / mail / root je názov súboru, do ktorého je (e-mailom) prijímaná pošta. PWD \u003d / root - názov aktuálneho adresára PS1 \u003d $ (PWD): "" - typ propagátora. V takom prípade výzva zobrazí názov aktuálneho adresára, dvojbodku a medzeru. To znamená, že bude „/ root:“. PS2 \u003d\u003e - tento promótor (tu „\u003e“) sa používa ako pozvánka na pokračovanie v zadávaní (v ďalšom riadku) nedokončeného príkazu. Napríklad zadajte úvodnú zátvorku „(“ a po stlačení na ďalšom riadku uvidíte tohto vyzývateľa. Ak neviete, čo ďalej, zadajte koncovú zátvorku „)“ a zmizne. SHELL \u003d / bin / sh - táto premenná určuje shell, ktorý užívateľ používa. V takom prípade sa použije štandardný shell („sh“). Zdrojové prostredie sa inštaluje automaticky pri prihlásení pomocou súborov ako „/ etc / rc“ a „/etc/.profile“. Jedným zo spôsobov, ako jednoducho zmeniť prostredie (napríklad cesta hľadania príkazov, typ promótora, typ shellu, farba obrazovky atď.), Je vložením týchto informácií do domovského adresára do špecializovaného súboru „.profile“ ($ (HOME) /. profilu) priradením požadovaných hodnôt k premenným prostredia. To znamená, zavolajte tento súbor do editora a napíšte, čo chcete). Po každom prihlásení sa tento súbor automaticky spustí a nainštaluje nové prostredie. Tento súbor MUSÍ byť umiestnený vo vašom domovskom adresári (prihlasovací adresár). Upozorňujeme, že názvy súborov začínajúce bodkou majú spravidla špeciálny stav. Nezobrazujú sa teda na obrazovke jednoduchým príkazom „ls“ - tento príkaz musíte zavolať s príznakom „-a“. Mimochodom, nie sú zničené bez rozdielu príkazom „rm *“. Samotný shell automaticky priraďuje hodnoty nasledujúcim premenným (parametrom) :? hodnota vrátená posledným príkazom; $ číslo procesu; ! číslo procesu na pozadí;

  1. počet pozičných parametrov odovzdaných do shellu;
  • zoznam parametrov ako jeden riadok;

@ zoznam parametrov ako zbierka slov; - vlajky odovzdané škrupine. Pri prístupe k týmto premenným (to znamená pri ich použití v príkazovom súbore - shell programe) uvádzajte predponu „$“. Špeciálna premenná „$$“ hrá dôležitú úlohu pri vytváraní jedinečných súborov, ktorých hodnota zodpovedá počtu procesov vykonávajúcich tento výpočet. Každý nový výpočet vykonaný počítačom inicializuje jeden alebo viac procesov, ktoré sú automaticky očíslované v poradí. Preto pri použití čísla procesu ako názvu súboru môžete mať istotu, že každý nový súbor bude mať nový názov (nebude prepísaný namiesto existujúceho). Ďalšou výhodou je hlavná nevýhoda tohto spôsobu pomenovania súborov. Nie je známe, aké názvy budú súborom priradené. A ak je v rámci tohto procesu možné nájsť súbor „bez hľadania“, to znamená prístupom k nemu pomocou $$, potom sa také súbory môžu ľahko stratiť. To vytvára ďalšie problémy pri ladení programov. Volanie tlmočníka Po registrácii používateľa v systéme (pomocou príkazu login) sa vyvolá tlmočník jazyka SHELL. Ak registračná príručka používateľa obsahuje súbor .profile, potom pred prijatím aspoň jedného príkazu z terminálu tlmočník vykoná tento súbor (predpokladá sa, že súbor .profile obsahuje príkazy). Po vyvolaní je možné určiť nasledujúce prepínače: -c string Príkazy sa čítajú zo zadaného reťazca. -s Príkazy sa čítajú zo štandardného vstupného súboru. Správy tlmočníka sa zapisujú do štandardného diagnostického súboru. -i Interaktívny režim. Ak je prvý znak parametra „0“ -, potom sa príkazy načítajú zo súboru .profile.

SOFTVÉROVÉ ŠTRUKTÚRY \u003d\u003d\u003d

Rovnako ako v ktoromkoľvek programovacom jazyku môže shell text obsahovať komentáre. Používa sa na to znak „#“. Všetko, čo sa nachádza v riadku (v príkazovom súbore) naľavo od tohto znaku, tlmočník interpretuje ako komentár. Napríklad

# Toto je komentár.

Rovnako ako v ktoromkoľvek procedurálnom programovacom jazyku má shell jazyk operátory. Niekoľko operátorov vám umožňuje riadiť postupnosť vykonávania príkazov. U takýchto operátorov je často potrebné skontrolovať stav, ktorý určuje smer pokračovania výpočtov.

Testovací príkaz

Príkaz test overuje, či je splnená niektorá podmienka. Tento (vstavaný) príkaz sa používa na vytvorenie príkazov na výber shellu a príkazov slučiek. Dva možné formáty príkazov:

Podmienka testu

[podmienka]

použijeme druhú možnosť, t.j. namiesto toho, aby sme pred podmienku napísali slovo „test“, uzavrieme podmienku do zátvoriek, ktorá je známa skôr programátorom. V skutočnosti shell rozpozná tento príkaz podľa úvodnej zátvorky „[“ ako slova zodpovedajúceho príkazu „test“. Medzi zátvorkami a podmienkou, ktorú obsahujú, musia byť medzery. Medzi hodnotami a znakom porovnania alebo operácie musia byť medzery. Shell používa podmienky rôznych „typov“. PODMIENKY PRE KONTROLU SÚBOROV: -f súbor súbor "súbor" je bežný súbor; -d súbor súbor "súbor" - adresár; -c súbor súbor "súbor" je špeciálny súbor; -r súbor má povolenie na čítanie súboru "súbor"; -w súbor má povolenie na zápis do súboru „súbor“; súbor -s súbor „súbor“ nie je prázdny.

PODMIENKY KONTROLY RIADKU: str1 \u003d str2 reťazce "str1" a "str2" sa zhodujú; str1! \u003d str2 reťazce "str1" a "str2" sa nezhodujú; -n str1 reťazec "str1" existuje (neprázdny); -z str1 reťazec "str1" neexistuje (prázdny). Príklady.

X \u003d "kto je kto"; exportovať x; ["kto je kto" \u003d "$ x"]; echo $? 0 x \u003d abc; exportovať x; [abc \u003d "$ x"]; echo $? 0 x \u003d abc; exportovať x; [-n "$ x"]; echo $? 0 x \u003d ""; exportovať x; [-n "$ x"]; echo $? 1

Okrem toho existujú dve štandardné hodnoty podmienky, ktoré je možné použiť namiesto podmienky (nie sú potrebné zátvorky). PODMIENKY PRE POROVNANIE ČÍSEL INTEGER: x -eq y "x" sa rovná "y", x -ne y "x" sa nerovná "y", x -gt y "x" je väčšie ako "y", x -ge y "x" je väčšie ako alebo rovné „y“, x -lt y „x“ menšie ako „y“, x -le y „x“ menšie alebo rovné „y“. KOMPLEXNÉ PODMIENKY: Implementujú sa pomocou typických logických operácií :! (ne) invertuje hodnotu výstupného kódu. -o (alebo) zodpovedá logickému ALEBO. -a (a) sa zhoduje s logickým AND.

Podmienené vyhlásenie „ak“

Všeobecne má vyhlásenie „if“ štruktúru

Ak je to podmienka, uveďte zoznam

Tu je „elif“ skratka pre „else if“ možno použiť spolu s úplnou, t.j. vnorenie ľubovoľného počtu výrokov „ak“ (rovnako ako iných výrokov) je povolené. „Zoznam“ musí byť v každom prípade samozrejme zmysluplný a platný v tejto súvislosti. Najkompletnejšia štruktúra tohto operátora

Ak je podmienka, uveďte fi

ak je podmienka splnená (spravidla ide o kom a je prijatý kód dokončenia „0“, vykoná sa „zoznam“, inak sa preskočí. Príklady. Nech sa napíše „if-1“

Ak [$ 1 –gt $ 2]

potom pwd else echo $ 0: Dobrý deň!

Potom volanie if-1 12 11 dá / home / sae / STUDY / SHELL a if-1 12 13 dá if-1: Dobrý deň!

Zavolajte operátorovi („prípad“)

Príkaz na výber „prípadu“ má štruktúru:

Reťazec prípadu v

vzor) zoznam príkazov ;; vzor) zoznam príkazov ;; ... vzor) zoznam príkazov ;;

V tomto prípade sú slová „prípad“, „in“ a „esac“ funkčné slová. „Reťazec“ (môže to byť jeden znak) sa porovnáva so „vzorom“. Potom sa vykoná „zoznam príkazov“ vybraného riadku. Vyzerajú nezvyčajne na konci riadkov výberu „;;“, ale napíšte sem „;“ bola by chyba. Pre každú alternatívu je možné vykonať niekoľko príkazov. Ak sú tieto príkazy napísané v jednom riadku, potom symbol „;“ sa použije ako oddeľovač príkazov. Posledný riadok výberu má zvyčajne vzor „*“, čo v prípade „štruktúry“ znamená „ľubovoľná hodnota“. Tento reťazec je vybraný, ak hodnota premennej (tu $ z) nezodpovedá žiadnemu z predtým napísaných vzorov, ktoré sú ohraničené znakom „)“. Hodnoty sa zobrazujú v poradí, v akom boli zapísané.

Vymenovaný operátor slučky („pre“)

Operátor slučky „pre“ má štruktúru:

Pre meno

zoznam vykonaných príkazov, kde „for“ je funkčné slovo, ktoré určuje typ slučky, „do“ a „hotové“ sú funkčné slová, ktoré zvýrazňujú telo slučky. Nech je príkaz „lsort“ zastúpený dávkovým súborom

Pre i v file_1 file_2 file_3 urobte proc_sort $ i done

V tomto príklade hrá názov „i“ úlohu parametra slučky. Tento názov je možné chápať ako premennú prostredia, ktorej sa postupne priraďujú uvedené hodnoty (i \u003d file_1, i \u003d file_2, i \u003d file_3) a príkaz „proc_sort“ sa vykonáva v slučke. Často sa používa tvar „for i in *“, čo znamená „pre všetky súbory v aktuálnom adresári“. Nech „proc_sort“ bude zase predstavovaný dávkovým súborom

Mačka 1 dolár | triediť | tričko / dev / lp\u003e $ (1) _ roztriedené

tie. zadané súbory sa zoradia postupne, výsledky zoradenia sa vytlačia („/ dev / lp“) a odošlú sa do súborov file_1_sorted file_2_sorted a file_3_sorted

Operátor slučky so skutočnou podmienkou („while“)

Štruktúra „while“, ktorá poskytuje aj výpočty, je výhodnejšia, ak nie je vopred známy presný zoznam hodnôt parametrov, alebo je tento zoznam potrebné získať ako výsledok výpočtov v cykle. Operátor slučky „while“ má štruktúru:

Zatiaľ čo podmienka

urobte zoznam vykonaných príkazov, kde „while“ je funkčné slovo, ktoré definuje typ slučky so skutočnou podmienkou. Zoznam príkazov v tele slučky (medzi „do“ a „hotovo“) sa opakuje, kým podmienka nezostane pravdivá (tj. Kód dokončenia posledného príkazu v tele slučky je „0“) alebo kým nebude slučka prerušená zvnútra špeciálnymi príkazmi ( „break“, „continue“ alebo „exit“). Pri prvom vstupe do slučky musí byť podmienka splnená. Príkaz „break [n]“ vám umožňuje vymaniť sa zo slučky. Ak chýba „n“, je to ekvivalent „prerušenia 1“. „n“ označuje počet vnorených slučiek, z ktorých sa majú opustiť, napríklad „zlom 3“ - výstup z troch vnorených slučiek. Na rozdiel od príkazu „break“ príkaz „continue [n]“ iba ukončí vykonávanie aktuálneho cyklu a vráti sa k ZAČIATKU cyklu. Môže to byť aj s parametrom. Napríklad „continue 2“ znamená výstup na začiatok druhej (ak sa počíta z hĺbky) vnorenej slučky. Príkaz „exit [n]“ vám umožňuje ukončiť procedúru spolu s návratovým kódom „0“ alebo „n“ (ak je zadaný parameter „n“). Tento príkaz je možné použiť nielen v slučkách. Aj v lineárnom slede príkazov môže byť užitočné pri ladení zastaviť vykonávanie (aktuálneho) výpočtu v danom bode.

Operátor slučky s nesprávnym stavom („do“)

Operátor slučky „until“ má štruktúru:

Do stavu

urobte zoznam vykonaných príkazov, kde „až“ je funkčné slovo, ktoré definuje typ slučky s falošnou podmienkou. Zoznam príkazov v tele slučky (medzi „do“ a „hotovo“) sa opakuje, kým podmienka nezostane nepravdivá alebo kým nebude slučka zvnútra prerušená špeciálnymi príkazmi („break“, „continue“ alebo „exit“). Pri prvom vstupe do slučky by podmienka nemala byť splnená. Rozdiel od operátora „while“ je v tom, že podmienka slučky sa kontroluje na nepravdivosť (pre nenulový ukončovací kód posledného príkazu tela slučky) sa kontroluje PO KAŽDOM (vrátane prvého!) Vykonaní príkazov tela slučky. Príklad.

Až kým nebude falošné

prečítajte x, ak [$ x \u003d 5], potom dostatočne ozvena; break else echo some more fi

Tu program s nekonečnou slučkou čaká na zadanie slov (opakovanie frázy „niektoré ďalšie“ na obrazovke), kým nezadáte „5“. Potom sa vydá „dosť“ a príkaz „break“ ukončí vykonávanie slučky.

Prázdny operátor

Prázdny výpis má formát

:

Ničnerobenie. Vráti hodnotu „0“. “.

Funkcie shellu

Táto funkcia umožňuje pripraviť zoznam príkazov shellu pre neskoršie vykonanie. Popis funkcie vyzerá takto:

Meno () (zoznam príkazov)

potom sa funkcia volá menom. Funkcia nevytvára nový proces. Beží v prostredí príslušného procesu. Argumenty funkcie sa stanú jej pozičnými parametrami; názov funkcie je jej nulový parameter. Vykonanie funkcie môže byť prerušené operátorom „return [n]“, kde (voliteľné) „n“ je návratový kód.

Prerušenie spracovania („pasca“)

Niekedy je potrebné chrániť vykonávanie programu pred prerušením. Najčastejšie sa musíte stretnúť s nasledujúcimi prerušeniami zodpovedajúcimi signálom: 0 ukončenie tlmočníka, 1 ukončenie hovoru (odpojenie vzdialeného účastníka), 2 prerušenie od , 9 zničenie (nie je zachytené), 15 koniec popravy. Na ochranu pred prerušením je k dispozícii príkaz „trap“ vo formáte:

Zachyťte signály zo zoznamu príkazov

Ak systém narazí na prerušenia, ktorých signály sú uvedené cez medzeru v „signáloch“, potom sa vykoná „zoznam príkazov“, po ktorom (ak sa príkaz „exit“ v zozname príkazov nevykonal) sa riadenie vráti na bod prerušenia a bude pokračovať vo vykonávaní súboru príkazov. Napríklad ak potrebujete vymazať súbory v priečinku „/ tmp“ pred prerušením vykonávania dávkového súboru, môžete to urobiť príkazom „trap“:

Trap "rm / tmp / *; výstup 1" 1 2 15

ktorý predchádza ostatným príkazom v súbore. Tu sa po odstránení súborov vykoná „výstup“ z dávkového súboru.

Anotácia: Koncept škrupiny. Prehľad príkazových škrupín. Bash shell. Vlastnosti práce (história príkazov, operátor "!", Akcie stlačením klávesu ). Multitasking konzoly. Úlohy. Manažment práce. Premenné prostredia veliteľa polnoci

Priebeh hodiny

1. Vo svete Linux a Unix je práca na počítači neoddeliteľne spojená s týmto konceptom príkazový shell - program, ktorý umožňuje používateľovi komunikovať so systémom zadávaním a vykonávaním príkazov. Avšak, príkazový shell je pravidelný program. Môžete to dokázať nastavením ako predvoleného prostredia v súbore heslo iný program pre používateľa. Ale aby to systém vedel ako shell, musíte do neho pridať absolútny názov súboru / etc / škrupiny.

Linux je dodávaný s niekoľkými mušľami, ich zloženie sa môže líšiť v závislosti od distribúcie, vždy však môžete nájsť:

Bourne Shell (sh) - najstarší a najbežnejší príkazový shell pre systémy Unix. Neexistuje žiadny systém Unix, ktorý by ho nepoužíval.

Bourne Again Shell (bash) je rozšírený Bourne Shell. Má veľa príjemných výhod, a preto je v poslednej dobe taký populárny. Je to „predvolený“ shell pre takmer všetky distribúcie Linuxu.

Populárne skiny sú tiež:

csh - shell, ktorého príkazový systém je blízky programovacím jazykom C.

tcsh je shell s príkazovým systémom podobným programovacím jazykom Tcl.

zsh je pravdepodobne najsilnejší shell. Jedná sa o rozšírenie sh (bourne shell).

Pretože bash je štandardne používaný v Linuxe, povieme si o ňom.

2. Príkazová schránka bash bol pôvodne bezplatným náprotivkom Bourne Shell. Následne, keď jeho schopnosti narástli, bol považovaný za nezávislý produkt. Hlavné vlastnosti programu bash sú:

Tabuľka 1.1.
Možnosť Komentovať
1 Úprava reťazca Schopnosť editovať zadaný príkaz namiesto jeho prepisovania
2 Organizácia kanála Možnosť presmerovania I / O, organizovanie kanálov medzi vykonávanými úlohami
3 Jednoduchosť použitia Používanie aliasov príkazov, histórie príkazov, automatického dokončovania
4 Manažment práce Schopnosť vytvárať a spravovať pracovné miesta na pozadí
5 Flexibilita prispôsobenia Používanie súborov skriptu na prihlásenie pre každého používateľa osobitne, premenné prostredia

Presmerovanie I / O a kanály spoznáme neskôr v lekcii 8. Preto tento bod vynecháme. Poďme sa však rozprávať podrobnejšie o vlastnostiach práce s bash, o výhodách, ktoré poskytuje.

Bash automaticky zapíše všetky príkazy zadané používateľom do súboru ~ / .bash_history... Na správu tohto súboru sa používa príkaz history. história je zabudovaný príkaz bash. To znamená, že tomuto príkazu neexistuje žiadny spustiteľný súbor. Ja sám príkazový shell vykonáva všetky akcie. Zadáva sa bez parametrov, obsahuje iba zoznam všetkých príkazov uložených v tomto súbore a je totožný s príkazom cat ~ / .bash_history.

História príkazov existuje na zjednodušenie sady bežne používaných príkazov. V zozname sa dá listovať históriou príkazov pomocou klávesov <вверх> a<вниз> .

Ďalším spôsobom je písanie na príkazovom riadku! a spustite príkaz a stlačte ... Bude vykonaný posledný príkaz z histórie, ktorého prvé písmená sa zhodujú s napísanými. Napríklad:

$! / usr / usr / bin / perl ./ptest.pl OK $! xfonts bash :! xfonts: udalosť sa nenašla $

Ako však urýchliť vstup, ak história ešte neobsahuje príkaz, ktorý potrebujeme? V takom prípade nám kľúč pomôže ... Po zadaní niekoľkých prvých písmen príkazu (alebo cesty k súboru) stlačte a Bash automaticky dokončí váš príkaz (alebo prvok cesty). V prípade, že sa zmestí viac súborov alebo sa žiadny nezmestí, systém vydá zvukový signál. Ak tlačidlo stlačte znova, potom, keď sa zobrazí viac súborov - systém zobrazí zoznam, a keď žiadny - zopakuje zvukový signál

3. Už od prvej hodiny ste si mali pamätať, že Linux je multitaskingové prostredie. Až doteraz ste však stále nemohli využívať výhody jeho multitaskingu. Na prvý pohľad sa zdá, že konzola neumožňuje využívať možnosti multitaskingu systému a iba v grafickom prostredí je možné spustiť dva alebo viac programov súčasne. Ale nie je to tak! Konzola tiež vykonáva viac úloh naraz.

Najskôr môžete otvoriť viac konzol otvorením programu na každej z nich. Prepínanie medzi konzolami sa uskutoční pomocou klávesov Ctrl + kde x - číslo konzoly.

A dokonca aj v jednej konzole môžete plne využívať výhody multitaskingového systému pomocou príkazov správy úloh.

- kombinácia klávesov, ktorá odosiela nezachytený signál do procesu sigstop... Zastaví vykonanie procesu na prenos riadenia do príkazového riadku.

príkaz & - príkaz & after umožňuje spustenie na pozadí.

jobs - Uvádza zoznam aktuálnych úloh shellu.

bg<#j> - umiestni úlohu #j do pozadia. Predtým musí byť úloha zastavená kombináciou klávesov ... Ak má tlmočník v súčasnosti iba jednu úlohu, je možné číslo vynechať.

fg<#j> - uvedie úlohu #j do režimu vykonávania popredia. Úloha musí byť zastavená kombináciou klávesov alebo byť v pozadí. Ak má tlmočník v súčasnosti iba jednu úlohu, je možné číslo vynechať.

$ man bash ^ Z + zastavený man bash $ vim ^ Z vim + zastavený vim $ bg 1 + man bash & $ úlohy + zastavený man bash + zastavený vim $ fg 2 + vim $ fg + man bash $

4. Premenné prostredia - informácie o systéme označujúce vaše preferencie, ako napr textový editor predvolené, cesty vyhľadávania spustiteľných súborov atď., ako aj prihlasovacie údaje používateľa, systému a shellu, ako napr užívateľské meno, verzia Linuxu atď., ktorú používa shell a ďalšie programy.

Užívateľom bežne používané premenné sú:

PATH - premenná obsahuje cesty, po ktorých by systém mal hľadať spustiteľné súbory, pokiaľ nie sú úplné alebo relatívna cesta k nim.

PWD - táto premenná obsahuje celé meno aktuálneho adresára.

DOMOV - premenná obsahuje celú cestu domovský adresár používateľa.

HOSTNAME - premenná obsahuje názov počítača.

LOGNAME - obsahuje užívateľské meno

SHELL - obsahuje názov shellu bežiaceho v aktuálnej relácii.

USER - obsahuje užívateľské menoktorého relácia je práve otvorená.

Zoznam premenných nainštalovaných v systéme je možné vidieť po zadaní príkazu export bez parametrov.

Bash shell má svoje vlastné premenné. Aby sa z miestnych premenných stali systémové premenné, musia sa exportovať pomocou rovnakého príkazu na export. Napríklad:

$ export deklarovať -x HOME \u003d "/ home / gserg" deklarovať -x HOSTNAME \u003d "WebMedia" deklarovať -x LANG \u003d "ru_RU.KOI8-R" deklarovať -x LOGNAME \u003d "gserg" deklarovať -x PATH \u003d "/ bin: / usr / bin: / usr / local / bin: / home / gserg / bin "deklarovat -x PWD \u003d" / home / gserg "deklarovat -x SHELL \u003d" / bin / bash "deklarovat -x TERM \u003d" Eterm "deklarovat -x USER \u003d "gserg" $ EDITOR \u003d / bin / vim $ export EDITOR $ export deklarovať -x EDITOR \u003d "/ bin / vim" deklarovať -x HOME \u003d "/ home / gserg" deklarovať -x HOSTNAME \u003d "WebMedia" deklarovať -x LANG \u003d "ru_RU.KOI8-R" deklarovať -x LOGNAME \u003d "gserg" deklarovať -x PATH \u003d "/ bin: / usr / bin: / usr / local / bin: / home / gserg / bin:" deklarovať - x PWD \u003d "/ home / gserg" deklarovať -x SHELL \u003d "/ bin / bash" deklarovať -x TERM \u003d "Eterm" deklarovať -x USER \u003d "gserg" $

Velenie odstavený odstráni systémovú premennú. Napríklad:

$ unset EDITOR $ export deklarovať -x HOME \u003d "/ home / gserg" deklarovať -x HOSTNAME \u003d "WebMedia" deklarovať -x LANG \u003d "ru_RU.KOI8-R" deklarovať -x LOGNAME \u003d "gserg" deklarovať -x PATH \u003d " / bin: / usr / bin: / usr / local / bin: / home / gserg / bin: "deklarovať -x PWD \u003d" / home / gserg "deklarovať -x SHELL \u003d" / bin / bash "deklarovať -x TERM \u003d "Eterm" vyhlásiť -x USER \u003d "gserg" $

5. V dnešnej lekcii vám predstavíme ďalší, trochu neštandardný príkazový shell Polnočný veliteľ... Nie je príkazový shell v obvyklom zmysle. Toto je správca textových súborov - analógový Veliteľ Norton alebo Ďaleko. Polnočný veliteľ sa spúšťa príkazom mc. Povieme si o jeho schopnostiach.

Obrazovka Polnočný veliteľ „a rozdelená na dve časti. Takmer celý priestor na obrazovke zaberajú dva panely so zoznamom adresárov a súborov. Štandardne je druhý riadok v dolnej časti obrazovky príkazový riadok, kde môžete vykonávať bežné príkazy shellu, a v spodnom riadku sa zobrazujú tipy na funkčné klávesy ( F1-F10). Horný riadok symbolov obsahuje ponuku, pomocou ktorej môžete vykonávať rôzne funkcie. Ak chcete použiť túto ponuku, môžete kliknúť na požadovanú položku alebo stlačiť kláves F9 a pomocou klávesov ovládanie kurzora vyberte požadovanú položku.

Panely Polnočný veliteľ poskytujú simultánne prezeranie dvoch adresárov. Jeden z panelov je aktívny (v tom zmysle, že používateľ môže so súbormi a adresármi v ňom vykonávať určité akcie). Na aktívnom paneli je zvýraznený názov jedného zo súborov alebo adresára a názov panela v hornom riadku. Názov titulu je rovnaký ako názov aktuálne zobrazeného adresára. Takmer všetky operácie sa vykonávajú na aktívnom paneli. Niektoré operácie ako prenos alebo kopírovať súbory použite pasívny panel ako miesto na kopírovanie, premiestňovanie atď.

Teraz si povieme niečo o základných klávesových skratkách, s ktorými budete pracovať Polnočný veliteľ „ohm.

aktívny panel zmeníte pomocou klávesov alebo +

súbor označíte stlačením alebo +

kliknite pre pomoc

zavolá prehliadač súborov

cez súbor upravíte

vám umožní skopírovať súbor.

presunúť alebo premenovať súbor

vytvoriť adresár

Kľúč odstráni súbor a / alebo adresár

, ako už bolo spomenuté, otvára prístup do ponuky.

- umožní vám výstup Polnočný veliteľ.

presunie ukazovateľ na začiatok zoznamu súborov,

- oproti - na koniec zoznamu.

a zmeniť pozíciu indikátora o jednu stránku nahor, respektíve nadol.

Kľúč <*> na ďalšej klávesnici vám umožní invertovať výber súborov (neovplyvní to adresáre)

Kľúč <+> na ďalšej klávesnici vám umožní označiť súbory podľa masky, a <-> zrušte začiarknutie súborov maskou.

+ - aktualizácia obsahu adresára (opätovným načítaním z disku alebo zo siete)

+ - zameniť pravý a ľavý panel.

+ - odstrániť / vrátiť panely.

Aj keď klávesové skratky sú optimálnym nástrojom na dokončenie úlohy Polnočný veliteľ „ohm čo najrýchlejšie a najpohodlnejšie je pre začiatočníkov dosť ťažké naučiť sa ich naraz. Ak chcete vyplniť túto medzeru a pridať ďalšie funkcie, ktorým chýbajú klávesové skratky, Polnočný veliteľ má menu (vyvolané F9).

Menu pozostáva z položiek: Ľavý panel, Súbor, Príkaz, Možnosti, Pravý panel.

„Ľavý / pravý panel“ - tieto položky ponuky sú úplne rovnaké. Jediné rozdiely medzi nimi sú v tom, že vykonané akcie budú adresované do ľavého alebo pravého panelu.

"Formát zoznamu" - otvorí dialógové okno, v ktorom môžete zvoliť zobrazenie, v ktorom sa zobrazí zoznam súborov / adresárov. Vyberte si zo štandardných, skrátených a rozšírených formátov. Používateľ v tomto okne si však môže sám zvoliť zadefinovanie zobrazenia panela výberom prepínača „Definované používateľom“.

"Rýchle zobrazenie" - prepne panel do režimu automatického prezerania súborov vybraných na susednom paneli. Zaostrenie sa automaticky prepne na opačnú tablu.

„Informácie“ - prepne panel na prezeranie informácií o súbore zvýraznenom na susednom paneli, ako je poloha, prístupové práva a vlastník, systém súborov a zariadenie, na ktorom je umiestnený, počet pevných odkazov spojených s týmto súborom, ako aj informácie o zariadení, na ktorom je súbor umiestnený,

"Strom" - prekladá Polnočný veliteľ do režimu podobného režimu prieskumníka systému Windows. Na paneli, na ktorý sa príkaz vzťahuje "Strom", je zostavený adresárový strom, cez ktorý sa môžete pohybovať pomocou šípok ovládanie kurzora, kľúče PageUp, PageDown, Home, End... Na susednom paneli sa zobrazuje obsah adresára zvýraznený v strome.

„Poradie triedenia“ - otvorí dialógové okno, v ktorom môžete vybrať atribút, pomocou ktorého sa vykoná triedenie súborov a adresárov v zozname, napríklad názov, prípona, čas úprav, čas prístupu, čas zmeny atribútu, veľkosť, uzol (kde sa súbor nachádza). Súbory môžete tiež nechať nekategorizované, zoradiť ich podľa veľkých a malých písmen alebo v opačnom poradí.

„Filter“ - umožňuje vybrať názvy súborov, ktoré sa zobrazia na paneli pomocou regulárneho výrazu zadaného v dialógovom okne.

„Pripojenie FTP“ - pomocou tohto príkazu môžete nadviazať spojenie so vzdialeným (alebo dokonca miestnym) počítačom pomocou protokolu ftp... Ak je zadaná iba adresa vzdialeného servera, potom Polnočný veliteľ sa pokúsi nadviazať anonymné pripojenie. Celý riadok použitý na nastavenie uzla je nasledovný:

ftp: username: password @ server_address: port / directory_on_server

Po nadviazaní spojenia pracujte s vzdialený súborový systém sa stane podobne ako pri práci s lokálnym súborovým systémom.

„Pripojenie škrupiny“ - umožňuje otvoriť sieťové pripojenie pomocou protokolu RYBY (Transfer polí cez SHELL prenos súborov cez shell) -. RYBY používa protokoly RSH (Remote SHell - vzdialený shell) alebo SSH (Secure SHell - chránený plášť, analógový RSH, ale s podporou šifrovania prenášaných údajov). Celý riadok, pomocou ktorého môže používateľ určiť vzdialeného hostiteľa, je:

sh: username @ server_address: options / directory_on_server

Parameter užívateľské meno, možnosti a adresár_on_server voliteľné. Ak užívateľské meno teda nešpecifikované Polnočný veliteľ sa pokúsi prihlásiť do vzdialeného systému pomocou používateľského mena použitého v lokálnom počítači.

„Revidovať“ - analóg kombinácie klávesov + - zavolá aktualizáciu zoznamu súborov a adresárov na aktuálnom paneli ich opätovným načítaním z disku alebo cez sieť.

„Súbor“ - časť ponuky, ktorej položky poskytujú základné funkcie na spracovanie súborov a adresárov, ako napríklad:

„Používateľské menu“ - umožňuje vyvolať ponuku nastavenú používateľom. Tiež sa volá kľúčom .

"Zobraziť súbor" - analóg funkcie vykonávanej stlačením ... Umožňuje zobraziť zvýraznený súbor (alebo prejsť do adresára). Podporuje mnoho formátov, ako sú textové formáty, archív, Winword DOC, spustiteľné súbory systému Linux atď.

„Prezeranie súboru ...“ - rovnaké ako predchádzajúca položka, ale neovplyvní zvýraznený súbor, ale ten, ktorého meno a cesta budú zadané v dialógovom okne.

„Zobraziť tím“ - umožňuje vykonať príkaz a zobraziť ho stdout v režime prezerania súborov.

„Úpravy“ - otvorí súbor na úpravy. Jednoduché zabudovanie textový editor má dostatočnú sadu zabudovaných funkcií na úpravu konfiguračných súborov, zdrojových kódov programov atď. a zabudovanú automatickú zvýraznenie syntaxe umožňuje pohodlnejšiu úpravu a čitateľnejšie upravené texty.

„Kopírovať“ - skopíruje súbor z aktívneho panelu na pasívny. Analóg funkcie, ktorú volá ... V predvolenom nastavení sa súbor (alebo skupina súborov) zvýraznený na aktívnom paneli považuje za skopírovaný a cieľom je adresár otvorený na pasívnom paneli. To je možné zmeniť opravením hodnôt poľa v dialógovom okne, ktoré sa otvorí po vyvolaní tohto príkazu.

"Prístupové práva" - umožňuje v dialógovom okne zmeniť prístupové práva k súboru (alebo skupine súborov).

„Symbolický odkaz“ - vytvorí symbolický odkaz. Cieľový súbor je predvolene súbor zvýraznený na aktívnom paneli a vytvorený odkaz bude mať rovnaký názov a bude umiestnený v adresári otvorenom na pasívnom paneli. Používateľ to môže zmeniť v otváracom dialógovom okne.

„Vlastník / skupina“ - zmení vlastníka alebo skupinu, do ktorej súbor / adresár patrí.

„Práva (rozšírené)“ - umožňuje súčasne meniť prístupové práva k súboru a jeho vlastníkovi alebo skupine. Prístupové práva sú reprezentované ako tri sekvencie rwx pre vlastníka, skupinu a všetkých používateľov.

„Premenovať“ - umožňuje premenovať / presunúť súbor. Analóg funkcie, ktorú volá ... V predvolenom nastavení sa súbor (alebo skupina súborov) zvýraznený na aktívnom paneli považuje za presunutý / premenovaný a cieľovým miestom je adresár otvorený na pasívnom paneli. To je možné zmeniť opravením hodnôt poľa v dialógovom okne, ktoré sa otvorí po vyvolaní tohto príkazu.

"Vytvoriť adresár" - vytvorí adresár. Analóg funkcie, ktorú volá ... Adresár sa predvolene vytvára v adresári otvorenom na aktívnom paneli. To je možné zmeniť zadaním úplnej cesty k vytvorenému adresáru v dialógovom okne, ktoré sa otvorí.

„Odstránenie“ - vymaže súbor / skupinu súborov / adresár. Analóg funkcie, ktorú volá .

"Zmeniť adresár" - zmení aktuálny adresár. Podobne ako príkaz cd shellu Bash. V dialógovom okne sa zadá požadovaný adresár.

„Mark group“ - Označí skupinu súborov podľa masky v adresári otvorenom na aktívnom paneli. Analóg funkcie volanej s <+> na prídavnej klávesnici.




Počítačová stránka pomoci

© Copyright 2020,
rzdoro.ru - Počítačová stránka pomoci

  • Kategórie
  • Notebooky
  • Windows 8
  • Audio video
  • Gadgety
  • rôzne
  • Linux
  • internet
  • Microsoft Office