Învățarea comenzilor bash în sistemul de operare Linux. Lista recursive și informații despre inode

Bash - interpret limbajul de comandă UNIX sisteme compatibile. Execută comenzi de la intrare standard (cum ar fi o fereastră de terminal) sau dintr-un fișier. Bash include și extensii utile shell-uri ale limbajelor Korn și C (comenzile ksh și, respectiv, csh)

Sintaxă

bash [Opțiuni]

Opțiuni

-c şir Dacă acest parametru este prezent, atunci 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ă acest parametru este prezent6 atunci se setează -0 în fața lui parametrul specificat, iar +0 îl anulează. Dacă shopt_option nu este specificată, +0 tipărește o listă de opțiuni setate la ieșirea standard într-un format care poate fi reutilizat 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 profilul 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 interpretorului /etc/profile și orice fisiere locale setări precum ~/.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 setari personale~/.bashrc când rulează interactiv. În mod implicit, acest parametru este setat atunci când shell-ul este pornit cu comanda SH.
--posix Schimbarea comportamentului implicit al lui bash atunci când întâlniți o altă comandă decât Standardul 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 rezultatul 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 scriptului din folderul curent, dacă acesta nu este acolo, fișierul specificat va fi căutat variabila PATH pentru scenarii.

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 dezactiva acest fișier, utilizați parametrul --norc sau --rcfile fişier pentru a înlocui fișierul executabil cu altul ( fişier).

Când bash este pornit Mod 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 încearcă să folosească cea mai veche versiune 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 în mod interactiv valoarea variabilei ENV pentru a o utiliza 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 începe în mod standard nu sunt folosite fișiere de configurare, interpretul funcționează în modul POSIX.

Când bash rulează în modul posix folosind parametrul in Linie de comanda --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.

Bash este un shell de comandă sau, cu alte cuvinte, un interpret de comandă care este folosit implicit în majoritatea distribuții Linux. Shell-ul Bash are o mulțime de capabilităț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 în sine. În acest articol ne vom uita la comenzi de bază bash pe Linux, care poate fi util î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 aliasuri 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:

bind ""\e, ~, (, )) pentru a căuta fișiere folosind modele de nume.

  • Înlocuiește variabilele care pot fi utilizate de shell.
  • Redirecționează ieșirea unei comenzi ca intrare către o altă comandă folosind o conductă.
  • Efectuează îmbinarea comenzilor.
  • Execută comanda dacă este o comandă de interpret încorporată sau pornește un proces dacă comanda este externă.
  • Redirecționează I/O standard.
  • Pentru a completa trei ultimele caracteristici utilizare necesară operatori speciali. Să ne uităm la toate funcțiile enumerate.

    2.1. Porecle

    Aliasurile de comandă sunt concepute pentru a permite introducerea mai eficientă a comenzilor shell. Prin intermediul unui alias, o comandă de aproape orice complexitate poate fi înlocuită cu un șir arbitrar. Pentru a vizualiza lista de aliasuri și, dacă este necesar, adăugați la ea noua poreclă, ar trebui să utilizați comanda alias.

    De exemplu:

    $ export HELLO="Bună ziua din mediu! " # spațiul trebuie să fie eliminat cu ghilimele

    variabile de mediu

    Un mediu este un set de variabile ale căror valori pot schimba comportamentul shell-ului.

    Când shell-ul începe să ruleze, setează mai multe variabile de mediu pentru sine. Numele lor sunt standard. Programele și scripturile își pot cere valorile în loc să încerce să descopere singure informațiile de care au nevoie.

    În acest fel, interpretul de comenzi determină variabilele de mediu care sunt utilizate în sesiunea curentă. Fiecare comandă nouă introdusă este de fapt lansată ca un proces copil al procesului părinte, astfel încât, în în acest caz, Este folosit interpretul de comenzi bash. Variabilele de mediu diferă de variabilele obișnuite prin faptul că sunt accesibile atât pentru procesele părinte, cât și pentru cele secundare. Detectarea automată a variabilelor de mediu are loc după autentificarea utilizatorului în sistem. Programul de autentificare, dacă procesul de autentificare este finalizat cu succes, determină, pe baza fișierului /etc/passwd, ce interpret de comandă va fi folosit în sesiunea utilizatorului. După definirea interpret de comenzi Sesiunea este configurată conform fișierelor de configurare prezentate mai jos.

    Fișier de configurareDescriere
    /etc/profile

    Definește variabilele de mediu pentru toți utilizatorii din sistem. Acest fișier este executat la prima conectare și conține variabile de mediu de bază, cum ar fi variabila de căutare a locației comenzii PATH, variabila nume gazdă HOSTNAME și variabila dimensiune istoric comenzi HISTSIZE. În plus, acest fișier generează variabile de mediu suplimentare din fișierele de configurare situate în directorul /etc/profile.d.

    /etc/bashrc

    Execut pentru toți utilizatorii, de fiecare dată când comanda este lansată bash interpret. ÎN acest fișier Se determină valoarea variabilei PS1, precum și aliasuri de comandă suplimentare (alias). Un alias este un nume scurtat, definit arbitrar, al unei comenzi sau al unei secvențe de comenzi care vă permite să executați secvențe complexe de comenzi fără a le introduce de la tastatură, ci prin apelarea lor prin apelarea aliasului corespunzător. Variabilele definite în acest fișier pot fi reatribuite printr-un fișier similar definit de utilizator -/.bashrc, care are prioritate mai mare.

    -/.bashprofile

    Folosit ca fișier care conține setări individuale utilizator. Se execută o singură dată când utilizatorul se conectează. În plus, acest fișier rulează fișierul -/.bashrc

    ~/.bashrc

    Acest fișier conține variabile de mediu și aliasuri setate de utilizator. Se execută de fiecare dată când utilizatorul se conectează sau când este deschisă o nouă sesiune bash. Acest fișier este cel mai potrivit pentru definirea variabilelor utilizatorului și a aliasurilor.

    ~/.bash_logout

    Acest fișier este executat de fiecare dată când vă deconectați sau încheiați ultima sesiune a interpretului bash. În mod implicit, acest fișier conține o comandă pentru a șterge ecranul terminalului.

    /etc/inputrc

    Acest fișier conține o descriere a interpretării diferitelor combinații de taste și, de asemenea, conține combinații speciale de taste, apăsarea care determină executarea comenzilor specificate.

    Variabilele de mediu sunt destul de bune mod convenabil stocarea informațiilor care sunt utilizate frecvent în cadrul sesiunii curente de lucru cu sistemul. Dacă este necesar, utilizatorul poate crea aproape orice variabile de mediu (încercați să nu modificați valorile variabilelor de mediu deja utilizate) și să le citească valorile pe tot parcursul timpului în care lucrează cu shell-ul de comandă. Pentru a crea o variabilă de mediu temporară, trebuie să introduceți numele acesteia și să îi atribuiți valoarea corespunzătoare. De exemplu,

    export AB=/usr/dog/contagious/ringbearer/grind

    ÎN în acest exemplu Variabilei de mediu temporare AB i se atribuie calea către un director situat destul de „adânc” în ierarhia directoarelor sistemului de fișiere. Comanda de export indică necesitatea de a exporta valoarea variabilei AB într-un shell pentru a o face disponibilă altor shell-uri care pot fi deschise în cadrul sesiunii curente cu sistemul. Acum se poate ajunge la directorul de mai sus executând comanda cd $AB

    Singurul dezavantaj al variabilelor de mediu temporare este că acestea sunt distruse automat când se termină sesiunea curentă cu sistemul. Pentru a crea o variabilă de mediu permanentă (spre deosebire de temporară), aceasta trebuie adăugată la fișierul de configurare shell.bashrc.

    Pentru a modifica fișierele de configurare /etc/profile și /etc/bashrc, trebuie să fiți root.

    Utilizatorii obișnuiți pot modifica fișierele de configurare ~/.bash_profile, ~/.bashrc și ~/.bash_Iogout aflate în directoarele lor de acasă. Aceste fișiere de configurare pot fi configurate pentru a seta variabilele de mediu folosind comanda de export și pot fi utilizate în orice sesiune.

    Una dintre variabilele de mediu modificate cel mai frecvent este variabila PATH. De asemenea, puteți suprascrie sau extinde variabila de mediu PATH în fișierul de configurare ~/.bashrc.

    în acest exemplu, variabila PATH va conține valoarea curentă plus directorul principal ca cale de căutare pentru fișierele executabile.

    Pentru ca aceste modificări să fie aplicate în mediul shell-ului curent, trebuie să rulați sursa comenzii .bashrc

    Cele mai comune variabile de mediu shell sunt:

    • BASH - Conține calea completă către comanda bash (de obicei /bin/bash).
    • BASH_VERSION - Numărul versiunii Bash.
    • DIRSTACK - O matrice care conține valoarea curentă a stivei de director.
    • EDITOR- editor de text Mod implicit.
    • EUID - Identificator efectiv numeric utilizator curent.
    • FUNCNAME - nume functia curentaîn scenariu.
    • GROUPS - O matrice care conține o listă de grupuri din care aparține utilizatorul curent.
    • HISTFILE - Locația fișierului istoric comenzi. De obicei, istoricul comenzilor este stocat în fișierul ~/.bash_history.
    • HISTFILESIZE - Numărul de linii de comandă care pot fi stocate în fișierul istoric. După atingerea acestui număr, noile linii de comandă sunt introduse în istoric prin ștergerea celor mai vechi linii de comandă. În mod implicit, dimensiunea listei de comenzi utilizate recent este de 1000 de linii.
    • HOME - Directorul principal al utilizatorului.
    • HOSTNAME - Numele acestui computer (nod).
    • HOSTTYPE - Tip computer.
    • LANG - Limba curentă implicită.
    • LC_CTYPE este o variabilă internă care determină codificarea caracterelor.
    • MAIL - Locațiile fișierelor cutiei poștale E-mail utilizator. De obicei, acesta este un fișier situat în directorul /var/spool/mail al cărui nume este același cu numele de conectare al utilizatorului.
    • MAILCHECK - Interval în minute între verificările prin poștă.
    • OLDPWD - Directorul care a fost curent până când directorul a fost modificat ultima dată.
    • OSTYPE - Sistemul de operare actual.
    • PATH - O listă de directoare separate prin două puncte în care să căutați fișiere executabile. Ordinea în care sunt căutate numele de directoare este extrem de importantă. La executarea comenzilor, directoarele listate în această variabilă sunt verificate secvenţial de la stânga la dreapta. Astfel, la executarea comenzii foo aflată în directoarele /bin și /usr/bin, se va executa comanda situată în directorul /bin. Pentru a rula comanda foo situată în directorul /usr/bin într-o situație similară, trebuie fie să specificați calea completă către această comandă, fie să modificați ordinea numelor de director în variabila de mediu PATH. Directorul de căutare curent trebuie specificat în mod explicit ("."); shell-ul nu caută în mod implicit directorul curent. Căutarea programelor de pornire în directorul curent este potențial periculoasă din cauza posibilității de execuție neintenționată program periculos, astfel încât variabila PATH este de obicei inițializată fără „." Pentru a adăuga calea propriilor comenzi sau script-uri shell la variabila PATH, ar trebui să le plasați în subdirectorul /bin al directorului dvs. principal, care va fi adăugat automat la variabila PATH. Nu toate comenzile executabile sunt localizate în directoarele listate în variabila de mediu PATH. Unele comenzi sunt construite direct în shell. Alte comenzi pot fi redefinite folosind aliasuri, permițând înlocuirea comenzilor cu parametri de aproape orice complexitate (în termeni de sintaxă) cu un singur nume simplu. În plus, este posibil să se creeze funcții care stochează o întreagă secvență de comenzi.
    • PPID - Numărul de identificare al procesului corespunzător comenzii care a lansat shell-ul curent (de exemplu, procesul care a creat shell-ul).
    • PS1, PS2, PS3, PS4 - Variabile care determină tipul de prompt shell.

      Variabilele PS1 și PS2 setează prompturile primare și secundare ale shell-ului.

      Apare un prompt secundar (PS2) dacă apăsați tasta Enter fără a termina sintactic introducerea unei comenzi.

      Această variabilă conține o solicitare minoră care apare la editarea textului pe mai multe linii sau la introducerea incompletă a comenzii. În mod implicit, este notat ca >.

      PS3. Această variabilă conține promptul care este prezent în instrucțiunea select utilizată pentru a organiza meniurile interactive ale consolei. În mod implicit, promptul PS3 din instrucțiunea select este #?.

      PS4. Această variabilă este utilizată în principal la depanarea scripturilor shell și, implicit, conține valoare șir «++».

      De exemplu, rulați comanda pentru a obține informații DNS:

      # nslookup >

    • PWD - Directorul de lucru curent al utilizatorului. Această valoare se schimbă de fiecare dată când treceți la un alt director folosind comanda cd.
    • SECOND - durata de rulare a scriptului (în secunde).
    • SHELL - interpret de comandă curentă.
    • SHELLOPTS - Listă de opțiuni de interpret activate.
    • SHLVL - De câte ori sunt lansate copii noi ale interpretorului de comenzi.
    • UID - Identificatorul numeric al utilizatorului curent.
    • UTILIZATOR - Nume de utilizator curent.
    • $# - Numărul total de parametri trecuți scriptului.
    • $* - Toate argumentele nu sunt transmise scriptului (ieșire pe o linie).
    • $@ - La fel ca și precedentul, dar parametrii sunt afișați într-o coloană.
    • $! - PID-ul ultimului proces care rulează în fundal.
    • $$ - PID al scriptului în sine.

    Pentru a vizualiza valorile tuturor variabilelor din sesiunea curentă, atât cele pe care le definiți, cât și cele din mediu, lansați comanda set fără parametri sau env printenv.

    Puteți elimina o variabilă cu comanda unset.

    2.4. Înlocuiri și organizare a interacțiunii dintre comenzi

    Înlocuirea valorilor variabilelor de mediu sesiunea curentă cu sistemul poate fi realizată folosind metacaracterul semnul dolarului ($). Ca rezultat, shell-ul înlocuiește automat numele variabilei cu valoarea acesteia. De exemplu,

    Înlocuirea rezultatului unei expresii aritmetice

    Există două forme sintactice pentru înlocuirea rezultatului unei expresii aritmetice: $[expresie] și $((expresie)). De exemplu,

    echo "Am $ ani."

    Înlocuirea comenzii

    Înlocuirea comenzii vă permite să utilizați rezultatul unei comenzi pe o linie de comandă care conține o altă comandă. Pot fi utilizate două formate alternative de înlocuire: $(comandă) sau `command` (ghilimele simple). De exemplu,

    Extinderea caracterului tilde

    Caracterul tilde (~) vă permite să introduceți rapid nume de directoare.

    ~ Numele directorului principal al utilizatorului ~/subdirector Numele unuia dintre subdirectoarele din directorul principal al utilizatorului ~+ Numele directorului curent ~- Numele directorului anterior

    Acolade extensibile

    Folosind acolade, puteți introduce o comandă în loc de mai multe de același tip. Parantezele trebuie să conțină o listă ale cărei elemente trebuie separate prin virgule. Interpretul citește elementele unul câte unul și formează o comandă separată cu fiecare dintre ele, pe care apoi o execută. De exemplu, comanda

    cheltuieli mkdir/(Jan,Feb,Mar) este echivalent cu mkdir cheltuieli/Jan mkdir expenses/Feb mkdir expenses/Mar

    Canale

    Metacaracterul canalului (|) indică necesitatea de a organiza interacțiunea dintre comenzi folosind rezultatul executării (ieșirii) unei alte comenzi ca date de intrare (intrare) a unei comenzi. Cu alte cuvinte, folosind o conductă (pipeline), rezultatele primei comenzi pot fi transmise ca intrare la a doua comandă. De exemplu,

    cat /etc/passwd | sortare | cap -3

    Secvențe și grupuri de comenzi

    Utilizarea secvențelor și grupurilor de comenzi vă permite să introduceți mai multe comenzi pe o singură linie.

    comanda1;comandă2 Mai întâi executați comanda 1, apoi comanda 2 (comandă1;comandă2) Rulați copie separată interpret în care să se execute secvențial comenzile 1 și 2 ( comandă1;comandă2 ) Execută secvențial comenzile 1 și 2 în interpretul curent comandă1 && comandă2 Execută comanda 2 numai dacă comanda 1 este executată cu succes comandă1 || command2 Executați comanda 2 numai dacă comanda 1 eșuează

    Rezultatul oricărei execuții de comandă (adică rezultatul încheierii procesului corespunzător) este codul de ieșire. Finalizarea cu succes are codul 0, codul de completare nereușită 1. Valoarea codului de finalizare este atribuită unei variabile predefinite? (semnul întrebării). De exemplu, echo $?

    Re-executarea comenzilor

    Shell-ul are facilități care vă permit să amintiți comenzile anterioare și să le editați. Istoricul comenzilor Shell este o listă de comenzi utilizate anterior. Această listă poate fi vizualizată folosind comanda history.

    După ce introduceți o linie de comandă, shell-ul o plasează în istoricul comenzilor. O listă de comenzi utilizate anterior este stocată într-un fișier, ceea ce vă permite să apelați orice linie de comandă dorită din acesta în orice moment pentru reexecuție. După ce apelați din nou linia de comandă, aceasta poate fi editată. Istoricul comenzilor este stocat în fișierul .bash_history, care se află în directorul principal al utilizatorului. În mod implicit, shell-ul de comandă poate „memora” până la 1000 de linii de comandă.

    Pentru a vizualiza o listă de comenzi utilizate anterior, executați comanda history. Poate fi folosit fie fără parametri, fie cu un parametru care vă permite să specificați numărul de comenzi care urmează să fie afișate. Fiecare linie de comandă are propriul său număr în istoricul comenzilor.

    Sintaxa de extindere a istoricului: !n Executați numărul de comandă dat!! Execut comanda anterioară!string Execută cea mai recentă comandă începând cu şirul dat!?string? Executați cea mai recentă comandă care conține șirul dat

    În loc să executați direct linia de comandă conținută în istoricul comenzilor, o puteți apela pentru editare ulterioară. Utilizați tastele cursor „săgeată sus” și „săgeată în jos” Pentru vizualizare pas cu pas istoricul comenzilor și selectând linia de comandă necesară.

    3. Bash încorporate

    O listă de prelucrări încorporate pentru bash shell poate fi obținută utilizând comanda de ajutor sau găsită pe pagina de manual din secțiunea COMANDĂ INTEGRATE SHELL.

    Iată câteva comenzi încorporate utile:

    • echo [argumente] - Imprimă argumentele pe ecran.
    • enable - Determină ca shell-ul să execute un fișier executabil cu același nume în loc de o comandă încorporată. Util dacă aveți propriul script numit ca echo.
    • eval [argumente] - Construiește o comandă din zbor din argumentele specificate și o trimite spre execuție.
    • let - Evaluează expresii.
    • - Citiți și executați comenzile conținute în fișier. Folosit pentru a defini variabilele utilizatorului. si functii.
    • basename - Evidențiați un nume local.
    • expr - Evaluarea expresiei.
    • read - Introduceți valoarea unei variabile.
    • shift - Schimbă lista de parametri.
    • test - Testează starea.
    Alte comenzi încorporate servesc ca instrucțiuni în limbajul de comandă bash.

    Institutul de Stat de Tehnologie Electronică din Moscova

    (Universitate tehnica)

    Departamentul de Electronică Integrată și Microsisteme

    PRACTICUM DE LABORATOR

    PE CURS:

    SISTEM DE OPERARELINUX

    Alcătuit de: asistent departament. IEMS Kozlov A.V.

    Moscova, 2007

    Atelierul de laborator este destinat în primul rând maeștrilor de inginerie și tehnologie care studiază în primul an programul Synopsys în direcția 210100.68, pentru a stăpâni sistemul de operare Red Hat Enterprise Linux (RHEL) 4.0. Este, de asemenea, conceput pentru studenții FreeScale și toți utilizatorii cu experiență de nivel de intrare sau fără experiență Linux care doresc să învețe mediu de echipă Linux și principalele sale aplicații de care utilizatorul le solicită atunci când lucrează cu sisteme de proiectare asistată de computer.

    Acest atelier este format din opt lucrări de laborator care permit utilizatorului să stăpânească eficient comenzile interpretului de comenzi, precum și să învețe treptat să scrie fișiere - scripturi Shell, Gawk, Perl și Tcl. Fiecare lucrare de laborator include următoarele secțiuni: titlul, sarcina și scopul lucrării; informatii teoretice cu intrebari test; exemplu de lucru de laborator; procedura de efectuare a lucrărilor de laborator; formularul de sarcină de laborator și raport de lucru. Sintaxa pentru scrierea comenzilor în shell, împreună cu opțiunile, parametrii, acțiunile, expresiile și căile obiectelor, este proiectată pentru mediul de comandă BASH. O listă de referințe este furnizată la sfârșitul atelierului de laborator.

    INSTITUTUL DE STAT DE INGINERIE ELECTRONICĂ MOSCOVA (UNIVERSITATEA TEHNICĂ)

    LUCRARE DE LABORATOR Nr 1

    LA CURSUL „SISTEM DE OPERARE LINUX”

    Învățarea comenzilor bash pe Linux

    DESCRIERE COMPLETATĂ:

    KOZLOV A.V.

    MOSCOVA 2007

    Lucrare de laborator nr. 1 Studierea comenzilor bash pe Linux

    Scopul lucrării : folosind interpretul de comenzi BASH, stăpâniți abilitățile de lucru cu comenzi în sistemul de operare Red Hat Enterprise Linux 4.0.

    Durata muncii - 4 ore

    Informații teoretice

    sistem de operare Linux a fost dezvoltat inițial ca o platformă gratuită, flexibilă, bogată în funcții, multi-utilizator și de înaltă performanță, concepută pentru a servi și rezolva problemele oamenilor de știință din întreaga lume. Datorită „accentului științific”, o astfel de platformă nu avea inițial o interfață grafică extinsă, care este utilizată pe scară largă la rezolvarea problemelor de acasă - jocuri pe computer, internet, programe interactive pentru conectarea utilizatorilor, precum și la rezolvarea problemelor de birou - lucru cu sisteme de baze de date, grafice și histograme. Adesea, munca oamenilor de știință cu sistemul de operare Linux a fost redusă pur și simplu la interacțiunea obișnuită a utilizatorului (o persoană care lucrează pe un computer) cu consola (o fereastră de terminal pe ecranul monitorului cu informații text). Pentru a înțelege comenzile introduse de utilizator în Linux, au fost dezvoltați interpreți de comenzi, care sunt traducători de comenzi pe înțelesul oamenilor în semnale de control, pe care nucleul sistemului de operare poate fi înțeles. Sarcina principală a sistemului de operare este de a media transmiterea comenzilor de la o persoană la un computer. Și, în ciuda faptului că astăzi sistemul de operare Linux este folosit peste tot nu numai în institute, centre de proiectare, centre de calcul, ci și în scopuri casnice și de birou, consolele (ferestrele terminalelor) sunt încă utilizate pe scară largă și multora li se par chiar mai mult. convenabil în comparație cu lucrul cu mouse-ul și pictogramele (pictograme în Linux) într-un mediu grafic.

    Interpret de comandă este o interfață interactivă șir cu un prompt de linie de comandă între utilizator și sistemul de operare. Utilizatorul introduce comenzi pe linia de comandă, interpretul de comenzi le „acceptă” și le trimite ca instrucțiuni către sistem de operare pentru executare. Interpretul de comenzi vă permite nu numai să introduceți comenzi, ci și să redirecționați intrarea și ieșirea liniei de comandă și să efectuați operații în fundal, permițând utilizatorului să facă și alte sarcini în același timp.

    Multe interprete de comandă au fost dezvoltate pentru Linux: Bourne Again shell (BASH), Public Domain shell (PDKSH), interpret TCSH și Z-shell. Deși BASH este interpretul implicit, puteți utiliza orice alt mediu. Pentru confortul muncii de zi cu zi, este suficient un singur interpret de comandă. Red Hal Linux include toate shell-urile majore, dar shell-ul BASH este instalat și utilizat implicit. Aceasta înseamnă că acest sistem de operare folosește BASH pentru a lucra la linia de comandă, dacă nu se specifică altfel.

    Linie de comanda. Interfața liniei de comandă Linux constă dintr-o singură linie în care sunt introduse comenzi cu opțiuni și parametri. În shell-ul BASH, începutul liniei de comandă este de obicei marcat invitație sub forma unui semn dolar ($); Alte shell-uri Linux pot folosi o formă diferită de prompt. Odată solicitat, utilizatorul poate introduce fie o singură comandă, fie o comandă cu opțiuni și parametri. Dacă utilizatorul nu are suficientă dimensiune pentru promptul de comandă, atunci este posibil să-l limiteze cu caracterul „/”. Comanda se introduce de la tastatură și se introduce folosind tasta. De exemplu, la ieșire data sistemuluiși ora de sistem la care utilizatorul poate folosi comanda Data .

    $date

    Vineri 8 iunie 15:42:35 MSD 2007

    Sau, de exemplu, pentru a afișa un calendar cu luna curentă, utilizați comanda cal.

    $cal

    iulie 2007

    Su Lu Tu Mi Jo Pr Sa

    1 2 3 4 5 6 7

    8 9 10 11 12 13 14

    15 16 17 18 19 20 21

    22 23 24 25 26 27 28

    29 30 31

    Interfața principală de shell este o interfață de linie de comandă care interpretează comenzile introduse și le trimite către sistem. Comenzile introduse la linia de comandă trebuie să respecte anumite reguli de sintaxă. Regula generală pentru introducerea comenzilor este: primul cuvânt introdus pe linia de comandă trebuie să fie numele comenzii; Următoarele cuvinte sunt opțiunile și parametrii de comandă. Fiecare cuvânt din linia de comandă este separat de alte cuvinte prin unul sau mai multe spații sau file.

    Opțiune - este un cod cu o singură literă sau cu mai multe litere precedat de o cratimă care modifică tipul de acțiune efectuată de comandă. Ca exemplu de comandă cu opțiuni, dăm comanda ls . Când este utilizată fără opțiuni, această comandă produce o listă a tuturor fișierelor și directoarelor conținute în directorul curent. În afară de numele fișierelor cu și fără extensii, nu există nimic altceva în această listă. De exemplu, când introduceți comanda ls cu optiune - l echipă ls produce informații rând cu linie pentru fiecare fișier, și anume dimensiunea, data și ora ultimei modificări. În exemplul următor, utilizatorul introduce comanda ls cu optiune - l. Este necesară o cratimă înaintea unei opțiuni. Acesta este modul în care sistemul Linux distinge o opțiune de un parametru.

    $ ls -l

    total 28

    Opțiunea -a vă permite să afișați toate fișierele din directorul curent, inclusiv așa-numitul fișiere ascunse. Fișierele de configurare sunt adesea ascunse. Numele de fișiere ascunse încep întotdeauna cu un punct, motiv pentru care sunt adesea numite cioplitfișiere.În cele mai multe cazuri, opțiunile sunt combinate. În acest caz, o cratimă comună este plasată înaintea grupului de opțiuni. De exemplu, opțiunea -al afișează informații despre toate fișierele conținute în directorul curent, inclusiv fișierele ascunse. Este afișat noul fișier ttt.

    $ ls -al

    total 40

    Parametru este cuvântul care este introdus pe linia de comandă după opțiuni. Comenzile de gestionare a fișierelor folosesc de obicei numele fișierelor ca parametri. De exemplu, dacă aveți nevoie doar de informații despre un fișier, gauss.plx, specificați numele acestuia după opțiunea -l:

    $ ls -l gauss.plx

    Lucrarea utilizatorului începe în mediul shell BASH, care este încărcat implicit. Are capabilități speciale de editare a liniei de comandă care pot fi foarte utile atunci când învățați sistemul de operare Linux. Înainte de a executa comenzi, le puteți edita deplasând cursorul pe linia de comandă și inserând sau ștergând caractere. Acest lucru este util în special atunci când lucrați cu echipe foarte complexe. Operațiile de editare vor ajuta la corectarea unei erori la tastarea unei comenzi. Folosind |sus| Puteți afișa comanda pe care tocmai ați executat-o. Apoi puteți rula comanda din nou sau, după ce o editați, executați comanda modificată. Această caracteristică este foarte convenabilă atunci când repetați anumite operații de mai multe ori, de exemplu, atunci când editați una și acelasi fisier.

    Scopul interpretorului de comenzi este de a lucra cu fișiere: crearea, copierea, redenumirea, mutarea, ștergerea și modificarea datelor. Chiar dacă utilizatorul nu lucrează direct cu consola, ci folosește aplicații grafice, aceste operațiuni cu fișiere au loc independent de el.

    Crearea de fișiere și directoare. În Linux, fișierul și directorul sunt două tipuri de date, așa că sunt create folosind comenzi diferite. Pentru a crea un director (director, folder), utilizați comanda rezervată în Linux mkdir („make directory” - creați un director). În exemplul următor, vom crea un director nou în directorul curent. Pentru a face acest lucru, utilizați comanda mkdir și numele directorului new, separate printr-un spațiu.

    $ mkdir nou

    Directorul a fost creat. Cu toate acestea, uneori trebuie să creați o întreagă structură imbricată, când în interiorul unui folder deja creat ar trebui să existe altul, iar în interiorul acestuia altul și așa mai departe. În aceste scopuri, opțiunea de atașare –p este utilizată ca parte a comenzii mkdir. Următorul exemplu folosește o comandă pentru a crea subfoldere: primul folder 1, în interiorul său folderul 2 și în interiorul acestuia folderul 3.

    $ mkdir -p 1/2/3

    Puteți crea fișiere folosind comenzi sau utilizând editoare de text Linux încorporate și externe, cum ar fi kedit, nedit, gedit și așa mai departe. Cu toate acestea, editorii enumerați necesită funcționarea unui shell grafic, ceea ce înseamnă funcționarea sistemului grafic. Dacă nu îl aveți, puteți, de exemplu, să utilizați un editor de text VIM sau analogi care nu necesită funcționarea sistemului grafic. De asemenea, puteți crea fișiere folosind manageri de fișiere text, cum ar fi Midnight Commander (comandă mc). Utilizatorul (designerul) are adesea nevoie fișiere text a pastra informații text, care însoțește procesul de calcul al unui circuit integrat sau, de exemplu, a parametrilor electrici ai unui dispozitiv semiconductor simulat. De asemenea, este necesară procesarea (ștergerea, adăugarea, sortarea, împărțirea) datelor primite. Astfel de acțiuni sunt efectuate și folosind comenzi Linux. Una dintre cele mai simple comenzi pentru crearea unui fișier text este comanda pisică.

    Comanda cat nu are interfata proprie, asa ca dupa ce ati introdus comanda cat cu un simbol de redirectionare (vezi mai jos) si numele noului fisier, puteti scrie imediat informatii text deplasand de la linie la rand folosind tasta Enter. Ieșirea din editorul de pisici (filtru) se face folosind combinația de taste Ctrl-D. Mai jos este un exemplu de creare a unui fișier folosind comanda cat.

    $ pisică > nou _ fişier

    Fișierul rezultat este vizualizat folosind comanda cat și numele fișierului separate printr-un spațiu.

    $ pisică nou _ fişier

    Sau, de exemplu, salvarea informațiilor text din consolă atunci când se execută comanda ls cu opțiunea -a pentru fișierul r, puteți utiliza funcția de redirecționare a datelor (vezi mai jos) și comanda tricou cu opțiunea -a.

    $ ls -l | tee-a r

    Copierea fișierelor și directoarelor. Copierea fișierelor și directoarelor se realizează cu ajutorul comenzii cp, după care obiectul de copiere este indicat cu căi relative sau absolute, separate printr-un spațiu, și noua destinație a copiei acestui obiect, separată printr-un spațiu. Următorul exemplu copiază fișierul gauss.plx din directorul curent în subdirectorul 1, care se află în directorul curent.

    $ cp gauss . plx 1

    Dacă aveți drepturi de acces la obiectele Linux (lucrul de laborator nr. 2), puteți copia acest fișier și către utilizatorul Alex, al cărui director de lucru are următoarea cale absolută /home/alex, folosind următoarea comandă.

    $ cp gauss . plx / Acasă / alex

    Dacă un fișier cu același nume există deja la destinație atunci când copiați un fișier, acesta va fi suprascris. Acest lucru poate duce la pierderea datelor necesare. Pentru a evita acest lucru, utilizați comanda cp cu opțiunea –i, iar Linux va întreba utilizatorul de fiecare dată dacă dorește cu adevărat să suprascrie fișierul. Noul fel Ultima comandă arată așa.

    $ cp -i gauss.plx /home/alex

    Directoarele sunt copiate în același mod ca și fișierele. Cu toate acestea, atunci când copiați directoare cu fișiere și subdirectoare, opțiunea –R este utilizată ca parte a comenzii cp. Fiind în directorul /home/antonk/111, copiați directorul laba2 la un nivel superior, adică. în directorul /home/antonk. Două puncte indică un nivel de ierarhie cu un pas mai sus.

    $ cp - R laba 2 ..

    Redenumirea și mutarea fișierelor și directoarelor. Redenumirea fișierelor și directoarelor se realizează cu ajutorul comenzii mv, după care se indică obiectul care trebuie redenumit, separat printr-un spațiu, și noul nume al obiectului, separat printr-un spațiu. Redenumirea directoarelor are loc în același mod ca și fișierele. Să redenumim fișierul gauss.plx într-un fișier nou numit gauss2.plx. Dacă un fișier cu același nume cu noul nume al fișierului redenumit există deja în acest director, acesta va fi suprascris cu conținutul fișierului redenumit. Pentru a preveni acest lucru, utilizați și opțiunea –i. Apropo, pe Linux nu este necesară utilizarea extensiilor. Sunt folosite numai pentru asocierea fișierelor și programe executabile.

    $ mv –i gauss.plx gauss2.plx

    Ștergerea fișierelor și directoarelor. Eliminarea fișierelor și directoarelor în Linux se face cu ajutorul comenzii rm, unde sunt indicate numele fișierelor de șterse, separate printr-un spațiu. !!! Aveți grijă când lucrați cu această comandă, puteți șterge datele necesare. Similar cu comanda cp, utilizați opțiunea –i împreună cu comanda rm. O comandă cu această opțiune va cere confirmarea pentru ștergerea fiecărui fișier și director. În exemplul următor vom șterge fișierul gauss 2. plx , solicitând confirmarea ștergerii .

    rm –i gauss2.plx

    Wildcards. Uneori, atunci când lucrați cu interpretul de comenzi, trebuie să găsiți sau să potriviți fișiere folosind un model. De exemplu, cunoașteți doar prima literă a unui nume de fișier și doriți să găsiți toate fișierele din directorul de lucru care încep cu acea literă. Sau cunoașteți succesiunea mai multor litere din numele sau extensia unui fișier și trebuie să o găsiți printre alte câteva sute de fișiere. În acest caz, trebuie să utilizați caractere speciale Linux. Interpretul de comenzi folosește o serie caractere speciale, numite metacaractere, care pot fi folosite pentru a căuta fișiere, pentru a le potrivi și pentru a crea o listă de nume de fișiere. Aceste caractere sunt asteriscul, semnul de întrebare și parantezele pătrate (*, ?, ). După ce a primit un nume de fișier parțial, interpretul de comenzi folosește aceste caractere ca șablon pentru a căuta și a genera o listă de nume de fișiere detectate. Un parametru cu un nume de fișier necalificat este înlocuit cu o listă de nume de fișiere care se potrivesc. Această listă de nume poate fi folosită ca parametru în comenzile care operează pe mai multe fișiere (de exemplu, ls). Caracterele joker ale interpretului de comenzi sunt listate în tabel. 1.

    Tabelul 1. Caractere speciale Shell

    Simboluri comune

    Scop

    Separarea comenzilor pe o singură linie de comandă

    "echipă"

    Executarea unei comenzi

    Comparație cu clasa de caractere posibile din numele fișierelor

    Desemnează următorul personaj ca special. Folosit pentru a indica caracterele de control

    Canalizarea ieșirii standard a unei comenzi ca intrare pentru o altă comandă

    Rularea unei comenzi în fundal

    Comandă pentru lucrul cu o listă de comenzi introduse anterior

    Wildcards

    Rezultatul aplicarii

    Se potrivește cu orice set de caractere din numele fișierelor

    Se potrivește cu orice caracter în numele fișierelor

    Simboluri de redirecționare

    Rezultatul aplicarii

    Redirecționează ieșirea standard către un fișier sau dispozitiv. În acest caz, dacă fișierul nu există, acesta este creat, dar dacă fișierul există, acesta este suprascris

    Semnul exclamării face ca fișierul să fie suprascris dacă acesta există. Acest simbol suprascrie opțiunea care împiedică suprascrierea fișierelor existente

    Redirecționează intrarea standard de la un fișier sau dispozitiv către un program

    Redirecționează ieșirea standard către un fișier sau dispozitiv, adăugând rezultatul la sfârșitul fișierului

    Simboluri de redirecționare

    Rezultatul aplicării mesajului de eroare standard

    Redirecționează și adaugă rezultatul de eroare standard la un fișier sau dispozitiv

    Redirecționează ieșirea de eroare standard către intrarea standard

    Redirecționează rezultatul erorii standard către un fișier sau dispozitiv

    Transmite ieșirea erorii standard către intrarea unei alte comenzi

    De exemplu, caracterul asterisc (*) poate fi folosit pentru a se referi la fișiere ale căror nume încep sau se termină cu o combinație specifică de caractere. Exemplul arată cum să utilizați caracterul asterisc (*) în orice combinație de caractere.

    $ls

    docl doc2 document documente mydoc luni marți

    Afișată o listă completă de fișiere din directorul de lucru.

    $ ls doc*

    docl doc2 document docs

    Acest exemplu a arătat cum am folosit caracterul asterisc pentru a „filtra” numele fișierelor care nu încep cu combinația de litere „doc”. Sunt afișate numai numele fișierelor care conțin combinația „doc”. În acest caz, fișierele rămase nu sunt șterse, pur și simplu nu sunt afișate utilizatorului.

    $ ls *zi

    luni t marti

    Aici am afișat numele fișierelor care se termină cu combinația „zi”.

    $ ls [ mt ] * d *

    luni marţi

    Și aici am afișat numele fișierelor al căror prim caracter este litera „m” sau „t”, caracterele ulterioare sunt arbitrare, apoi litera „d” și din nou caractere arbitrare.

    Fiți atenți când utilizați un asterisc cu comanda rm - poate duce la pierderea datelor dvs. Următoarea comandă șterge tot conținutul folderului curent.

    rm *

    $ ls *zi

    docl doc2 docs

    Semnul întrebării (?) indică un singur caracter nespecificat în numele fișierelor.

    După ce citiți acest articol, veți afla despre ce este vorba bash(interpret standard de comenzi Linux), aflați cum să utilizați comenzile standard: ls, cp, mv...înțelegeți scopul inodurilor, legăturilor tari și simbolice și multe altele.

    Acest tutorial este destinat celor care cunosc Linux și celor care doresc să revizuiască sau să își îmbunătățească înțelegerea principiilor de bază Linux, cum ar fi copierea și mutarea fișierelor, crearea de link-uri, utilizarea comenzilor Linux standard împreună cu redirecționări și conducte. În acest articol veți găsi multe exemple care explică materialul prezentat. Pentru începători, majoritatea informațiilor vor fi noi, dar pentru utilizatorii mai avansați acest material poate fi un instrument excelent pentru a rezuma cunoștințele și abilitățile existente.

    Introducere în bash

    Coajă

    Dacă utilizați Linux, atunci știți că, după conectare, sunteți întâmpinat de un prompt de interpret de comandă. De exemplu aceasta:

    \$

    Dacă după logare se încarcă înveliș grafic, apoi pentru a ajunge la interpretul de comenzi trebuie să lansați un emulator de terminal (gnome-terminal, xfce4-terminal, konsole, xterm, rxvt...) sau să comutați la unul dintre terminalele virtuale făcând clic CtrlAltF1 sau CtrlAltF2 etc.

    Promptul shell-ului de pe computer poate diferi de ceea ce este arătat în exemplu. Poate conține numele de utilizator, numele computerului și numele directorului de lucru curent. Dar, în ciuda tuturor acestor diferențe, programul care tipărește această invitație se numește „ coajă„(shell), și cel mai probabil shell-ul de comandă este un program numit bash.

    Te duci bash?

    Puteți verifica dacă bash rulează cu următoarea comandă:

    \$ ecou \$SHELL/bin/bash

    Dacă, ca urmare a executării acestei comenzi, primiți o eroare sau ieșirea acesteia diferă de cea din exemplu, atunci este posibil ca sistemul dumneavoastră să nu folosească bash ca shell de comandă. În ciuda acestui fapt, majoritatea materialului va fi relevant, dar vă recomandăm totuși să treceți la bash. Acest lucru se poate face (dacă bash este instalat pe sistem) cu comanda:

    \$ bash

    Ce este bash

    Bash (un acronim pentru „ B al nostru- A câştig SH ell") este interpret standard comenzi pe majoritatea sistemelor Linux. Responsabilitățile sale includ procesarea și executarea comenzilor cu care utilizatorul controlează computerul. După ce ați terminat, puteți ieși din procesul de shell. După apăsarea tastelor CtrlD, echipe Ieșire sau deconectare Procesul shell va fi încheiat și vi se va solicita să introduceți din nou numele de utilizator și parola.

    Folosind „cd”

    Să începem să folosim bash pentru a naviga prin sistemul de fișiere. Pentru a începe, tastați următoarea comandă:

    $ CD/

    Cu această comandă i-am indicat lui bash că vrem să ne mutăm în directorul rădăcină - / . Toate directoarele din sistem sunt organizate într-o structură arborescentă și / acesta este începutul (sau rădăcina). Echipă CD servește la schimbarea directorului de lucru curent.

    Cărări

    Pentru a afla unde se află în sistemul de fișiere acest moment te afli în (directorul de lucru curent) tastați:

    \$ pwd /

    În exemplul de mai sus / - argumentul comenzii CD- sunat cale. Aceasta este locația din sistemul de fișiere în care dorim să ne mutăm. În acest caz / - cale absolută, aceasta înseamnă că calea este relativă la directorul rădăcină.

    Drumuri absolute

    Iată câteva exemple de căi absolute

    /dev /usr /usr/bin /usr/local/bin

    După cum probabil ați observat deja, toate aceste căi au în comun cu care încep / . Prin specificarea căii /usr/local/bin ca argument pentru comandă CDîi spunem să meargă la directorul rădăcină / , apoi în directorul usr, apoi în local și bin. Căile absolute încep întotdeauna cu /

    Căi relative

    Al doilea tip de cale se numește relativă. Bash, echipa CDși alte comenzi numără aceste căi în raport cu directorul curent. Căile relative nu încep niciodată cu / . De exemplu, dacă suntem în /usr

    \$ cd /usr

    Apoi putem merge la /usr/local/bin folosind calea relativă

    \$ cd local/bin \$ pwd/usr/local/bin

    Utilizare „..”

    Căile relative pot conține unul sau mai multe directoare «..» . „..” indică directorul părinte al directorului nostru de lucru. Exemplu:

    \$ pwd/usr/local/bin\$ CD.. \$ pwd/usr/local

    După cum puteți vedea, echipa CD..„ne ​​ridică la un nivel superior”.

    Poate adauga .. La cale relativă. Acest lucru ne va permite să ne mutăm într-un director care este la același nivel cu cel în care ne aflăm. Exemplu:

    \$ pwd/usr/local\$ cd ../share \$ pwd/usr/share

    Exemple folosind căi relative

    Căile relative pot fi destul de complicate. Aici sunt cateva exemple. Rezultatul executării comenzilor nu este afișat, încercați să determinați în ce director vă veți afla folosind bash.

    \$ cd /bin \$ cd ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ cd ../lib/X11 \$ cd /usr/bin \$ cd ../bin/../bin

    Directorul de lucru "."

    Înainte să terminăm de vorbit despre echipă CD, mai sunt câteva lucruri care merită menționate. În primul rând, există un alt director special «.» , care indică directorul curent. Acest director este folosit pentru a rula fișiere executabile aflate în directorul curent.

    \$ ./myprog

    În ultimul exemplu myprog este fisier executabil situat în directorul curent, care va fi lansat pentru execuție.

    cd și directorul principal al utilizatorului

    Pentru a merge la directorul principal, trebuie să formați

    \$ CD

    Fără un argument, cd vă va muta în directorul dvs. de acasă. Pentru superutilizator, directorul principal este de obicei /root și pentru utilizatori obișnuiți- /acasă/nume utilizator/. Dar dacă vrem să indicăm fisier specific, aflat în directorul principal. De exemplu, ca argument pentru program "myprog"? Poti sa scrii:

    \$ ./myprog /home/user/myfile.txt

    Cu toate acestea, utilizați căi absolute accesul la fișiere nu este întotdeauna convenabil. Aceeași operațiune se poate face folosind ~ -tilde:

    \$ ./myprog ~/myfile.txt

    ~ - un nume special care indică directorul principal al utilizatorului în bash.

    directoarele de acasă ale altor utilizatori

    Dar ce se întâmplă dacă trebuie să indicăm către un fișier din directorul principal al altui utilizator? Pentru a face acest lucru, după tilde trebuie să indicați numele acestui utilizator. De exemplu, pentru a indica fișierul fredsfile.txt situat în directorul principal al utilizatorului Fred:

    \$ ./myprog ~fred/fredsfile.txt

    comenzi Linux

    Introducere în ls

    Probabil că ești deja familiarizat cu echipa ls, care, apelat fără argumente, afișează o listă de fișiere stocate în directorul de lucru:

    \$ cd /usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 include libexec portage share tmp distfiles i686-linux info local portage.old src

    Dacă specificați opțiunea -A, veți putea vedea toate fișierele, inclusiv cele ascunse (ale căror nume încep cu un punct).

    \$ ls -a. bin gentoo-x86 include libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

    Lista detaliată a directoarelor

    După comanda în sine ls unul sau mai multe fișiere sau directoare pot fi specificate ca argument. Dacă specificați un nume de fișier, atunci comanda ls va afișa informații numai despre acest fișier. Și dacă specificați numele directorului, ls va afișa tot conținutul său. Opțiune '-l' echipe ls poate fi foarte util dacă doriți să aflați mai mult decât numele fișierelor informatii detaliate despre ele (permisiuni la fișier, numele proprietarului, ora ultimei modificări a fișierului și dimensiunea acestuia).

    Următorul exemplu arată utilizarea opțiunii '-l' pentru a afișa informații despre fișierele stocate în directorul /usr

    \$ ls -l /usr drwxr-xr-x 7 root root 168 24 noiembrie 14:02 X11R6 drwxr-xr-x 2 root root 14576 27 decembrie 08:56 bin drwxr-xr-x 2 root root 8856 26 decembrie 12:47 distfiles lxrw x root1xrw 22 dec 20:57 doc -> share/doc drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux drwxr-xr- 4 root root 96 noiembrie 24 13:17 i686-pc-linux-gnu drwxr-xr-x 54 root root 5992 24 decembrie 22:30 include lrwxrwxrwx 1 root root 10 decembrie 22 20:57 info -> share/info drw -x 28 root root 13552 Dec 26 00:31 lib drwxr-xr-x 3 root root 72 Nov 25 00:34 libexec drwxr-xr-x 8 root root 240 Dec 22 20:57 local lrwxrwxrwx root 2 290 Dec 1 :57 man -> share/man lrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/ drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.old drwxr-xr-x 3 root root 3096 22 decembrie 20:57 sbin drwxr-xr-x 46 root root 1144 24 dec 15:32 share drwxr-xr-x 8 root root 328 Dec 26 00:07 src drwxr-xr-x 6 root 14 14 noiembrie: 25 ssl lrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

    Prima coloană arată informații despre drepturile de acces ale fiecărui fișier din listă. (Puțin mai târziu voi explica ce literă înseamnă ce) Următoarea coloană arată numărul de link-uri către fiecare element al listei. A treia și a patra coloană sunt proprietarul și, respectiv, grupul fișierului. A cincea coloană este dimensiunea. Al șaselea este momentul în care fișierul a fost modificat ultima dată („ultima oră de modificare” sau mtime). Ultima coloană este numele fișierului sau directorului (dacă acesta este un link, atunci după „ –> ‘ reprezintă numele obiectului la care se referă).

    Cum să vizualizați numai directoare

    Uneori este nevoie să vizualizați informații numai despre directoare, și nu despre tot conținutul acestora. Opțiunea vă va ajuta să faceți față acestei sarcini '-d', care îi spune comenzii să afișeze informații numai despre directoare. Exemplu:

    \$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share drwxr-xr-x 17 root root 576 Dec 24 09:03 /usr drwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr /X11R6/bin drwxr-xr-x 2 root root 14576 Dec 27 08:56 /usr/bin

    Lista recursive și informații despre inode

    Acțiune de opțiune '-R' opusul actiunii '-d'. Vă permite să afișați în mod recursiv informații despre fișierele aflate într-un director. Conținutul directorului este afișat mai întâi nivel superior, apoi conținutul tuturor subdirectoarelor pe rând și așa mai departe. Ieșirea acestei comenzi poate fi destul de lungă, așa că nu oferim un exemplu, dar puteți încerca singur tastând „ ls -R' sau ' ls -Rl‘.

    Și în sfârșit, opțiunea '-eu' folosit pentru a imprima inodul fiecărui obiect de sistem de fișiere.

    \$ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 723 dorc 1517 infotage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp

    Ce sunt inodurile?

    Fiecare obiect de sistem de fișiere (fișier, director...) are propriul său număr unic, numit inodul(numărul inodului). Aceste informații pot părea nesemnificative, dar înțelegerea funcției inodurilor vă va ajuta să înțelegeți multe operațiuni ale sistemului de fișiere. De exemplu, să ne uităm la «.» Și «..» precum linkurile prezente în fiecare director. Pentru a înțelege ce este un director «..» , aflați inodul directorului /use/local

    \$ ls -id /usr/local 5120 /usr/local

    După cum putem vedea, inodul directorului /usr/local este 5120. Acum să vedem ce inode are directorul /usr/local/bin/..:

    \$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

    Se pare că inodurile directoarelor /usr/local și /usr/local/bin/.. sunt aceleași! Aceasta înseamnă că inodul 5120 este referit cu două nume: /usr/local și /usr/local/bin/.. Adică acestea sunt două nume diferite un singur director. Fiecare inod indică o locație specifică de pe disc.

    Fiecare inod poate avea mai multe nume de obiecte ale sistemului de fișiere asociate cu el. Numărul de „sinonime” de fișiere (obiecte de sistem de fișiere care fac referire la același inod) este afișat de numărul din a doua coloană a „ieșirii comenzii” ls -l‘.

    \$ ls -dl /usr/local drwxr-xr-x 8 root root 240 Dec 22 20:57 /usr/local

    În acest exemplu, puteți vedea (a doua coloană) că directorul /usr/local este referit de 8 obiecte diferite ale sistemului de fișiere. Iată numele lor:

    /usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/ src/..

    mkdir

    Să ne uităm la comandă mkdir. Este folosit pentru a crea directoare noi. Următorul exemplu demonstrează crearea a trei directoare noi (tic, tac, toe) în directorul /tmp

    \$ cd /tmp $ mkdir tic tac toe

    Comanda implicită mkdir nu poate crea o structură de directoare imbricată. Prin urmare, dacă trebuie să creați mai multe directoare imbricate ( minunat), atunci va trebui să apelați această comandă de trei ori pe rând:

    \$ mkdir won/der/ful mkdir: nu se poate crea directorul „won/der/ful”: Nu există un astfel de fișier sau director \$ mkdir a câștigat \$ mkdir won/der \$ mkdir won/der/ful

    Puteți simplifica această operațiune adăugând opțiunea '-p' la comanda mkdir. Această opțiune vă permite să creați o structură de directoare imbricată:

    \$ mkdir -p easy/as/pie

    Pentru a afla mai multe despre capacitățile acestui utilitar, citiți ajutorul, care este apelat de comandă man mkdir. Există ajutor pentru aproape toate comenzile din acest manual (de exemplu om ls), cu exceptia CD, deoarece este încorporat în bash (pentru astfel de comenzi, ajutorul se numește astfel: CD de ajutor)

    atingere

    Să trecem la studiul comenzilor cpȘi mv, folosit pentru a copia, redenumi și muta fișiere și directoare. Dar înainte de asta, să creăm un fișier gol în directorul /tmp folosind comanda atingere:

    \$ cd /tmp \$ atinge copyme

    Echipă atingere actualizează ultimul timp de acces al fișierului (a șasea coloană a ieșirii comenzii ls -l) dacă există deja sau creează un nou fișier gol dacă nu există încă. După această operație ar trebui să avem un fișier gol /tmp/copyme.

    ecou

    Acum că avem un fișier gol, să scriem în el șir de text folosind comanda ecou, care imprimă argumentul transmis către dispozitivul de ieșire standard (un terminal text în cazul nostru).

    \$ echo "primul fișier" primul fișier

    Pentru a scrie o linie în fișierul nostru, să redirecționăm rezultatul comenzii către acesta ecou:

    \$ echo "firstfile" > copyme

    Semn > (mai mult) îi spune shell-ului să redirecționeze rezultatul comenzii din stânga către fișierul al cărui nume este în dreapta. Dacă nu există un fișier cu același nume, acesta va fi creat automat. Și dacă un astfel de fișier există deja, acesta va fi suprascris (tot conținutul său va fi șters înainte de a scrie rândul nostru). Echipă 'ls -l' va arăta că dimensiunea fișierului nostru este acum de 10 octeți - nouă octeți sunt ocupați de cuvântul „firstfile” și un octet de caracterul de avans de linie.

    \$ ls -l copyme-rw-r--r-- 1 root root 10 Dec 28 14:13 copyme

    cat si cp

    Pentru a scoate conținutul unui fișier către terminal, utilizați comanda pisică:

    \$ cat copyme primul fișier

    Acum putem începe să analizăm funcționalitatea de bază a comenzii cp. Această comandă are două argumente. Primul este deja un nume fișier existent('copyme'), al doilea este numele noii copii pe care dorim să o facem ('copiedme').

    \$ cp copyme copiedme

    Ne putem asigura că noua copie a fișierului are un număr diferit de inod (aceasta înseamnă că de fapt am primit unul nou dosar separat, și nu doar un link către cel vechi)

    \$ ls -i copyme copiedme 648284 copyme 650704 copyme

    mv

    Acum să folosim comanda mv pentru a redenumi fișierul („copiedme” –> „movedme”). Numărul inodului nu se schimbă după această operație, se schimbă doar numele fișierului.

    \$ mv copiedme movedme \$ M-am mutat 648284 movedme

    Numărul inodului nu se modifică numai cu condiția ca fișierul redenumit să rămână în sistemul de fișiere în care a fost localizat dosarul original. Vom arunca o privire mai atentă asupra structurii sistemelor de fișiere într-una dintre următoarele părți ale acestui tutorial.

    Echipă mv vă permite nu numai să redenumiți fișierele, ci și să le mutați. De exemplu, pentru a muta un fișier /var/tmp/myfile.txt la director /acasă/utilizator trebuie sa dai comanda:

    \$ mv /var/tmp/myfile.txt /home/user

    Fișierul va fi mutat în directorul principal al utilizatorului utilizator chiar dacă se află pe un alt sistem de fișiere (în acest caz, fișierul va fi copiat într-o nouă locație după care originalul va fi șters). După cum probabil ați ghicit, mutarea unui fișier într-un alt sistem de fișiere îi schimbă inodul. Acest lucru se întâmplă deoarece fiecare sistem de fișiere are propriul său set separat de inoduri.

    Trebuie remarcat faptul că există posibilitatea ca noul număr de inod atribuit să coincidă cu cel vechi, dar este extrem de mic.

    Pentru a muta mai multe fișiere simultan într-un singur director, trebuie să scrieți:

    \$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt /home/user \$ mv -t /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

    Dacă adăugați opțiunea '-v', pe ecran va fi afișat un raport cu privire la operațiunea efectuată:

    \$ mv -vt /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt„/var/tmp/myfile1.txt” -> „/home/user/myfile1.txt” „/var/tmp/myfile2.txt” -> „/home/user/myfile2.txt”