Unix / Linux - Cosa sono le shell?
UN Shellfornisce un'interfaccia per il sistema Unix. Raccoglie input da te ed esegue programmi basati su quell'input. Quando un programma termina l'esecuzione, visualizza l'output di quel programma.
Shell è un ambiente in cui possiamo eseguire i nostri comandi, programmi e script di shell. Esistono diversi gusti di una shell, così come esistono diversi tipi di sistemi operativi. Ogni tipo di shell ha il proprio set di comandi e funzioni riconosciuti.
Prompt Shell
Il prompt, $, che si chiama command prompt, viene emesso dalla shell. Mentre viene visualizzato il prompt, puoi digitare un comando.
Shell legge l'input dopo aver premuto Enter. Determina il comando che desideri eseguire guardando la prima parola del tuo input. Una parola è un insieme ininterrotto di caratteri. Gli spazi e le tabulazioni separano le parole.
Di seguito è riportato un semplice esempio di date comando, che mostra la data e l'ora correnti -
$date
Thu Jun 25 08:30:19 MST 2009
È possibile personalizzare il prompt dei comandi utilizzando la variabile d'ambiente PS1 spiegata nel tutorial sull'ambiente.
Tipi di conchiglie
In Unix, ci sono due principali tipi di shell:
Bourne shell - Se stai usando una shell di tipo Bourne, il file $ carattere è il prompt predefinito.
C shell - Se stai usando una shell di tipo C, il carattere% è il prompt predefinito.
La Bourne Shell ha le seguenti sottocategorie:
- Bourne shell (sh)
- Conchiglia Korn (ksh)
- Bourne Again Shell (bash)
- Shell POSIX (sh)
I diversi gusci di tipo C seguono:
- Guscio C (csh)
- TENEX / TOPS C shell (tcsh)
La shell Unix originale è stata scritta a metà degli anni '70 da Stephen R. Bourne mentre era agli AT&T Bell Labs nel New Jersey.
Bourne shell è stata la prima shell a comparire sui sistemi Unix, quindi viene chiamata "la shell".
La Bourne Shell viene solitamente installata come /bin/shsulla maggior parte delle versioni di Unix. Per questo motivo, è la shell preferita per scrivere script che possono essere utilizzati su diverse versioni di Unix.
In questo capitolo tratteremo la maggior parte dei concetti di Shell basati su Borne Shell.
Script di shell
Il concetto di base di uno script di shell è un elenco di comandi, elencati nell'ordine di esecuzione. Un buon script di shell avrà commenti, preceduti da# segno, descrivendo i passaggi.
Esistono test condizionali, come il valore A è maggiore del valore B, cicli che ci consentono di passare attraverso enormi quantità di dati, file per leggere e memorizzare dati e variabili per leggere e memorizzare dati e lo script può includere funzioni.
Scriveremo molti script nelle prossime sezioni. Sarebbe un semplice file di testo in cui metteremo tutti i nostri comandi e molti altri costrutti richiesti che dicono all'ambiente della shell cosa fare e quando farlo.
Gli script e le funzioni della shell vengono interpretati entrambi. Ciò significa che non sono compilati.
Script di esempio
Supponiamo di creare un file test.shscript. Nota che tutti gli script avrebbero l'estensione.shestensione. Prima di aggiungere qualcos'altro allo script, è necessario avvisare il sistema che è stato avviato uno script di shell. Questo viene fatto usando ilshebangcostruire. Ad esempio:
#!/bin/sh
Questo dice al sistema che i comandi che seguono devono essere eseguiti dalla shell Bourne. Si chiama shebang perché il file#il simbolo è chiamato hash e il! il simbolo è chiamato botto .
Per creare uno script contenente questi comandi, inserisci prima la riga shebang e poi aggiungi i comandi:
#!/bin/bash
pwd
ls
Commenti sulla shell
Puoi inserire i tuoi commenti nel tuo script come segue:
#!/bin/bash
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls
Salva il contenuto di cui sopra e rendi eseguibile lo script -
$chmod +x test.sh
Lo script di shell è ora pronto per essere eseguito -
$./test.sh
Dopo l'esecuzione, riceverai il seguente risultato:
/home/amrood
index.htm unix-basic_utilities.htm unix-directories.htm
test.sh unix-communication.htm unix-environment.htm
Note - Per eseguire un programma disponibile nella directory corrente, utilizzare ./program_name
Script di shell estesi
Gli script di shell hanno diversi costrutti richiesti che dicono all'ambiente di shell cosa fare e quando farlo. Ovviamente, la maggior parte degli script è più complessa di quella precedente.
La shell è, dopo tutto, un vero linguaggio di programmazione, completo di variabili, strutture di controllo e così via. Non importa quanto sia complicato uno script, è sempre solo un elenco di comandi eseguiti in sequenza.
Lo script seguente utilizza l'estensione read comando che prende l'input dalla tastiera e lo assegna come valore della variabile PERSON e infine lo stampa su STDOUT.
#!/bin/sh
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
Ecco un esempio di esecuzione dello script:
$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$