Che cos'è lo scripting di shell e perché dovresti usarlo

Che cos'è lo scripting di shell e perché dovresti usarlo

La shell è un programma all'interno di un sistema operativo Linux o Unix che consente di immettere comandi per l'esecuzione da parte del sistema. Quando una finestra di terminale viene aperta su un computer Linux, avvia il programma shell che presenta un'interfaccia per immettere i comandi. Questa interfaccia è nota come interfaccia della riga di comando. Quando viene immesso un comando, viene eseguito dalla shell e l'output viene visualizzato sullo schermo.





Oltre ad essere in grado di accettare ed eseguire comandi in modo interattivo, la shell può anche eseguire comandi memorizzati in un file. Questa modalità di esecuzione è nota come script di shell , e in questo articolo trattiamo le basi dello scripting di shell .





1. Storia della conchiglia

A partire da Unix negli anni '70, c'era un programma di shell chiamato Guscio V6 sviluppato da Ken Thomson. Era una shell interattiva e mancava di capacità di scripting.





È stato seguito dal Bourne Shell nel 1977 e rimane in uso oggi come shell predefinita per il radice account. Questa shell ha aggiunto capacità di scripting che si sono rivelate estremamente utili nella pratica nel corso degli anni.

L'ulteriore sviluppo del guscio negli anni '80 ha dato origine a molte varianti di guscio popolari, le più popolari delle quali erano le C-Shell e il Korn Shell . Ognuna di queste shell portava la propria sintassi che, in alcuni casi, era drasticamente diversa dalla shell originale.



Una delle conchiglie più popolari oggi è la Bash Shell . Bash sta per Bourne-Again-Shell ed è una variante notevolmente migliorata dell'originale Bourne Shell.

come si fa la modalità ritratto su iphone 7

In questo articolo, descriviamo lo scripting della shell per il guscio di Bash .





2. Esecuzione di uno script di shell

Come si esegue uno script di shell? Semplice. Basta passare il percorso dello script come argomento alla shell:

Uno script di shell di esempio:





echo 'hello world'

Eseguilo come segue:

$ bash hello.sh
# prints
hello world

Nota: La shell richiede che le righe siano terminate da caratteri LF (Line-Feed). Se scrivi il tuo script di shell su Windows e provi ad eseguirlo direttamente su un sistema Linux, potresti incorrere in errori. Windows utilizza la combinazione CR-LF (Carriage-Return-Line-Feed) per la terminazione della linea. Questo deve essere convertito solo in LF. Controlla il tuo editor di Windows per i modi per farlo.

C'è un altro modo per eseguire uno script di shell direttamente come comando. Inserire la riga seguente (la hashbang dichiarazione) come prima riga del tuo script di shell.

minecraft come passare alla sopravvivenza
#!/bin/bash

Con questa modifica, il nostro semplice script di shell ora è:

#!/bin/bash
echo 'hello world'

Ora, devi rendere eseguibile il file di script come segue:

$ chmod +x hello.sh

A questo punto, puoi eseguire direttamente il file di script senza dover fare riferimento esplicitamente alla shell.

$ hello.sh
# prints
hello world

Diamo ora un'occhiata ad alcuni vantaggi dell'utilizzo di script di shell.

3. Automazione delle attività

Il primo vantaggio dell'utilizzo degli script di shell è l'automazione delle attività eseguite di frequente. Supponiamo che tu abbia un compito che devi svolgere ogni giorno. Se hai bisogno di eseguire più comandi sul tuo sistema Linux ogni giorno, puoi memorizzare questi comandi in un file ed eseguire lo script. Esempi inclusi:

  • Archivia e carica un file o una cartella ogni giorno su a struttura di archiviazione cloud come S3.
  • Comprimi i file di registro che tendono a crescere ogni giorno.
  • Recupera i prezzi delle azioni, analizza i dati recuperati e attiva un'e-mail o un SMS quando vengono soddisfatte determinate condizioni (prezzi troppo alti o troppo bassi).

4. Combinazione di più comandi

Oltre ad automatizzare le attività frequenti, potresti anche trovare vantaggioso poter combinare più sequenze di comandi in un unico comando. Ricordare un singolo comando è molto più semplice di più comandi, per non parlare dell'ordine in cui devono essere eseguiti.

Un esempio potrebbe essere la sequenza di avvio del sistema operativo Linux stesso. Come parte dell'avvio, il sistema operativo esegue una serie di comandi per portare il sistema in uno stato corretto. Questi comandi sono in realtà script di shell che vivono sotto il /eccetera directory. Se dai un'occhiata a uno di questi script di shell, ti renderai conto della complessità dell'avvio di un sistema, che potresti aver dovuto eseguire manualmente in assenza di script di shell.

Quello che segue è uno script di shell di esempio, /etc/profilo , che viene eseguito ogni volta che un utente effettua il login. Immagina di digitare questi comandi a mano!

# /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. Più facile da sviluppare

È possibile eseguire le stesse azioni di uno script di shell all'interno di un normale programma scritto in C/C++. Tuttavia, è molto più semplice scrivere ed eseguire il debug di uno script di shell rispetto a un programma C/C++. Soprattutto per le attività di amministrazione del sistema che includono l'esecuzione di comandi esterni, la creazione e la rimozione di file e directory, il reindirizzamento dell'output, ecc.

I programmi C/C++ sono migliori per un livello operativo molto più basso, come invocare chiamate di sistema, manipolare strutture dati, ecc.

6. Trasparenza

Uno script di shell, essendo un file di testo, può essere facilmente visualizzato per verificare quali azioni sta eseguendo. Al contrario, l'unico modo per sapere cosa sta facendo un programma scritto in un linguaggio come C/C++ (e compilato in un eseguibile) è se sceglie di dirtelo o se hai accesso al codice sorgente. Ad esempio, puoi controllare se uno script di shell sta eliminando dei file e, se hai bisogno di quei file, puoi copiarli in una posizione diversa.

È anche molto più facile diagnosticare i problemi con gli script di shell piuttosto che con i normali programmi poiché puoi guardare il codice sorgente. Lo script non funziona perché non esiste una directory? Puoi guardare nel codice dello script e creare la directory (anche se uno script di shell ben educato dovrebbe controllarlo e crearlo per evitare tali errori).

7. Portatile

A script di shell può essere trasferito ad altri sistemi operativi Unix e Unix-like ed eseguito (se è presente la shell stessa). Anche quando si trasferisce uno script di shell da diverse architetture come x86, MIPS, Sparc, ecc., gli script di shell sono molto più portabili dei programmi C/C++.

L'unico modo in cui un programma C/C++ può essere trasferito e utilizzato su un altro sistema è copiare il codice sorgente, compilare il programma e tentare di eseguirlo. Anche in questo caso, potrebbe non funzionare come previsto se utilizza codice specifico dell'architettura.

Ora che hai un'idea di cosa sono gli script di shell e dei loro numerosi vantaggi, non ti piacerebbe usarli per i tuoi compiti? Quali problemi hai riscontrato durante l'utilizzo? Fatecelo sapere nei commenti qui sotto.

opzione dual boot non visualizzata in Windows 10
Condividere Condividere Tweet E-mail 5 suggerimenti per potenziare le tue macchine Linux VirtualBox

Stanchi delle scarse prestazioni offerte dalle macchine virtuali? Ecco cosa dovresti fare per aumentare le prestazioni di VirtualBox.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Linux Bash Shell
Circa l'autore Jay Sridhar(17 Articoli Pubblicati) Altro da Jay Sridhar

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti