Shell, Bash e script: tutto su Shell Scripting.

In questa nuova opportunità (Entry # 8) su "Impara lo scripting della shell" ci concentreremo più sulla teoria che sulla pratica. cioè, non installeremo o studieremo un codice o installeremo un software specifico (pacchetto), ma approfondiremo quello che è il mondo Shell Scripting propriamente parlando, attraverso le risposte a piccole ma dirette domande, che di seguito vengono riportate, per chiarire fin qui molto di quanto è stato insegnato, che non fa riferimento direttamente al codice interno che viene programmato:

Shell Scripting

Cos'è la shell in un sistema operativo GNU / Linux?

Shell che in spagnolo significa CONCHA (shell, cover, protection). Applicato questo termine nei sistemi operativi si riferisce all'interprete dei comandi del sistema operativo. In generale si tratta di un'interfaccia testuale ad alte prestazioni, manifestata sotto forma di Terminale (Console) ed essenzialmente utilizzata per 3 importanti aree di lavoro:

1.- Gestisci il sistema operativo,
2.- Eseguire le applicazioni e interagire con esse, e
3.- Serve come ambiente di programmazione di base.

Molti così, GNU / Linux sono ancora più efficientemente gestiti modificando i loro file di configurazione, tramite Terminale. Come regola generale, questi si trovano sul percorso di destinazione: «/eccetera"e all'interno di directory specifiche per ciascuna applicazione. Ad esempio, il programma Lilo (che sta per Linux Loader) viene configurato modificando il file di testo che si trova e chiamato come "/Etc/lilo/lilo.conf". Nel caso di programmi (applicazioni), questi vengono lanciati (eseguiti / attivati) scrivendo il nome dell'eseguibile, se si trova nel percorso (percorso di default) per tutti gli eseguibili, come normalmente è "/ Usr / bin" oppure digitando il nome dell'eseguibile preceduto da: ./, dalla directory in cui si trovano.

Tutto questo è ben noto a qualsiasi utente Shell. Tuttavia, non così conosciute e apprezzate sono le sue capacità come ambiente di programmazione. Gli script (programmi) creati nella Shell non devono essere compilati. La Shell li interpreta riga per riga. Pertanto, questi sono conosciuti o denominati come Shells Scripts e possono variare da semplici comandi a complesse serie di istruzioni per l'avvio del sistema operativo stesso. In generale, hanno una sintassi (costruzione, ordinamento) abbastanza pulita (ovvia), rendendoli un buon punto di partenza per iniziare nel mondo della programmazione.

Cos'è lo scripting della shell?

È la tecnica (abilità / destrezza) di progettare e creare Script (file di automazione delle attività) utilizzando una shell (preferibilmente) di un sistema operativo o un editor di testo (grafico o terminale). Questo è un tipo di linguaggio di programmazione generalmente interpretato. Cioè, mentre la maggior parte dei programmi sono compilati (codificati), perché vengono convertiti in modo permanente in un codice specifico (speciale) prima che possano essere eseguiti (processo di compilazione), uno script di shell rimane nella sua forma originale (il suo codice fonte di testo) e vengono interpretati comando per comando ogni volta che vengono eseguiti. Sebbene sia possibile che anche gli script possano essere compilati, sebbene non sia normale.

Quali sono le caratteristiche dei programmi basati sulla programmazione in Shell Scripting?

1.- Sono più facili da scrivere (programma), ma con un costo di elaborazione maggiore quando vengono eseguiti.

2.- Usano interpreti invece di compilatori per eseguire

3.- Hanno una relazione di comunicazione con componenti scritti in altri linguaggi di programmazione.

4.- I file che li contengono vengono memorizzati come testo normale.

5.- Il progetto finale (codice) è solitamente più piccolo di quello che sarebbe l'equivalente in un linguaggio di programmazione compilato.

Quali sono i tipi di linguaggi più diffusi in Shell Scripting?

1.- Linguaggio di controllo delle attività e della shell:

a) cmd.exe (Windows NT, Windows CE, OS / 2),
b) COMANDO.COM (DOS, Windows 9x),
c) csh, Bash, AppleScript, sh,
d) JScript tramite Windows Script Host,
e) VBScript tramite Windows Script Host,
f) REXX, tra molti altri.

2.- Scripting GUI (lingue macro):

a) Tasto di scelta rapida automatico,
b) Autoit,
c) Aspettatevi,
d) Automator, tra gli altri.

3.- Linguaggio di scripting di applicazioni specifiche:

a) ActionScript in Flash,
b) MATLAB,
c) script mIRC,
d) QuakeC, tra gli altri.

4.- Programmazione web (per pagine dinamiche):

a) Sul lato server:

- PHP,
- ASP (Active Server Pages),
- JavaServer Pages,
- Fusione fredda,
- IPTSCRAE,
- Lazo,
- MIVA Script,
- SMX,
- XSLT, tra gli altri.

b) Sul lato client:

- JavaScript,
- JScript,
- VBScript,
- Tcl, tra gli altri.

5.- Linguaggi di elaborazione testi:

- AWK,
- Perl,
- Sete,
- XSLT,
- Bash, tra gli altri.

6.- Linguaggi dinamici di uso generale:

- APL,
- Boo,
- Dylan,
- Ferite,
- Groovy,
- IO,
- Lisp,
- Lua,
- MUMPS (M),
- NewLISP,
- Nuva,
- Perl,
- PHP,
- Python,
- Rubino,
- Schema,
- Smalltalk,
- SuperCard,
- Tcl,
- Rivoluzione, tra gli altri.

Cos'è Bash in GNU / Linux?

È un programma per computer la cui funzione è interpretare gli ordini. Si basa su Shell Unix ed è compatibile con POSIX. È stato scritto per il progetto GNU ed è la shell predefinita per la maggior parte delle distribuzioni Linux.

Cos'è uno script shell in GNU / Linux?

Gli script della shell sono estremamente utili. È una buona idea scrivere quelle esigenze che abbiamo e poi modificare gli script che fanno questo lavoro per noi. Ormai è tempo di chiederti che cos'è esattamente uno script. È un file di testo, contenente una serie di comandi della shell, che il sistema esegue in modo ordinato, dall'alto verso il basso. Per modificarli, hai solo bisogno di un editor di testo, come Emacs, Vi, Nano, tra i tanti esistenti. Vengono salvati con l'estensione “.sh” (o senza di essa, in alcuni casi) e vengono eseguiti dalla Shell utilizzando il comando: sh script name.sh. Gli script si comportano allo stesso modo dei comandi della shell.

L'approccio didattico che uso personalmente "Impara lo scripting della shell" È molto pratico e diretto, cioè esaminare uno Script completamente funzionante, scomporlo, studiarlo frase per frase, riga per riga, comando per comando, variabile per variabile, fino a capire come ogni elemento funziona separatamente e come si impegna nel codice generale. È una specie di Reverse Engineering o Software Reengineering. Tutto questo con lo scopo di appropriarsi della conoscenza, migliorarla (ottimizzarla) e condividerla, a beneficio collettivo e per una migliore amministrazione e ottimizzazione dei Sistemi Operativi gratuiti.

Come funziona e funziona in una shell GNU / Linux?

Il primo passo per lavorare con una shell è eseguire una shell. Ciò che sembra una verità lapalissiana ha la sua ragione d'essere. In alcune distribuzioni GNU / Linux molto orientate all'utente finale, la shell è abbastanza nascosta. Normalmente, si chiama: Konsole, Terminal, Terminal X o qualcosa di simile. Un'altra opzione è utilizzare una console virtuale. Utilizzando: Ctrl + Alt + f1 o f2 o da f3 a f7 o f8, a seconda della distribuzione GNU / Linux che usi. La Shell più utilizzata in GNU / Linux è Bash, sebbene ce ne siano altre, come ksh o C Shell. Nel mio caso, molto particolare per le mie pubblicazioni, utilizzo Bash Shell.

Dato uno script creato in Bash Shell chiamato hello_world.sh si può spiegare quanto segue:

Contenuto:

#! / Bin / bash
echo ciao mondo

Abbattersi:

Prima riga del copione
#! / Bin / bash

Indica il programma che lo script deve eseguire. Se non è possibile trovare il programma, si verificherà un errore.

Seconda riga della sceneggiatura
echo ciao mondo

Esegui il comando echo con gli argomenti Hello World, facendoli visualizzare sullo schermo.

esecuzione: Possiamo eseguire lo script in due modi

Invocare l'interprete per eseguire lo script:
# bash hello_world.sh

Può anche essere eseguito come:
# sh hello_world.sh

Ma poiché la tua shell corretta non viene invocata, potrebbe funzionare a metà. Idealmente, la Shell invocata nella prima riga è quella usata per eseguirla.

Puoi anche eseguire lo script direttamente come segue:
# ./hello_world.sh

Nota: ./ indica l'esecuzione dalla directory corrente.

Il resto che resta da analizzare è il codice che ci inserisci. Spero che come sempre vi piaccia (alcuni più di altri, in base alle esigenze di apprendimento e conoscenza) questa serie di Shell Scripting.

Ci sono molti buoni link su questo argomento sul web, ma vi lascio questa piccola guida che si trova proprio qui DesdeLinux.net E quest'altro Guida esterna.

Fino al prossimo post!


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   d4ny suddetto

    Lilo .. Linux Loader .. il resto ottime informazioni .. grazie .. salu2 d4ny.-

  2.   Ing. José Albert suddetto

    Saluti a tutti coloro che stanno seguendo il Corso Online di "Learn Shell Scripting" presto continueremo con altri script di base per continuare ad appropriarci della conoscenza e continuare a socializzarla a tutti.

    Spero che rimani sintonizzato perché presto inizierò con codici più avanzati ma esposti in un modo visivamente comprensibile nonostante la sua complessità.

    Ricorda che con Shell Scripting puoi fare molte cose complesse che sono multipiattaforma (diverse distribuzioni) usando file molto piccoli. Vi lascio questo piccolo screencast di qualcosa che vi insegnerò presto, a chi continua a guardare il corso, e che con soli 50Kb promette molto! Ed è solo la metà di ciò che si può fare con Shell Scripting.

    LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    Vedi Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

    1.    Alberto cardona suddetto

      Ciao, il tuo contributo è incredibile, davvero grazie mille !!
      Ho un piccolo dubbio, posso programmare un compilatore con bash?
      O almeno un analizzatore lessicale?
      ha quel potere?

  3.   Ing. José Albert suddetto

    Saluti a tutti coloro che stanno seguendo il Corso Online di "Learn Shell Scripting" presto continueremo con altri script di base per continuare ad appropriarci della conoscenza e continuare a socializzarla a tutti. Spero che rimani sintonizzato perché presto inizierò con codici più avanzati ma esposti in un modo visivamente comprensibile nonostante la sua complessità.

    Ricorda che con Shell Scripting puoi fare molte cose complesse che sono multipiattaforma (diverse distribuzioni) usando file molto piccoli. Vi lascio questo piccolo screencast di qualcosa che vi insegnerò presto, a chi continua a guardare il corso, e che con soli 50Kb promette molto! Ed è solo la metà di ciò che si può fare con Shell Scripting.

    LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    Vedi Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

  4.   Alberto suddetto

    Hola Jose,
    Innanzitutto grazie per aver condiviso la tua conoscenza. I tuoi articoli sono molto interessanti.

    Due cose, penso sia molto importante usare le virgolette doppie "Hello World" e avere un output pulito del nostro script con exit 0

  5.   Ing. José Albert suddetto

    Grazie per i vostri contributi, nel prossimo Script vedrete l'uso di exit 0, break e altri!

  6.   willarmand suddetto

    Saluti.
    Molto interessante, lo fai sembrare semplice; Ora, mi sono imbattuto nel fatto che non riesco a programmare in Linux con cron o at, lo shutdown / suspend / hibernate, con il conseguente avvio automatico usando il comando rtc wake, non so se uno script con quel comando aiuterebbe, o seguirebbero cron e t senza fare nulla, o semplicemente non può essere fatto, o è fatto in modo diverso, o sono molto ambizioso, ma in Windows è relativamente semplice farlo. Voglio passare a Linux, ma è importante per me programmare l'arresto / sospensione / ibernazione e avviare il PC da solo. Saluti.

  7.   Ing. José Albert suddetto
  8.   willarmand suddetto

    Grazie, li leggerò a fondo, qualcosa mi aiuterà. Saluti.

  9.   Edoardo Cuomo suddetto

    Qualche tempo fa ho avviato un progetto, che credo sia unico nel suo genere. È un prototipo per Framewok Bash. Richiede solo Bash sul sistema.
    Se qualcun altro è interessato, è invitato a provarlo e collaborare!

    https://github.com/reduardo7/bashx

    Saluti!

    1.    lucertola suddetto

      Caro Eduardo, penso che sia un bellissimo progetto, forse potresti condividerlo con l'intera comunità di desdelinux, ricorda che puoi pubblicare un articolo sul tuo progetto sul nostro sito, se non sai come farlo ti consiglio di leggere https://blog.desdelinux.net/guia-redactores-editores/ dove sono le migliori pratiche per la creazione di articoli in desdelinux e la procedura da eseguire. Forse per la comunità è abbastanza utile conoscere prima i vantaggi del proprio progetto e poi imparare come fare questo tipo di cose. Invitiamo voi e invitiamo gli altri a condividere i loro progetti con noi e con la grande comunità che ci circonda.

  10.   Immagine segnaposto Miguel Urosa Ruiz suddetto

    Ciao, buongiorno.
    Sono nuovo nel mondo dell'amministrazione di macchine Linux e volevo sapere cosa mi consigliate per questo: ksh, bash, perl, php, python….
    Grazie mille e cordiali saluti.
    Michael.