logo

Introduzione alla shell Linux e allo scripting della shell

Se utilizziamo uno dei principali sistemi operativi, stiamo interagendo indirettamente con conchiglia . Durante l'esecuzione di Ubuntu, Linux Mint o qualsiasi altra distribuzione Linux, interagiamo con la shell utilizzando il terminale. In questo articolo discuteremo delle shell Linux e dello scripting della shell, quindi prima di comprendere lo scripting della shell dobbiamo acquisire familiarità con le seguenti terminologie:

  • Nocciolo
  • Conchiglia
  • terminale

Tabella dei contenuti



Cos'è il kernel?

Il kernel è un programma per computer che costituisce il nucleo del sistema operativo di un computer, con il controllo completo su tutto il sistema. Gestisce le seguenti risorse del sistema Linux –

  • Gestione dei file
  • Gestione dei processi
  • Gestione degli I/O
  • Gestione della memoria
  • Gestione dei dispositivi, ecc.

Spesso si sbaglia nel ritenere che Linus Torvalds abbia sviluppato il sistema operativo Linux, ma in realtà è responsabile solo dello sviluppo del kernel Linux.

Sistema Linux completo = Kernel + GNU utilità e librerie di sistema + altri script di gestione + script di installazione.



Cos'è Shell?

Una shell è un programma utente speciale che fornisce all'utente un'interfaccia per utilizzare i servizi del sistema operativo. La Shell accetta comandi leggibili dagli utenti e li converte in qualcosa che il kernel può comprendere. È un interprete del linguaggio di comando che esegue comandi letti da dispositivi di input come tastiere o da file. La shell viene avviata quando l'utente accede o avvia il terminale.

listdir del sistema operativo python
Shell Linux

Shell Linux

Shell è generalmente classificata in due categorie:



  • Shell della riga di comando
  • Guscio grafico

Shell della riga di comando

Gli utenti possono accedere alla shell utilizzando un'interfaccia a riga di comando. Viene fornito un programma speciale chiamato Terminale in Linux/macOS o Prompt dei comandi nel sistema operativo Windows per digitare comandi leggibili dall'uomo come cat, ls ecc. e quindi viene eseguito. Il risultato viene quindi visualizzato sul terminale all'utente. Un terminale nel sistema Ubuntu 16.4 si presenta così:

riga di comando di Linux

riga di comando di Linux

Nello screenshot qui sopra l comandare con -l l'opzione viene eseguita. Elencherà tutti i file nella directory di lavoro corrente in un lungo formato di elenco.
Lavorare con una shell a riga di comando è un po’ difficile per i principianti perché è difficile memorizzare così tanti comandi. È molto potente; consente agli utenti di memorizzare comandi in un file ed eseguirli insieme. In questo modo qualsiasi attività ripetitiva può essere facilmente automatizzata. Questi file sono solitamente chiamati file batch in Windows e Conchiglia Script nei sistemi Linux/macOS.

Conchiglie grafiche

Le shell grafiche forniscono mezzi per manipolare programmi basati sull'interfaccia utente grafica (GUI), consentendo operazioni come l'apertura, la chiusura, lo spostamento e il ridimensionamento delle finestre, nonché il cambio dello stato attivo tra le finestre. Il sistema operativo Windows o il sistema operativo Ubuntu possono essere considerati un buon esempio che fornisce la GUI all'utente per interagire con il programma. Gli utenti non devono digitare comandi per ogni azione. Una tipica GUI nel sistema Ubuntu –

Guscio della GUI

Guscio della GUI

numero Java da stringa

Sono disponibili diverse shell per i sistemi Linux come:

  • BASH (Bourne Again SHell) – È la shell più utilizzata nei sistemi Linux. Viene utilizzato come shell di accesso predefinita nei sistemi Linux e macOS. Può essere installato anche su sistema operativo Windows.
  • CSH (C SHell) – La sintassi della shell C e il suo utilizzo sono molto simili al linguaggio di programmazione C.
  • KSH (Korn SHell) – La Korn Shell era anche la base per le specifiche standard POSIX Shell ecc.

Ogni shell svolge lo stesso lavoro ma comprende comandi diversi e fornisce diverse funzioni integrate.

Cos'è un terminale?

Un programma che è responsabile di fornire un'interfaccia a un utente in modo che possa accedere alla shell. Fondamentalmente consente agli utenti di inserire comandi e vedere l'output di tali comandi in un'interfaccia basata su testo. Nel terminale vengono eseguiti script di grandi dimensioni scritti per automatizzare ed eseguire attività complesse.


Per accedere al terminale, è sufficiente cercare nella casella di ricerca terminale e fare doppio clic su di esso.

terminale aperto

funzione sottostringa Java

Qui puoi vedere come appare il terminale di Red Hat Linux.

terminale

Script di shell

Di solito, le shell sono interattive, il che significa che accettano comandi come input dagli utenti e li eseguono. Tuttavia, a volte vogliamo eseguire una serie di comandi regolarmente, quindi dobbiamo digitare tutti i comandi ogni volta nel terminale.

Poiché una shell può anche ricevere comandi come input da un file, possiamo scrivere questi comandi in un file ed eseguirli nella shell per evitare questo lavoro ripetitivo. Questi file vengono chiamati Script di shell O Programmi Shell . Gli script di shell sono simili al file batch in MS-DOS. Ogni script di shell viene salvato con `.sh` estensione del file, ad es. myscript.sh.

Uno script di shell ha la sintassi proprio come qualsiasi altro linguaggio di programmazione. Se hai esperienza precedente con qualsiasi linguaggio di programmazione come Python, C/C++ ecc. Sarebbe molto facile iniziare.

Uno script di shell comprende i seguenti elementi:

  • Parole chiave della shell: se, altrimenti, si rompe ecc.
  • Comandi della shell: cd, ls, echo, pwd, touch ecc.
  • Funzioni
  • Flusso di controllo – if..then..else, cicli case e shell ecc.

Perché abbiamo bisogno degli script di shell?

Ci sono molti motivi per scrivere script di shell:

  • Per evitare lavoro ripetitivo e automazione
  • Gli amministratori di sistema utilizzano lo scripting della shell per i backup di routine.
  • Monitoraggio del sistema
  • Aggiunta di nuove funzionalità alla shell, ecc.

Alcuni vantaggi degli script di shell

  • Il comando e la sintassi sono esattamente gli stessi di quelli immessi direttamente nella riga di comando, quindi i programmatori non hanno bisogno di passare a una sintassi completamente diversa
  • Scrivere script di shell è molto più veloce
  • Avvio rapido
  • Debug interattivo ecc.

Alcuni svantaggi degli script di shell

  • Incline a errori costosi, un singolo errore può modificare il comando che potrebbe essere dannoso.
  • Velocità di esecuzione lenta
  • Difetti di progettazione nella sintassi o nell'implementazione del linguaggio
  • Non adatto per compiti grandi e complessi
  • Fornire una struttura dati minima a differenza di altri linguaggi di scripting. eccetera.

Semplice demo di scripting di shell utilizzando Bash Shell

Se lavori su un terminale, qualcosa che attraversi in profondità nelle directory. Quindi per raggiungere alcune directory nel percorso dobbiamo eseguire un comando come questo mostrato di seguito per accedere alla directory python:

Banca dati
accedi alla directory Python:

accedi alla directory Python:

È abbastanza frustrante, quindi perché non possiamo avere un'utilità in cui dobbiamo semplicemente digitare il nome della directory e possiamo saltare direttamente a quella senza eseguire il comando CD ../ comandare ancora e ancora. Salva lo script con nome salto.sh

bash
# !/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 }>

Per ora, non possiamo eseguire il nostro script di shell perché non dispone di permessi. Dobbiamo renderlo eseguibile digitando il seguente comando –

$ chmod +x percorso/del/nostro/file/jump.sh

Ora per renderlo disponibile in ogni sessione del terminale, dobbiamo inserirlo .bashrc file.

.bashrc è uno script di shell che la shell Bash esegue ogni volta che viene avviata in modo interattivo. Lo scopo di un file .bashrc è fornire un luogo in cui è possibile impostare variabili, funzioni e alias, definire il nostro prompt e definire altre impostazioni che vogliamo utilizzare ogni volta che apriamo una nuova finestra di terminale.

Ora apri il terminale e digita il seguente comando:

proposizione logica

$ echo source ~/percorso/del/nostro/file/jump.sh>> ~/.bashrc

Ora apri il tuo terminale e prova la nuova funzionalità di salto digitando il seguente comando-

$ salta nome_dir

proprio come lo screenshot qui sotto:

salta nome_dir

salta nome_dir

Conclusione

In questo articolo abbiamo conosciuto le parti essenziali dei sistemi Linux: il kernel, che controlla tutto, la shell, che ci permette di interagire con il sistema operativo, e il terminale, la nostra interfaccia per impartire comandi. Abbiamo esplorato la riga di comando e le shell grafiche, come BASH, e abbiamo capito che il terminale è il luogo in cui digitiamo i nostri comandi. L'articolo introduceva lo scripting della shell, un modo per automatizzare le attività utilizzando script semplici, e discuteva i vantaggi e gli svantaggi del loro utilizzo. Un esempio pratico ha dimostrato la creazione di uno script per la navigazione rapida nelle directory. Infine, abbiamo visto come far funzionare lo script e renderlo accessibile in ogni sessione del terminale. Questo articolo è una guida per principianti per comprendere e utilizzare le shell Linux e lo scripting delle shell.linux è un buon linguaggio, è scritto in linguaggio Linux