Què és el guió de Shell i per què hauríeu d'utilitzar-lo

Què és el guió de Shell i per què hauríeu d'utilitzar-lo

L'intèrpret d'ordres és un programa d'un sistema operatiu Linux o Unix que us permet introduir ordres perquè el sistema les executi. Quan s'obre una finestra de terminal en un ordinador Linux, s'inicia el programa shell que presenta una interfície per introduir ordres. Aquesta interfície es coneix com a interfície de línia d'ordres. Quan s'introdueix una ordre, l'intèrpret s'executa i la sortida es mostra a la pantalla.





A més de poder acceptar i executar ordres de manera interactiva, l'intèrpret d'ordres també pot executar ordres emmagatzemades en un fitxer. Aquest mode d'execució es coneix com script de shell , i en aquest article tractem els conceptes bàsics de la seqüència de comandaments.





1. Història de la Petxina

Començant per Unix als anys setanta, hi va haver un programa shell anomenat V6 Shell desenvolupat per Ken Thomson. Era un intèrpret d’ordres interactiu i no tenia capacitat d’escriptura.





El va seguir el Bourne Shell el 1977 i es manté en l'actualitat com a intèrpret d'ordres per defecte arrel compte. Aquest intèrpret d'ordres va afegir habilitats de seqüència de comandaments que s'ha demostrat extremadament útil a la pràctica al llarg dels anys.

El desenvolupament posterior de la petxina als anys vuitanta va donar lloc a moltes variants populars de petxines, les més populars de les quals eren la C-Shell i la Korn Shell . Cadascuna d’aquestes petxines aportava la seva pròpia sintaxi que, en certs casos, era dràsticament diferent de la petxina original.



Una de les petxines més populars actualment és la Bash Shell . Bash significa Bourne-Again-Shell i és una variant molt millorada de l'original Bourne Shell.

quant duren els portàtils Apple

En aquest article, descrivim les seqüències de comandaments de l'intèrpret d'ordres el Bash Shell .





2. Execució d'un script Shell

Com s'executa un script de shell? Senzill. Només cal passar el camí de l'script com a argument a l'intèrpret d'ordres:

Un exemple de guió d'intèrpret d'ordres:





echo 'hello world'

Executeu-lo de la següent manera:

$ bash hello.sh
# prints
hello world

Nota: L'intèrpret d'ordres requereix que les línies finalitzin amb caràcters LF (Line-Feed). Si escriviu el vostre script de shell a Windows i proveu d'executar-lo directament en un sistema Linux, és possible que tingueu errors. Windows utilitza la combinació CR-LF (Carriage-Return-Line-Feed) per acabar la línia. Això només s’ha de convertir a LF. Consulteu el vostre editor de Windows per trobar maneres de fer-ho.

Hi ha una altra manera d'executar un script d'intèrpret d'ordres directament com a ordre. Inseriu la línia següent (el fitxer hashbang declaració) com a primera línia del vostre script de shell.

Com es troba la llista de desitjos d'algú a Amazon
#!/bin/bash

Amb aquest canvi, el nostre senzill script de shell ara és:

#!/bin/bash
echo 'hello world'

Ara, cal que el fitxer de script sigui executable de la manera següent:

$ chmod +x hello.sh

En aquest moment, podeu executar el fitxer de script directament sense haver de fer referència explícitament a l'intèrpret d'ordres.

$ hello.sh
# prints
hello world

Vegem ara alguns avantatges d'utilitzar scripts d'intèrpret d'ordres.

3. Automatització de tasques

El primer avantatge d’utilitzar scripts d’intèrpret d’ordres és automatitzar tasques executades amb freqüència. Suposem que teniu una tasca que heu de realitzar cada dia. Si necessiteu executar diverses ordres al vostre sistema Linux tots els dies, podeu emmagatzemar-les en un fitxer i executar l'script. Alguns exemples inclouen:

  • Arxiveu i pengeu cada dia un fitxer o carpeta a un fitxer instal·lació d’emmagatzematge en núvol com ara S3.
  • Comprimiu fitxers de registre que tendeixen a créixer cada dia.
  • Obteniu preus de les accions, analitzeu les dades obtingudes i activeu un correu electrònic o un SMS quan es compleixin determinades condicions (preus massa elevats o massa baixos).

4. Combinació de diversos comandaments

A més d’automatitzar tasques freqüents, també pot ser avantatjós combinar diverses seqüències d’ordres en una sola ordre. Recordar una sola ordre és molt més senzill que diverses ordres, sense oblidar l’ordre en què s’han d’executar.

Un exemple seria la seqüència d’arrencada del propi sistema operatiu Linux. Com a part de l'arrencada, el sistema operatiu executa diverses ordres per aconseguir que el sistema estigui en un estat adequat. Aquestes ordres són en realitat scripts de shell que viuen sota el fitxer / etc directori. Si mireu un d’aquests scripts d’intèrpret d’ordres, us adonareu de la complexitat d’arrencar un sistema, que és possible que hagueu hagut de realitzar a mà en absència d’escriptures d’intèrpret d’ordres.

A continuació es mostra un script d’intèrpret d’ordres de mostra, / etc / profile , que s’executa cada vegada que un usuari inicia la sessió. Imagineu escriure aquestes ordres a mà!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Més fàcil de desenvolupar

És possible realitzar les mateixes accions que un script d'intèrpret d'ordres dins d'un programa normal escrit en C / C ++. No obstant això, és molt més fàcil escriure i depurar un script shell que un programa C / C ++. Especialment per a tasques d’administració del sistema que inclouen l’execució d’ordres externes, la creació i eliminació de fitxers i directoris, la redirecció de la sortida, etc.

Els programes C / C ++ són millors per a un nivell d’operació molt inferior, com ara invocar trucades al sistema, manipular estructures de dades, etc.

6. Transparència

Un script de shell, pel fet de ser un fitxer de text, es pot veure fàcilment per comprovar quines accions està realitzant. Per contra, l’única manera de saber el que fa un programa escrit en un llenguatge com C / C ++ (i compilat en un executable) és si vol dir-ho o si té accés al codi font. Per exemple, podeu comprovar si un script de l'intèrpret d'ordres suprimeix algun fitxer i, si necessiteu aquests fitxers, podeu copiar-los a una ubicació diferent.

També és molt més fàcil diagnosticar problemes amb scripts d’intèrpret d’ordres en lloc de programes normals, ja que podeu mirar el codi font. Falla aquest script perquè no existeix un directori? Podeu buscar el codi de seqüència d'ordres i crear el directori (tot i que un guió d'intèrpret d'ordres amb bon comportament hauria de comprovar-lo i crear-lo per evitar aquests errors).

7. Portàtil

A script de shell es pot transferir a altres sistemes operatius Unix i similars a Unix i executar-lo (si el shell està present). Fins i tot quan es transfereix un script de shell des de diferents arquitectures com x86, MIPS, Sparc, etc., els scripts de shell són molt més portàtils que els programes C / C ++.

L'única manera de transferir i utilitzar un programa C / C ++ en un altre sistema és copiar el codi font, construir el programa i intentar executar-lo. Tot i així, pot ser que no funcioni com s’esperava si utilitza un codi específic per a l’arquitectura.

Ara que ja teniu una idea de què són els scripts de shell i els seus molts avantatges, no us agradaria utilitzar-los per a les vostres tasques? Quins problemes us heu enfrontat en utilitzar-los? Feu-nos-ho saber en els comentaris següents.

"endollat, sense càrrega"
Compartir Compartir Tweet Correu electrònic 5 consells per sobrecarregar les vostres màquines Linux de VirtualBox

Cansat del baix rendiment que ofereixen les màquines virtuals? Això és el que heu de fer per millorar el rendiment del VirtualBox.

Llegiu a continuació
Temes relacionats
  • Programació
  • Linux Bash Shell
Sobre l'autor Jay Sridhar(17 articles publicats) Més de Jay Sridhar

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us