Si utilitzem qualsevol sistema operatiu important, estem interactuant indirectament amb el closca . Mentre executem Ubuntu, Linux Mint o qualsevol altra distribució de Linux, estem interactuant amb l'intèrpret d'ordres mitjançant el terminal. En aquest article parlarem de les intèrprets d'ordres i els scripts d'intèrpret d'ordres de Linux, de manera que abans d'entendre els scripts de l'intèrpret d'ordres ens hem de familiaritzar amb les terminologies següents:
- Nucli
- Shell
- Terminal
Taula de contingut
- Què és Kernel?
- Què és Shell?
- Shell de línia d'ordres
- Petxines gràfiques
- Què és un terminal?
- Shell Scripting
Què és Kernel?
El nucli és un programa informàtic que és el nucli del sistema operatiu d'un ordinador, amb un control complet sobre tot el sistema. Gestiona els següents recursos del sistema Linux:
- Gestió de fitxers
- Gestió de processos
- Gestió d'E/S
- Gestió de la memòria
- Gestió de dispositius, etc.
Sovint s'equivoca que Linus Torvalds hagi desenvolupat el sistema operatiu Linux, però en realitat, només és responsable del desenvolupament del nucli Linux.
Sistema Linux complet = Kernel + GNU utilitats i biblioteques del sistema + altres scripts de gestió + scripts d'instal·lació.
Què és Shell?
Un shell és un programa d'usuari especial que proporciona una interfície perquè l'usuari utilitzi els serveis del sistema operatiu. Shell accepta ordres llegibles pels usuaris i les converteix en alguna cosa que el nucli pugui entendre. És un intèrpret de llenguatge d'ordres que executa ordres llegides des de dispositius d'entrada com ara teclats o fitxers. L'intèrpret d'ordres s'inicia quan l'usuari inicia sessió o inicia el terminal.
organització i arquitectura informàtica

Linux Shell
Shell es classifica àmpliament en dues categories:
- Shell de línia d'ordres
- Shell gràfic
Shell de línia d'ordres
Els usuaris poden accedir a Shell mitjançant una interfície de línia d'ordres. Es proporciona un programa especial anomenat Terminal a Linux/macOS o Símbol del sistema al sistema operatiu Windows per escriure les ordres llegibles pels humans com ara cat, ls, etc. i, a continuació, s'està executant. El resultat es mostra a l'usuari al terminal. Un terminal del sistema Ubuntu 16.4 té aquest aspecte:

línia d'ordres de Linux
A la captura de pantalla anterior ls comanda amb -l s'executa l'opció. Llistarà tots els fitxers del directori de treball actual en un format de llista llarg.
Treballar amb un shell de línia d'ordres és una mica difícil per als principiants perquè és difícil memoritzar tantes ordres. És molt potent; permet als usuaris emmagatzemar ordres en un fitxer i executar-les junts. D'aquesta manera, qualsevol tasca repetitiva es pot automatitzar fàcilment. Aquests fitxers solen ser anomenats fitxers per lots a Windows i Shell Scripts en sistemes Linux/macOS.
Petxines gràfiques
Les shells gràfiques proporcionen mitjans per manipular programes basats en la interfície gràfica d'usuari (GUI), ja que permeten operacions com ara obrir, tancar, moure i canviar la mida de finestres, així com canviar el focus entre finestres. El sistema operatiu Windows o el sistema operatiu Ubuntu es poden considerar com un bon exemple que proporciona GUI a l'usuari per interactuar amb el programa. Els usuaris no necessiten escriure ordres per a cada acció. Una GUI típica al sistema Ubuntu:

GUI Shell
intercanvi de memòria
Hi ha diversos shells disponibles per a sistemes Linux, com ara:
- BASH (Bourne Again SHell) - És l'intèrpret d'ordres més utilitzat en sistemes Linux. S'utilitza com a intèrpret d'ordres d'inici de sessió per defecte als sistemes Linux i a macOS. També es pot instal·lar al sistema operatiu Windows.
- CSH (C SHell): la sintaxi de l'intèrpret d'ordres C i el seu ús són molt semblants al llenguatge de programació C.
- KSH (Korn SHell): el Korn Shell també va ser la base per a les especificacions estàndard de POSIX Shell, etc.
Cada shell fa la mateixa feina, però entén diferents ordres i proporciona diferents funcions integrades.
Què és un terminal?
Un programa que s'encarrega de proporcionar una interfície a un usuari perquè pugui accedir al shell. Bàsicament, permet als usuaris introduir ordres i veure la sortida d'aquestes ordres en una interfície basada en text. Al terminal s'executen scripts grans que s'escriuen per automatitzar i realitzar tasques complexes.
Per accedir al terminal, només cal cercar al terminal de cerca i fer-hi doble clic.
terminal obert
log4j
Aquí podeu veure com es veu el terminal de Red Hat Linux.
terminal
Shell Scripting
Normalment, les shells són interactives, el que significa que accepten ordres com a entrada dels usuaris i les executen. Tanmateix, de vegades volem executar un munt d'ordres de manera rutinària, de manera que hem d'escriure totes les ordres cada vegada al terminal.
Com que un shell també pot prendre ordres com a entrada d'un fitxer, podem escriure aquestes ordres en un fitxer i les podem executar en shell per evitar aquest treball repetitiu. Aquests fitxers s'anomenen Scripts de Shell o Programes Shell . Els scripts d'intèrpret d'ordres són similars al fitxer per lots a MS-DOS. Cada script de shell es desa amb `.sh` extensió de fitxer, per exemple, myscript.sh.
Un script de shell té una sintaxi igual que qualsevol altre llenguatge de programació. Si teniu alguna experiència prèvia amb qualsevol llenguatge de programació com Python, C/C++, etc. Seria molt fàcil començar-hi.
Un script de shell inclou els elements següents:
- Paraules clau de Shell: si, sinó, trenca, etc.
- Ordres de Shell: cd, ls, echo, pwd, touch, etc.
- Funcions
- Control de flux: si... aleshores... sinó, bucles de cas i shell, etc.
Per què necessitem scripts de shell?
Hi ha moltes raons per escriure scripts d'intèrpret d'ordres:
- Per evitar el treball repetitiu i l'automatització
- Els administradors del sistema utilitzen shell scripting per a les còpies de seguretat rutinàries.
- Monitorització del sistema
- Afegeix noves funcionalitats al shell, etc.
Alguns avantatges dels scripts de shell
- L'ordre i la sintaxi són exactament les mateixes que les que s'introdueixen directament a la línia d'ordres, de manera que els programadors no necessiten canviar a una sintaxi completament diferent.
- Escriure scripts d'intèrpret d'ordres és molt més ràpid
- Començament ràpid
- Depuració interactiva, etc.
Alguns desavantatges dels scripts de shell
- Propens a errors costosos, un sol error pot canviar l'ordre que pot ser perjudicial.
- Velocitat d'execució lenta
- Defectes de disseny dins la sintaxi o implementació del llenguatge
- No és adequat per a tasques grans i complexes
- Proporcioneu una estructura de dades mínima a diferència d'altres llenguatges de script. etc.
Demostració senzilla d'escriptura de shell utilitzant Bash Shell
Si treballeu en un terminal, alguna cosa que recorreu en el fons dels directoris. Aleshores, per trobar alguns directoris al camí, hem d'executar una ordre com aquesta com es mostra a continuació per arribar al directori Python:
substitució del mètode java

anar al directori Python:
És bastant frustrant, així que per què no podem tenir una utilitat on només hem d'escriure el nom del directori i podem saltar directament a això sense executar el cd ../ comanda una i altra vegada. Desa l'script com a jump.sh
xoc # !/bin/bash # A simple bash script to move up to desired directory level directly function jump() { # original value of Internal Field Separator OLDIFS=$IFS # setting field separator to '/' IFS=/ # converting working path into array of directories in path # eg. /my/path/is/like/this # into [, my, path, is, like, this] path_arr=($PWD) # setting IFS to original value IFS=$OLDIFS local pos=-1 # ${path_arr[@]} gives all the values in path_arr for dir in '${path_arr[@]}' do # find the number of directories to move up to # reach at target directory pos=$[$pos+1] if [ '' = '$dir' ];then # length of the path_arr dir_in_path=${#path_arr[@]} #current working directory cwd=$PWD limit=$[$dir_in_path-$pos-1] for ((i=0; i; i++)) do cwd=$cwd/.. done cd $cwd break fi done }>
De moment, no podem executar el nostre script de shell perquè no té permisos. Hem de fer-lo executable escrivint la següent comanda:
$ chmod +x camí/al/nostre/fitxer/jump.sh
Ara, per fer-ho disponible a cada sessió de terminal, hem de posar-ho .bashrc dossier.
.bashrc és un script d'intèrpret d'ordres que Bash shell executa sempre que s'inicia de manera interactiva. L'objectiu d'un fitxer .bashrc és proporcionar un lloc on podeu configurar variables, funcions i àlies, definir el nostre indicador i definir altres paràmetres que volem utilitzar sempre que obrim una finestra de terminal nova.
Ara obriu el terminal i escriviu la següent comanda:
matriu java per llistar
$ echo source ~/path/to/our/file/jump.sh>> ~/.bashrc
Ara obriu el vostre terminal i proveu una nova funcionalitat de salt escrivint la següent comanda:
$ jump dir_name
igual que la captura de pantalla següent:

saltar nom_dir
Conclusió
En aquest article hem conegut les parts essencials dels sistemes Linux: el nucli, que ho controla tot, l'intèrpret d'ordres, que ens permet interactuar amb el sistema operatiu, i el terminal, la nostra interfície per donar ordres. Vam explorar la línia d'ordres i les intèrprets d'ordres gràfiques, com BASH, i vam entendre que el terminal és on escrivim les nostres ordres. L'article presentava els scripts d'intèrpret d'ordres, una manera d'automatitzar tasques mitjançant scripts senzills, i es parlava dels avantatges i desavantatges d'utilitzar-los. Un exemple pràctic va demostrar la creació d'un script per a una navegació ràpida de directoris. Finalment, vam veure com fer que l'script funcioni i es torni accessible a cada sessió de terminal. Aquest article és una guia amigable per a principiants per entendre i utilitzar intèrprets d'ordres de Linux i shell scripting.linux és un bon llenguatge, està escrit en llenguatge Linux