Bazele Linux: Introducere în bash. The Bash Shell: o introducere. Învățarea comenzilor bash pe Linux

Pe majoritatea sistemelor de operare Linux, bash este interpretul implicit de linie de comandă. Pentru a determina interpretul curent, introduceți următoarea comandă:

$ echo $SHELL
/bin/bash

Acest exemplu foloseșteinterpret de linie de comandă bash. Există mulți alți interpreți de comandă. Pentru a activa un alt interpret, puteți introduce numele acestuia la linia de comandă (ksh, tcsh, csh, sh, bash etc.).

Majoritatea sistemelor de operare Linux cu funcții complete oferă toți interpretele de comenzi descrise aici. Dar pe sistemele de operare mai mici pot fi furnizați unul sau doi interpreți.

Verificarea disponibilității articolului care vă intereseazăinterpretlinie de comandă

Cel mai mult într-un mod simplu Pentru a verifica disponibilitatea interpretului de comandă de interes, introduceți numele acestuia pe linia de comandă. Dacă interpretul a început, acesta este disponibil.

Există mai multe motive pentru a alege shell-uri alternative.

  • Experiență de lucru pe sisteme UNIX System V (multe dintre ele folosesc ksh în mod implicit) sau Sun Microsystems și alte sisteme Berkeley UNIX (care folosesc adesea csh). În acest caz, utilizarea acestor interprețilinie de comandăva fi mai convenabil.
  • Necesitatea de a rula scripturi care au fost create pentru un anumit interpret de comandă.
  • Capacitățile unui shell alternativ pot fi de preferat. De exemplu, unul dintre membrii grupului utilizatorii Linux preferă să folosească ksh pentru că nu-i place modul în care bash creează aliasuri.

Deși majoritatea utilizatorilor preferă să lucreze într-un singur shell, abilitățile dobândite îi ajută să învețe să lucreze în altele.interpreți linie de comandă , uitându-se ocazional la manualul de ajutor (de exemplu, folosind comanda manbash). Majoritatea oamenilor folosesc bash pentru că nu există niciun motiv pentru a trece la alt interpret.

Folosind Bash și ch

Numele bash este un acronim pentru Bourne Again SHell. Această abreviere indică faptul că bash moștenește interpretul Bourneshell (comanda sh), creat de Steve Bourne de la AT&TBell Labs. Brian Fox de la Free Software Foundation a creat bash ca parte a proiectului GNU. Ulterior, dezvoltarea a trecut în mâinile lui Chet Ramey de la Case Western Reserve University.

Interpretul bash conține caracteristici care au fost dezvoltate pentru interpreții sh și ksh în versiunile timpurii ale UNIX, precum și o serie de caracteristici ale interpretului csh.

Vă puteți aștepta ca pe majoritatea sistemelor Linux, cu excepția celor specializate (de exemplu, cele care sunt încorporate sau pornite de pe o unitate externă), interpretul bash este utilizat implicit. În sistemele specializate, poate fi necesar un interpret de comandă mai mic, ceea ce implică și capacități limitate.

Majoritatea exemplelor din aceastaarticolconceput pentru utilizare în bash.

Interpretul bash poate rula în diferite moduri de compatibilitate, simulând comportamentul altor shell-uri. Poate imita comportamentul shell-ului Bourne (sh) sau al unui shell compatibil cu standardele POSK (bash -posix).

Ca rezultat, bash are mai multe șanse să poată citi cu succes fișierele de configurare și să ruleze scripturi scrise special pentru alte shell-uri.

Toate sistemele de operare Linux furnizate folosesc interpretul bash în mod implicit, cu excepția sistemelor de operare pornite de la suporturi amovibile, care utilizează implicit interpretul Ash.

Folosind tcsh (și interpretul csh anterior)

Interpretul de comandă tcsh este o implementare open source a interpretului Cshell (csh). Interpretul csh a fost creat de Bill Joy și este folosit implicit pe aproape toate sistemele Berkeley UNIX (astfel de sisteme au fost distribuite de Sun Microsystems).

Multe dintre caracteristicile csh, cum ar fi editarea liniei de comandă și metodele de gestionare a istoricului comenzilor, au fost implementate în tcsh și alte shell-uri. Așa cum comanda sh rulează interpretul bash în modul compatibil sh, comanda csh rulează interpretul tcsh în modul compatibil cu csh.

Folosind interpretul de cenușă

Interpretul Ash este o versiune ușoară a interpretului Berkeley UNIX sh. Nu conține multe funcții de bazăși nu oferă caracteristici precum istoricul comenzilor.

Interpretul de cenușă este potrivit pentru utilizarea în sisteme încorporate cu limitate resursele sistemului. ÎN sistem de operare Interpretul ash al FedoraCore 4 este cu un ordin de mărime mai mic decât interpretul bash.

Folosind zsh

Interpretul zsh este o altă clonă a interpretului sh. Îndeplinește cerințele Standardul POSIX(cum ar fi bash), dar are alte caracteristici, inclusiv verificarea ortografică și o abordare diferită a editării liniei de comandă. Interpretul zsh a fost implicit în primele sisteme de operare. sisteme MacOS X, dar în sisteme moderne Interpretul implicit este bash.

Bash este un shell de comandă sau, cu alte cuvinte, un interpret de comandă care este utilizat implicit în majoritatea distribuțiilor Linux. Shell-ul Bash are o sumă imensă oportunități. Mai mult decât un simplu interpret, în mâinile potrivite, Bash poate deveni un limbaj de programare cu drepturi depline.

Sarcina principală a shell-ului este să execute comenzi, dar pe lângă utilitățile aflate pe sistemul de fișiere, Bash are propriul set de comenzi, multe dintre care le folosești în fiecare zi fără să-ți dai seama. Aceste comenzi Bash nu sunt pe disc, ci sunt încorporate în shell-ul propriu-zis. În acest articol, ne vom uita la comenzile bash de bază în Linux care pot fi utile în unele situații.

Acest articol nu va avea o introducere foarte lungă și vom ajunge direct la subiect. Toate elementele listei sunt aranjate în ordine aleatorie. După ce le parcurgeți pe toate, veți înțelege mai bine modul de lucru în Bash.

1. sursa

Această comandă vă permite să citiți și să executați toate comenzile din fișierul specificat în fișierul curent shell de comandă. Aceasta înseamnă că toate variabilele de mediu setate în el vor fi vizibile în toate scripturile sau comenzile pe care le executați. Permiteți-mi să vă reamintesc că dacă rulați un script obișnuit și declarați o variabilă în el, atunci acesta va fi disponibil numai pentru acesta, deoarece este creată o instanță shell separată pentru scripturi. Moștenește variabilele părintelui, dar nu invers. Această comandă este adesea folosită pentru a actualiza mediul după chroot:

sursa /etc/profile

2. alias

Comanda alias vă permite să creați alias-uri pentru alte comenzi. De exemplu, îl puteți configura să ruleze sudo apt update && sudo apt upgrade atunci când introduceți update. Dacă apelați comanda fără parametri, aceasta va afișa o listă de aliasuri deja definite. Vedeți mai multe detalii despre cum să creați într-un articol separat.

3.lega

Cu această comandă puteți asocia o apăsare de tastă cu o anumită comandă sau funcție. De exemplu, să configuram comanda pwd să fie executată atunci când apăsați F12 într-o fereastră de terminal:

lega ""\e

Opțiuni

-c şir Dacă acest parametru este prezent, comanda va fi citită din linie şir. Dacă comanda transmisă are argumente suplimentare, acestea sunt considerate poziționale și încep de la $0. (Capitol Argumente )
-i Munca interactivă a interpretului
-l Urmăriți INVOCARE mai jos
-r Limitări în funcționarea carcasei. Urmărește SHELL RESTRICȚIONAT
-s Dacă acest parametru este specificat și lipsesc toate argumentele necesare, acestea sunt citite din intrarea standard
-D Lista tuturor șirurilor incluse în ghilimele duble cu $ la început sunt scoase la ieșire standard. Necesar pentru a finaliza traducerea. Nu vor fi executate comenzi
[-+]0[shopt_option]

shopt_option - opțiuni suplimentare scoici. Citiți subsecțiunea COMANDĂ ÎN SHELL BUILTIN. Dacă un parametru dat este prezent6 atunci -0 înainte de a seta parametrul specificat și +0 îl dezactivează. Dacă parametrul shopt_option nu este specificat, atunci +0 tipărește o listă de opțiuni instalate la ieșirea standard într-un format care permite reutilizare ca intrare.

-- Semnalizează sfârșitul setării parametrilor. Orice parametri după acesta sunt tratați ca nume de fișiere și argumente pentru script. Opțiunea „-” este echivalentă cu „--”.

Bash permite, de asemenea, opțiuni cu mai multe caractere. Ele trebuie descrise înaintea celor cu un singur caracter pentru a putea fi recunoscute corect.

--depanator Pornește un profil de depanare înainte de a rula scriptul. Activează modul avansat de depanare (mai multe detalii în descriere extdebug) și rulează funcția de urmărire
(vezi descrierea parametrilor -o).
--dump-po-string Echivalent cu -D, dar rezultatul este în format de fișier localizations.po
--dump-strings Complet similar cu -D
--Ajutor Cheie
--init-file fişier
--rcfile fişier Dacă interpretul este lansat în modul interactiv, acesta execută comenzile de inițializare ale fișierului specificat fişier, și nu din fișierul de inițializare standard ~/.bashrc.
--log in La fel ca -l
--noeditare
--noprofile Nu citiți fișierele de configurare la nivelul întregului sistem când porniți shell-ul interpretului /etc/profile și orice fișiere de setări locale, cum ar fi ~/.bash_profile, ~/.bash_login sau ~/.profil . În mod implicit, bash le folosește atunci când rulează în modul de conectare (mai multe detalii în parametrul INVOCATION).
--norc Nu citiți și nu executați fișierul setări personale~/.bashrc când rulează interactiv. În mod implicit, acest parametru este setat atunci când shell-ul este pornit cu comanda sh.
--posix Schimbați comportamentul implicit al lui bash atunci când întâlniți o comandă non-POSIX (pentru a asigura compatibilitatea)
--restricționat Acțiunile Shell sunt limitate (citiți mai jos despre parametrul RESTRICTED SHELL)
--verbos La fel ca -v (ieșire verbală)
--versiune Imprimați informații despre versiunea curentă a interpretului la ieșirea standard

Argumente

Dacă, după procesarea parametrilor, mai există argumente care nu sunt asociate parametrilor -c sau -s, atunci primul argument este considerat a fi numele fișierului care conține scriptul cu comenzile. $0 este numele fișierului, iar argumentele rămase sunt scrise pozițional. Bash citește comenzile scriptului, le execută și apoi iese. Starea de ieșire va fi egală cu starea de ieșire a ultimei comenzi de script executată. Dacă nu a fost executată nicio comandă, valoarea returnată va fi „0”. În primul rând, se încearcă deschiderea unui script din folderul curent, dacă acesta nu este acolo, fișierul specificat va fi căutat în funcție de variabila PATH pentru scripturi.

apel bash

log in coajă- dacă primul caracter după -- este 0 sau lansarea a fost efectuată cu parametrul -login.

interactiv coajă-muncă interactivă. Dacă este lansat fără argumente și fără parametrul -c cu dispozitivul standard de intrare/ieșire în forma terminal.app sau lansat cu parametrul -i.

Procesarea fișierelor de inițializare. Dacă oricare dintre fișierele cu parametrii de inițializare există, dar nu poate fi citit, bash pe Mac raportează o eroare.

Când bash este pornit în modul interactiv sau de conectare, comenzile din fișier sunt citite și executate mai întâi /etc/profile (dacă este disponibil), atunci se verifică prezența fișierelor ~/.bash_profile , ~/.bash_login , și ~/.profil iar dacă sunt disponibile și accesibile, atunci comenzile de la acestea sunt executate în aceeași ordine în care sunt listate. Pentru a sări peste procesarea fișierelor de mai sus, puteți utiliza parametrul --noprofile

Dacă bash a fost pornit în modul de conectare, fișierul este verificat și, dacă este prezent, executat ~/.bash_logout .

Dacă este lansat în modul interactiv, fără modul de conectare, atunci în timpul pornirii fișierul este executat suplimentar~/.bashrc . Pentru a opri a acestui dosar este utilizat parametrul --norc sau --rcfile fişier pentru înlocuire fișier executabil la altul ( fişier).

Când bash este pornit modul normal, de exemplu, pentru a executa un script, se uită la variabila de mediu globală BASH_ENV și își folosește valoarea pentru a găsi fișierul executabil.

Când bash este apelat de comandă sh el încearcă să folosească cel mai mult versiunea veche pentru a asigura compatibilitatea cu standardul POSIX. Când sunt apelate în modul interactiv sau în modul --login, fișierele sunt citite și executate mai întâi secvenţial/etc/profile Şi ~/.profil , pentru a interzice utilizarea acestor fișiere, utilizați parametrul --noprofile. De asemenea, citește interactiv valoarea variabilei ENV pentru a o folosi ca cale pentru a găsi fișierul executabil. Când rulați cu sh, opțiunea de pornire --rcfile este ignorată și nu poate fi utilizată. Când este lansat în modul standard, nu sunt utilizate fișiere de configurare, interpretul funcționează în modul POSIX.

Când bash rulează în modul posix folosind o opțiune de linie de comandă --posix interpretul va adera la standardul POSIX pentru fișierele de inițializare. În acest caz, modul interactiv folosește valoarea variabilei ENV, care trebuie să conțină numele fișierului de inițializare, nu vor fi executate alte fișiere de inițializare.