Il termine "shell scripting" viene citato spesso nei forum di Linux, ma molti utenti non lo conoscono. Imparare questo semplice e potente metodo di programmazione può aiutarti a risparmiare tempo, imparare meglio la linea di comando e bandire noiose attività di gestione dei file.
Essere un utente Linux significa giocare con il comando- linea. Piaccia o no, ci sono solo alcune cose che sono fatte molto più facilmente attraverso questa interfaccia che puntando e cliccando. Più usi e impari la riga di comando, più ne vedi il potenziale. Bene, la stessa riga di comando è un programma: la shell. Oggi la maggior parte delle distribuzioni Linux usa Bash, e questo è ciò a cui stai veramente inserendo i comandi.
Ora, alcuni di voi che hanno usato Windows prima di usare Linux potrebbero ricordare i file batch. Questi erano piccoli file di testo che potevi riempire con i comandi da eseguire e Windows li eseguiva a turno. È stato un modo intelligente e pulito per fare alcune cose, come eseguire giochi nel laboratorio informatico della tua scuola quando non è possibile aprire cartelle di sistema o creare scorciatoie. I file batch in Windows, anche se utili, sono un'imitazione a basso costo degli script di shell.
Gli script di shell ci consentono di programmare i comandi in catene e il sistema li esegue come eventi script, proprio come i file batch. Consentono anche funzioni molto più utili, come la sostituzione di comandi. Puoi invocare un comando, come la data, e usarlo come parte di uno schema di denominazione file. È possibile automatizzare i backup e ogni file copiato può avere la data corrente aggiunta alla fine del suo nome. Anche gli script non sono solo invocazioni di comandi. Sono programmi a pieno titolo. Scripting consente di utilizzare le funzioni di programmazione, come "for" loop, if / then / else statements, e così via, direttamente nell'interfaccia del sistema operativo. E non devi imparare un'altra lingua perché stai usando quello che già sai: la linea di comando.
Questo è davvero il potere dello scripting, penso. Si arriva a programmare con comandi che già conosci, mentre si imparano i punti principali dei principali linguaggi di programmazione. Hai bisogno di fare qualcosa di ripetitivo e noioso? Scriptalo! Hai bisogno di una scorciatoia per un comando veramente contorto? Scriptalo! Vuoi creare un'interfaccia della riga di comando davvero facile da usare per qualcosa? Script it!
Prima di iniziare la nostra serie di script, copriamo alcune informazioni di base. Useremo la shell bash, che la maggior parte delle distribuzioni Linux usa in modo nativo. Bash è disponibile anche per gli utenti Mac OS e Cygwin su Windows. Dal momento che è così universale, dovresti essere in grado di scrivere indipendentemente dalla tua piattaforma. Inoltre, purché esistano tutti i comandi referenziati, gli script possono funzionare su più piattaforme con pochi o nessun tweaking richiesto.
Lo scripting può facilmente utilizzare i privilegi di "amministratore" o "superutente", quindi è meglio prova gli script prima di metterli al lavoro. Usa anche il buon senso, ad esempio assicurandoti di avere i backup dei file su cui stai per eseguire uno script. È anche molto importante usare le opzioni giuste, come -i per il comando rm, in modo che sia necessaria l'interazione. Questo può prevenire alcuni brutti errori. Come tale, leggi gli script che scarichi e fai attenzione ai dati che hai, nel caso in cui le cose vadano storte.
Al loro centro, gli script sono solo semplici file di testo. Puoi usare qualsiasi editor di testo per scriverli: gedit, emacs, vim, nano ... Questa lista potrebbe continuare. Assicurati di salvarlo come testo normale, non come testo ricco o documento Word. Dato che adoro la facilità d'uso fornita da nano, la userò.
Gli script vengono eseguiti come i programmi e, per far ciò, devono disporre delle autorizzazioni appropriate. È possibile rendere eseguibili gli script eseguendo il seguente comando su di esso:
chmod + x ~ / somecrazyfolder / script1
Ciò consentirà a chiunque di eseguire quel particolare script. Se vuoi limitare il suo utilizzo solo al tuo utente, puoi usare questo:
chmod u + x ~ / somecrazyfolder / script1
Per eseguire questo script, è necessario effettuare il cd nella directory corretta e quindi eseguire lo script in questo modo:
cd ~ / somecrazyfolder
./ script1
Per rendere le cose più convenienti, puoi inserire script in una cartella "bin" nella tua home directory:
~ / bin
In molte distribuzioni moderne, questa cartella non viene più creata di default, ma puoi creare esso. Questo di solito è dove sono archiviati i file eseguibili che appartengono al tuo utente e non ad altri utenti. Inserendo qui gli script, puoi semplicemente eseguirli digitandone il nome, proprio come gli altri comandi, invece di doverli spostare e usare il prefisso './'.
Prima di nominare uno script, però, dovresti il seguente comando per verificare se hai un programma installato che usa quel nome:
quale [comando]
Un sacco di persone chiamano i loro primi script "test", e quando provano a eseguirlo nella riga di comando, niente accade. Questo perché è in conflitto con il comando test, che non fa nulla senza argomenti. Accertati sempre che i nomi dei tuoi script non siano in conflitto con i comandi, altrimenti potresti trovarti a fare cose che non intendi fare!
Come ho detto prima, ogni file di script è essenzialmente testo normale. Ciò non significa che puoi scrivere ciò che vuoi, volente o nolente, però. Quando si tenta di eseguire un file di testo, le shell analizzeranno attraverso di essi per capire se sono script o meno e come gestire tutto correttamente. Per questo motivo ci sono alcune linee guida che devi sapere.
The Hash-Bang Hack
Quando una shell analizza attraverso un file di testo, il modo più diretto per identificare il file come script è creare la prima linea:
# ! / bin / bash
Se usi un'altra shell, sostituisci qui il suo percorso. Le righe di commento iniziano con hashes (#), ma aggiungendo bang (!) E il percorso della shell dopo che è una sorta di hack che ignorerà questa regola dei commenti e imporrà lo script di eseguire con la shell a cui questa linea punta.
Nuova riga = Nuovo comando
Ogni nuova riga deve essere considerata un nuovo comando o un componente di un sistema più grande. Le istruzioni If / then / else, ad esempio, prenderanno il controllo di più righe, ma ogni componente di quel sistema si trova in una nuova riga. Non lasciare che un comando passi alla riga successiva, poiché questo può troncare il comando precedente e darti un errore sulla riga successiva. Se il tuo editor di testi lo sta facendo, dovresti disattivare il text-wrapping per essere sicuro. È possibile disattivare la visualizzazione del testo in nano bit premendo ALT + L.
Commento Spesso con #s
Se si avvia una riga con un #, la linea viene ignorata. Questo lo trasforma in una riga di commento, in cui puoi ricordare a te stesso l'output del comando precedente o quale sarà il comando successivo. Di nuovo, disattiva il ritorno a capo del testo o interrompi il commento in più righe che iniziano tutte con un hash. Usare molti commenti è una buona pratica da tenere, in quanto consente a te e alle altre persone di modificare i tuoi script più facilmente. L'unica eccezione è il suddetto Hash-Bang hack, quindi non seguire #s con! S. ; -)
I comandi sono circondati da parentesi
Nei giorni precedenti, le sostituzioni di comando venivano eseguite con segni di graduazione singoli (', condivide il tasto ~). Non ci stiamo ancora toccando, ma poiché la maggior parte delle persone esplora ed esplora dopo aver imparato le basi, è probabilmente una buona idea menzionare che dovresti usare le parentesi. Questo è principalmente dovuto al fatto che quando si nidifica - metti i comandi all'interno di altri comandi - le parentesi funzionano meglio.
Iniziamo con un semplice script che ti permette di copiare file e aggiungere date alla fine del nome del file. Chiamiamolo "datecp". Per prima cosa, controlliamo se quel nome è in conflitto con qualcosa:
Puoi vedere che non c'è output di quel comando, quindi siamo tutti impostati per usare questo nome.
Creiamo un file vuoto nel ~ / cartella bin:
touch ~ / bin / datecp
E, cambiamo ora il permesso, prima di dimenticare:
Iniziamo quindi a costruire il nostro script. Apri quel file nel tuo editor di testo preferito. Come ho detto, mi piace la semplicità di nano.
nano ~ / bin / datecp
E, andiamo avanti e inseriamo la prima riga dei prerequisiti e un commento su ciò che fa questo script.
Avanti, dichiariamo una variabile. Se hai mai preso l'algebra, probabilmente sai che cos'è. Una variabile ci consente di memorizzare informazioni e fare cose con esso. Le variabili possono "espandersi" quando si fa riferimento altrove. Cioè, invece di mostrare il loro nome, visualizzeranno i loro contenuti memorizzati. In seguito puoi dire a quella stessa variabile di memorizzare informazioni diverse, e qualsiasi istruzione che si verifica dopo di ciò userà le nuove informazioni. È un segnaposto davvero stravagante.
Che cosa inseriremo in una variabile? Bene, conserviamo la data e l'ora! Per fare ciò, chiameremo il comando date.
Dai un'occhiata allo screenshot qui sotto per come costruire l'output del comando date:
Puoi vedere che aggiungendo diverse variabili che iniziano con%, puoi cambiare l'output del comando in quello che vuoi. Per ulteriori informazioni, puoi consultare la pagina del manuale per il comando date.
Usiamo l'ultima iterazione del comando date, "data +% m_% d_% y-% H.% M.% S", e usalo nel nostro script.
Se dovessimo salvare questo script adesso, potremmo eseguirlo e ci darebbe l'output del comando date come ci aspetteremmo:
Ma facciamo qualcosa di diverso. Diamo un nome variabile, come date_formatted a questo comando. La sintassi corretta per questo è la seguente:
variable = $ (comando -options argomenti)
E per noi, lo costruiamo in questo modo:
date_formatted = $ (date +% m_% d_% y-% H.% M.% S)
Questo è ciò che chiamiamo sostituzione di comando. In pratica, diciamo bash che ogni volta che appare la variabile "date_formatted", per eseguire il comando all'interno delle parentesi. Quindi, qualsiasi output fornito dai comandi dovrebbe essere visualizzato al posto del nome della variabile, "date_formatted".
Ecco uno script di esempio e il suo output:
Si noti che ci sono due spazi nell'output. Vengono visualizzati entrambi gli spazi tra le virgolette del comando echo e lo spazio davanti alla variabile. Non utilizzare spazi se non vuoi che vengano visualizzati. Si noti inoltre che senza questa riga "echo" aggiunta, lo script non darebbe assolutamente alcun output.
Torniamo al nostro script. Aggiungiamo ora la parte di copia del comando.
cp -iv $ 1 $ 2. $ date_formatted
Questo invocherà il comando copy, con le opzioni -i e -v. Il primo ti chiederà la verifica prima di sovrascrivere un file, e quest'ultimo mostrerà ciò che è inattivo sulla riga di comando.
Successivamente, puoi vedere che ho aggiunto l'opzione "$ 1". Quando si esegue lo scripting, un simbolo di dollaro ($) seguito da un numero indicherà l'argomento numerato dello script quando è stato richiamato. Ad esempio, nel seguente comando:
cp -iv Trogdor2.mp3 ringtone.mp3
Il primo argomento è "Trogdor2.mp3" e il secondo argomento è "ringtone.mp3".
Guardando indietro al nostro script, possiamo vedere che stiamo facendo riferimento a due argomenti:
Ciò significa che quando eseguiremo lo script, avremo bisogno di fornire due argomenti perché lo script funzioni correttamente. Il primo argomento, $ 1, è il file che verrà copiato e sostituito dal primo argomento del comando "cp -iv".
Il secondo argomento, $ 2, fungerà da file di output per lo stesso comando. Ma puoi anche vedere che è diverso. Abbiamo aggiunto un periodo e abbiamo fatto riferimento alla variabile "date_formatted" di cui sopra. Curioso come funziona?
Ecco cosa succede quando viene eseguito lo script:
Puoi vedere che il file di output è elencato come qualunque cosa ho inserito per $ 2, seguito da un punto, poi l'output del comando date ! Ha senso, vero?
Ora quando eseguo il comando datecp, questo script verrà eseguito e mi consentirà di copiare qualsiasi file in una nuova posizione e aggiungere automaticamente la data e l'ora alla fine del nome file. Utile per l'archiviazione di materiale!
Lo scripting della shell è il fulcro del tuo sistema operativo. Non è necessario imparare un nuovo linguaggio di programmazione per farlo accadere. Prova a scrivere script con alcuni comandi di base a casa e inizia a pensare a cosa puoi usare per questo.
Sei uno script? Hai qualche consiglio per i neofiti? Condividi i tuoi pensieri nei commenti! C'è altro in arrivo in questa serie!
Ubuntu 16.04 rende ancora più interessante l'Ubuntu
Ubuntu non ha avuto la migliore reputazione tra gli utenti Linux negli ultimi anni, alcuni addirittura arrivando a definirlo "noioso". Se sei stato riluttante a provarlo, allora tieni i tuoi posti a sedere - Ubuntu 16.04 "Xenial Xerus" non è solo una versione eccitante, ma che ha il potenziale per essere un punto di svolta per l'ecosistema Linux.
Che cos'è Microsoft .NET Framework e Perché è installato sul mio PC?
Se usi Windows da molto tempo, probabilmente hai sentito parlare di Microsoft. NET, probabilmente perché un'applicazione ti ha chiesto di installarlo o l'hai notato nell'elenco dei programmi installati. A meno che tu non sia uno sviluppatore, non hai bisogno di molte conoscenze per farne uso. Hai solo bisogno che funzioni.