Come configurare smartphone e PC. Portale informativo
  • casa
  • TV (Smart TV)
  • Guida allo scripting Bash. Scrittura di script nei codici sorgente degli script Bash Shell

Guida allo scripting Bash. Scrittura di script nei codici sorgente degli script Bash Shell

Nella comunità degli amministratori di sistema e degli utenti ordinari di Linux, la pratica di scrivere script Bash è spesso famosa per facilitare e semplificare l'esecuzione di obiettivi specifici nel sistema operativo Linux. In questo articolo esamineremo la scrittura di script in Bash, esamineremo gli operatori di base e come funzionano, per così dire, gli script Bash da zero. In poche parole, una volta hai scritto l'ordine degli eventi che devono essere eseguiti, annotato i dati e così via, quindi scrivi facilmente e semplicemente un singolo piccolo comando e tutte le procedure vengono eseguite secondo necessità.

È possibile andare oltre e programmare l'esecuzione automatica di uno script. Se sei già un utente più esperto, molto probabilmente, molto spesso raggiungi vari obiettivi tramite il terminale. Questo è solo un esempio e ci sono molte azioni simili, anche eseguire il backup e caricare i file copiati su un server remoto. Ci sono spesso attività per le quali è necessario eseguire diversi comandi a turno, ad esempio, per aggiornare il sistema, è necessario prima aggiornare i repository e solo successivamente scaricare le nuove versioni dei pacchetti.

Questa è una shell di comandi in cui hai l'opportunità di impartire diversi comandi che inizieranno a svolgere vari lavori ad alta velocità e fruttuosamente. Assolutamente tutta la potenza del sistema operativo Linux sta nell'uso del terminale. Pertanto, per non digitare più volte gli stessi comandi, è possibile utilizzare gli script. Questo è molto comodo, devi semplicemente combinare diversi comandi che hanno qualche effetto e poi eseguirli con lo stesso comando o anche usando una scorciatoia. Per il sistema operativo Linux sono stati creati numerosi script che vengono eseguiti in diverse shell di comandi. Bene, in linea di principio, ovviamente lo capisci già.

Il sistema operativo considera eseguibili solo i file a cui è assegnata la caratteristica di eseguibilità. E l'interprete pronuncia riga per riga ed esegue tutte le direttive presenti nel file. Ma se per loro è impostata la caratteristica di eseguibilità, per avviarli viene utilizzato un programma per computer specializzato, un interprete, in particolare, la shell bash. Possiamo eseguirlo come qualsiasi altro programma utilizzando un server terminale, oppure possiamo eseguire una shell e dirle quale file eseguire.

In questo caso non è nemmeno necessario un flag di eseguibilità. Vengono invece utilizzate firme di inizio file e flag speciali. Abbiamo diversi metodi per abilitare lo script nel sistema operativo Linux. Il sistema operativo Linux praticamente non utilizza un'estensione di file per determinarne il tipo a livello di sistema. I file manager possono farlo, ma non sempre. Il sistema operativo considera eseguibili solo i file a cui è assegnata la caratteristica di eseguibilità. Questi sono file normali che contengono testo.

Script Bash di Linux per manichini

Il costrutto bash può essere descritto in 7 obblighi di tipo simile: "richiamare l'interprete dei comandi - il corpo dello script bash - la fine dello script". Gli script vengono scritti con il supporto di vari editor di testo e vengono archiviati come dati di testo del computer. Ma, per renderlo più comodo, li memorizzo insieme all'estensione "*.sh". Ma consideriamo tutto questo con l'esempio di un obiettivo specifico. C'è un uso che deve essere lanciato con un insieme di caratteristiche abbastanza ampio. Dovrai iniziare spesso e sei troppo pigro per inserire queste caratteristiche ogni volta. Per essere più specifici, vediamo come appare questo effetto:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u utente -c 100

Per questo script, utilizziamo l'interprete bash. La procedura principale di cui io e te abbiamo bisogno è chiamare l'interprete. Apri un editor di testo e scrivi il codice.

Aggiungiamo questa operazione tenendo conto delle variabili inserite:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u $utente -c $contanti

Il testo che inseriremo nei log sarà così: text=”Il saldo dell'utente “user” è stato reintegrato in tempo con rubli “contanti””

L'argomento del testo varia a seconda delle variabili utente, contante e temporale

if [ -e /home/Admin/scripts/sgconf/sgconf.log] then echo testo >> /home/Admin/scripts/sgconf/sgconf.log else echo testo > /home/Admin/scripts/sgconf/sgconf.logfi

Ora, quando dobbiamo depositare denaro a qualcuno, eseguiamo lo script con il comando “sh sgconf.sh”, inseriamo il nome del pagatore e l'importo del pagamento. Nessuna fila lunga, nessun mal di testa con l'inserimento costante degli stessi valori.

Crea uno script bash nel sistema operativo Linux

Per scrivere un semplice script in bash, dobbiamo eseguire le seguenti procedure ordinarie. Creiamo un file senza significato sulla riga di comando di Linux (lo chiameremo firstscript per esempio) e apriamolo per la modifica nel nostro editor di testo preferito (vi/vim, nano, gedit e così via). Per sviluppare una sceneggiatura non avrai bisogno di molti sforzi, ma per abbozzare una sceneggiatura (programma), dovrai studiare varia letteratura ausiliaria. Descriveremo le basi della scrittura di script, quindi iniziamo, ma se non sai cos'è un terminale e come usarlo, allora questo è il posto che fa per te. All'inizio, per scrivere bash, dobbiamo creare una directory per i nostri script e un file in cui scriveremo tutto, per questo apriamo il terminale e creiamo una directory.

Passa alla directory appena creata

E crea un file

sudo gedit script.sh

Nel mio esempio, creerò uno script di aggiornamento del sistema e lo scriverò in questo file. Apriremo l'editor di testo gedit, mi piace di più vim, ma non sarà generalmente accettato da voi, quindi lo mostrerò su quello standard.

sudo apt update; sudo apt aggiornamento completo;

Rendere eseguibile il file di script (se non lo è già). Eseguire script sh dalla riga di comando è semplice. Esegui lo script bash di Linux.

chmod +x script.sh

Eseguiamo lo script semplicemente specificandone il percorso:

percorso/a/script.sh

Se lo script si trova nella directory corrente, è necessario specificare ./ prima del nome del file dello script:

A volte sono necessari i diritti di superutente per eseguire uno script, quindi basta scrivere il comando sudo prima dello script:

sudo./script.shsudo percorso/a/script.sh

Ovviamente puoi avviare lo script specificando direttamente l'interprete: sh, bash e altri:

bash script.shsh percorso/a/script.sh

Come puoi vedere, avviare uno script sh in Linux è un'operazione abbastanza comune, anche se non hai ancora molta dimestichezza con il terminale. Esistono davvero molti script e potrebbe essere necessario eseguirne alcuni. In questa guida, abbiamo esaminato gli utili script bash di Linux che puoi utilizzare quando usi il sistema operativo Linux. In questo articolo, abbiamo esaminato gli utili script bash di Linux che puoi utilizzare quando lavori con il sistema. Alcuni di essi sono costituiti da più righe, alcuni sono disposti in un'unica riga. Esistono sia frammenti minori che puoi utilizzare nei tuoi script, sia script di dialogo completi per lavorare con essi tramite la console.

Prima di tutto, scopriamo di cosa si tratta sceneggiatura e perché è necessario.

Copione tradotto dall'inglese - scenario. Tutti guardiamo film, molti di noi guardano spettacoli teatrali. Per realizzare un film/opera teatrale, gli sceneggiatori scrivono per loro delle sceneggiature, in base alle quali gli attori interpretano i loro ruoli in scena, scena per scena, da cui si compone il film/opera teatrale. Il lavoro di creazione di una sceneggiatura è piuttosto scrupoloso, dove è necessario tenere conto di tutto nei minimi dettagli, in modo che alla fine gli artisti possano realizzare ciò che lo sceneggiatore intendeva e lo spettatore possa vedere l'opera completa.

Allo stesso modo, gli script vengono scritti per eseguire un elenco di attività che l'utente mette insieme (codice) per renderle più facili e veloci da completare sul sistema operativo. Per scrivere semplici script non è affatto necessario avere una formazione da programmatore.

Per prima cosa, creiamo quello più semplice script-Shell per aggiornare il sistema.

Eseguirò tutte le azioni con il sistema Ubuntu, ma sono applicabili anche ad altri sistemi Linux, derivato da Ubuntu. Per questo abbiamo bisogno di: Editor di testo per riempirlo con le attività necessarie per creare uno script (codice) e terminale- per eseguire lo script creato. Questi strumenti sono installati in qualsiasi distribuzione Linux predefinito.

Quindi, apri un editor di testo Gedit e inserisci in esso i primi caratteri richiesti chiamati shebang.
shebang nella programmazione, questa è una sequenza di due caratteri: un cancelletto e un punto esclamativo ( #! ) all'inizio del file di script. E aggiungi a questi caratteri senza spazi /bin/sh- l'interprete su cui verrà eseguito lo script. /bin/sh- questo è di solito Conchiglia Bourne o un interprete della riga di comando compatibile che passa "percorso/allo/script" come primo parametro.
La prima riga richiesta dello script sarà simile alla seguente:

# Il mio primo script di aggiornamento di Ubuntu

Il segno cancelletto (#) all'inizio della riga rende chiaro all'interprete/terminale che questa riga non ha bisogno di essere letta ed eseguita. La riga è necessaria nel codice di questo script in modo che il creatore dello script sappia cosa farà in questo segmento/scena nel codice, in modo da non confondersi in futuro quando ci saranno molte righe simili. Tali linee con un segno di cancelletto sono chiamate - commentata .

aggiornamento sudo apt
sudo apt upgrade -y

-y al termine del secondo comando chiarisce all'interprete/terminale che tale azione/comando deve essere eseguita in automatico, senza ulteriore conferma da parte dell'utente tramite pressione di un tasto accedere. - abbreviazione di inglese , cioè. .

È tutto. Il tuo primo script è stato creato. Dovresti ottenere qualcosa come l'immagine:


Tutto ciò che resta è salvare il file/script creato e consegnarlo Nome con una proroga obbligatoria alla fine - .sh. Estensione .sh assegnato al file eseguibile.
Gli ho dato Nome - aggiornamento.sh, risparmiando Cartella Inizio utente:


Affinché il file/script creato sia eseguibile, è necessario concedergli l'autorizzazione per farlo. Ci sono due modi per farlo.

1. Esegui il seguente comando nel terminale:

sudo chmod +x update.sh

2. Oppure apri il file manager in Cartella Inizio(dove hai salvato lo script creato), fai clic con il pulsante destro del mouse sul file, nel menu contestuale - Proprietà - Diritti e attiva l'elemento - Prestazione: Consenti l'esecuzione del file come programma:


Per eseguire lo script creato, è necessario aprire il terminale (come ho scritto all'inizio dell'articolo che il terminale è un attributo/strumento necessario per l'esecuzione dello script), inserire sh, separato da uno spazio il nome dello script - aggiornamento.sh e premere il tasto accedere:


Oppure nel terminale in cui entriamo sh e trascinare dal file manager il file creato con lo script (anch'esso separato da uno spazio):


Una volta visualizzato il percorso del file dopo il comando sh e spazio, basta premere il tasto accedere(Invio) per eseguire un aggiornamento del sistema:


Ora in qualsiasi momento puoi aggiornare il sistema utilizzando il tuo script.

Sì, qualcuno potrebbe obiettare che aggiornare il sistema non è difficile da fare eseguendo questi due comandi da terminale, perché gonfiarsi e creare qualche script? Giusto. Ma questo è un esempio di creazione di una semplice sceneggiatura per dimostrare che “non sono gli dei a bruciare le pentole” 😃.

Avendo imparato a scrivere e utilizzare semplici script, è possibile creare uno script per configurare il sistema, in modo che, se il sistema viene reinstallato, è possibile utilizzare lo script creato senza dover cercare ogni volta in Internet siti con impostazioni simili.

Molti di voi molto probabilmente utilizzano siti di configurazione del sistema, come quelli che pubblicherò dopo la prossima versione. Ubuntu - Ubuntu dopo l'installazione o siti simili. Apri uno di questi siti: , quindi un editor di testo per creare uno script.
Ad esempio, ho creato il seguente vuoto.

In un editor di testo, inserisci la prima riga richiesta:

# Configurazione di Ubuntu dopo l'installazione
# Aggiornamento del sistema

Di seguito sono riportati i comandi di aggiornamento del sistema:

aggiornamento sudo apt
sudo apt upgrade -y

Riga descrittiva: Aggiunta di repository:

# Aggiunta di repository

E aggiungi i repository necessari per un'ulteriore installazione del software:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y

Dopo aver aggiunto i repository necessari (ripeto, potresti avere i tuoi repository, ho un esempio), devi aggiornare il sistema:

Riga descrittiva:

# Aggiornamento del sistema dopo aver collegato i repository

E il comando da eseguire:

aggiornamento sudo apt

Ora che i repository sono stati aggiunti e il sistema è stato aggiornato, è il momento di installare i programmi:

# Installazione di programmi

Per installare i programmi, basta inserire il comando una volta sudo apt install, quindi aggiungi tutti i programmi che desideri in questa riga, separati da uno spazio, l'importante è che siano composti correttamente. Se un programma è composto da più parole, il suo comando deve essere monolitico, cioè tutte le parole in esso contenute devono essere inserite tramite un trattino, ad esempio: strumento di modifica dell'unità:

sudo apt installa il mio indicatore meteo telegramma skype lm-sensors hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

Installazione di codec aggiuntivi

# Multimedia e codec

sudo apt install ubuntu-restricted-extras -y

Disabilitazione degli errori di sistema

# Disabilita la segnalazione degli arresti anomali del sistema

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/apport"

Bene, probabilmente è tutto. Questo file di script generato dovrebbe assomigliare a questo:


È necessario salvarlo (fare clic sul pulsante Salva) e dare Nome con estensione .sh. l'ho chiamato Impostazioni\Ubuntu.sh(puoi nominarlo diversamente, ma assicurati di utilizzare l'estensione .sh):


Rendiamo eseguibile lo script creato:

sudo chmod +x Setup\Ubuntu.sh

Per eseguire lo script creato, accedere al terminale sh e il nome dello script creato separato da uno spazio, oppure sh, barra spaziatrice e trascina il file creato nel terminale, come spiegato in precedenza nello script più semplice e premi il tasto accedere, per realizzarlo.

Nota. Barra rovesciata al comando Impostazioni\Ubuntu.sh evita uno spazio nel nome di un file terminale tra due parole separate.

Dopo aver eseguito lo script, conservarlo per il futuro, per un'eventuale reinstallazione e riconfigurazione del sistema, preferibilmente su una partizione separata del disco rigido nella cartella /casa. Se non ce n'è, in un servizio cloud (archiviazione dati cloud) come: DropBox, Cloud Mail.Ru, Mega.co ecc., in modo da poter utilizzare lo script da soli in qualsiasi momento o aiutare amici o parenti a configurare il sistema.

La riga di comando e le cose incredibili che puoi fare con essa sono il segno distintivo di UNIX e di tutti i suoi successori. E dove c'è una riga di comando, ci sono degli script. E oggi... no, non impareremo a scrivere script, vedremo quelli più utili, quelli che puoi usare quotidianamente per risolvere i problemi più disparati, dalle previsioni del tempo e un server web in una riga a un bot per Twitter in dieci righe e uno script per avviare automaticamente qualsiasi client torrent.

Vorrei fare subito una prenotazione che non sono affatto un seguace dello sciamanesimo e non vi esorto in alcun modo a sedervi su una console verde e nera e a digitare un mucchio di lettere per eseguire azioni per le quali nell'interfaccia grafica semplicemente è necessario posizionare il mouse sull'elemento desiderato. Sono però convinto che per risolvere molti problemi la console e gli script siano molto migliori dell'interfaccia grafica e quindi non possono essere trascurati. Inoltre, qualsiasi DE ti consente di creare un'icona per lo script, quindi non è nemmeno necessario aprire la console per avviarlo.

Esempi semplici

Quindi, senza ulteriori divagazioni, passiamo direttamente agli esempi:

$curl ifconfig.co

Questo semplice comando ti mostrerà l'IP esterno, ideale se accedi alla rete tramite un router. Tutto ciò che fa è semplicemente contattare il server ifconfig.co, che restituisce l'IP in una riga invece che in una pagina web completa.

E sì, questo non è affatto uno script, è solo un comando, ma per trasformare un comando in uno script basta inserirlo in un file di testo e aggiungere il cosiddetto shebang come prima riga, cioè i simboli # !, seguito dal nome dell'interprete dei comandi:

$ chmod +x ~/bin/myip.sh

Ora può essere richiamato dalla riga di comando con il comando myip.sh.

#!/bin/sh curl -4 wttr.in/Mosca

Questo script ti consente di ottenere un bollettino meteorologico per quattro giorni. Il principio qui è lo stesso del caso di ifconfig.co.

Bollettino meteorologico nella console #!/bin/sh dig +short txt $1.wp.dg.cx

E in questo modo puoi ottenere una breve descrizione di qualcosa su Wikipedia, utilizzando una query DNS invece di contattare un server web. A proposito, è anche molto semplice creare un server web tramite la riga di comando:

#!/bin/sh mentre (nc -l 80< file.html >:); Fare: ; Fatto

Questo script è basato sull'utilità netcat (nc), chiamata il coltellino svizzero delle operazioni di rete. Lo script avvia un loop che esegue il comando nc, che resta in ascolto sulla porta 80 e risponde alla richiesta con file.html, inviando la richiesta passata al nulla (il simbolo significa noop, cioè un'operazione vuota).

Utilizzando semplici script e comandi, puoi ascoltare facilmente la radio su Internet:

#!/bin/sh mpv --volume=50 -playlist ~/16bit.fm_128.m3u

Naturalmente la playlist in formato M3U dovrà essere preventivamente scaricata dal sito della radio. A proposito, se esegui MPlayer con l'argomento --input-ipc-server=/tmp/mpvsocket, può essere controllato scrivendo comandi in un file. Ad esempio, regola il volume:

Eco "volume +10" | socat - /tmp/mpvsocket

Crea due script: uno per avviare, l'altro per fermare la radio (con la riga killall mpv), appendili sul desktop e configura i tasti di scelta rapida DE per controllare la riproduzione. Voilà, hai un lettore già pronto per la radio su Internet, che puoi avviare semplicemente facendo clic sull'icona sul desktop. E difficilmente consumerà memoria o occuperà il vassoio.

Ma prendiamoci una pausa dalle operazioni di rete e torniamo agli affari locali.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Questo è uno dei miei script preferiti. Crea un archivio tar.gz della directory corrente. Particolarmente degna di nota è la costruzione $(PWD##*/), che prende il percorso completo della directory corrente (la variabile $PWD) e ne rimuove la prima parte fino all'ultima barra, lasciando così solo il nome della directory. directory stessa. Successivamente viene aggiunta l'estensione tar.gz. Puoi leggere di più su tali costrutti in man bash.

#!/bin/sh mentre vero; do inotifywait -r -e MODIFICA DIRECTORY && YOUR_COMMAND fatto

E questo è uno script che esegue un comando in risposta ai cambiamenti nei file nella directory. Può essere utilizzato per molti scopi diversi, come l'accensione automatica del lettore durante il salvataggio di un file MP3. Oppure visualizza semplicemente una notifica sul desktop utilizzando notify-send come comando:

Notifica-invia "File modificato"

Desktop

Visto che stiamo parlando del desktop, continuiamo. Come la console, può anche essere scriptata. Ad esempio, ecco uno script che scarica sfondi casuali pubblicati sul canale Reddit degli sfondi:

La continuazione è disponibile solo per i membri

Opzione 1. Unisciti alla community del "sito" per leggere tutti i materiali sul sito

L'iscrizione alla community entro il periodo specificato ti darà accesso a TUTTI i materiali Hacker, aumenterà il tuo sconto cumulativo personale e ti consentirà di accumulare una valutazione Xakep Score professionale!

La console Linux è uno strumento che permette di eseguire manipolazioni che la riga di comando di Windows non consente di fare. La console Linux è il biglietto da visita di UNIX; Il materiale di oggi non riguarda come scrivere sceneggiature, no, non ti insegnerò come, cosa e perché. Considereremo una piccola selezione di script utili che puoi utilizzare ogni giorno per risolvere vari tipi di problemi, ad esempio guardare il meteo con diversi giorni di anticipo, script per un server web in una riga, scrivere un bot per Twitter e uno script per avviare automaticamente qualsiasi client torrent.

Questo materiale non è stato scritto per farti dedicare allo sciamanesimo, in nessun caso ti incoraggio a sederti sulla console e digitare centinaia di caratteri per eseguire alcune azioni che puoi eseguire nell'interfaccia grafica solo passando il mouse sopra l'elemento che desideri Bisogno. Ma c'è una cosa, l'interfaccia grafica non è sempre la soluzione migliore, spesso la console e gli script affrontano il compito molto meglio delle applicazioni con interfaccia grafica, quindi non bisogna dimenticarsi degli script poiché sono; risolvere molti lavori di routine meglio degli strumenti grafici. Vale anche la pena aggiungere che qualsiasi DE ti consente di creare un'icona per i tuoi script, facendo clic sulla quale puoi avviarli facilmente senza aprire la console.

Cominciamo con semplici esempi

Il comando seguente ti mostrerà il tuo IP esterno: è l'ideale se accedi alla rete utilizzando un router. Questo comando chiama il server ifconfig.co, che restituisce l'IP in una riga senza scritte inutili di cui non hai bisogno.

Curl ifconfig.co

Sì, questo non è uno script, è un piccolo comando, ma se vuoi trasformare questo comando in uno script, devi solo inserirlo in un file di testo, alla fine otterremo un piccolo script bash:

#!/bin/bash curl ifconfig.co

Salviamo lo script nella directory ~/bin e diamo i diritti di esecuzione:

Chmod +x ~/bin/yourip.sh

Quasi pronto, puoi eseguire lo script dalla riga di comando utilizzando il comando yourip.sh.

Abbiamo finito con l'IP, controlliamo il meteo dalla console.

#!/bin/sh curl -4 wttr.in/Kiev

Questo script ti consente di ottenere un bollettino meteorologico per quattro giorni, in questo caso il tempo per la città di Kiev.

#!/bin/sh dig +testo breve $1.wp.dg.cx

Sopra puoi vedere un esempio di come ottenere una breve descrizione di qualcosa su Wikipedia, nel nostro caso utilizziamo una query DNS invece di contattare il server web. È anche molto semplice creare un server web tramite la console:

#!/bin/sh mentre (nc -l 80< file.html >:); Fare: ; Fatto

Lo script sopra è basato sull'utilità netcat (nc), spesso chiamata il coltellino svizzero, poiché consente di eseguire molti trucchi per le operazioni di rete. Lo script è semplice, avvia un loop che esegue il comando nc, che è già in ascolto sulla porta 80 e risponde alla richiesta file.html, inviando la richiesta passata al nulla (il simbolo significa noop, cioè un'operazione vuota).

Utilizzando semplici script e comandi, puoi ascoltare la radio su Internet:

#!/bin/sh mpv --volume=50 -playlist ~/16bit.fm_128.m3u

Naturalmente, prima è necessario scaricare la playlist radiofonica in formato M3U dal sito web della stazione radio. Se avvii MPlayer utilizzando l'argomento -input-ipc-server=/tmp/mpvsocket, può essere controllato scrivendo comandi in un file. Ad esempio, regola il volume:

Eco "volume +10" | socat - /tmp/mpvsocket

Creiamo due script: il primo per avviare e l'altro per fermare la radio (in cui scriveremo la riga killall mpv), quindi appendiamolo sul desktop, impostando insieme i tasti di scelta rapida DE per controllare la riproduzione. E questo è tutto, hai un lettore con cui puoi ascoltare la radio su Internet.

Ci siamo lasciati trasportare dalle operazioni di rete, passiamo a quelle locali.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Questo script crea un archivio tar.gz per la directory corrente. Particolare attenzione va prestata alla costruzione $(PWD##*/), che prende l'intero percorso della directory corrente (la variabile $PWD), quindi rimuove la prima parte fino all'ultima barra, lasciando solo il nome della directory e aggiungendovi l'estensione tar.gz. Se vuoi trovare maggiori informazioni su tali costruzioni, puoi leggere eseguendo il comando man bash nella console.

#!/bin/sh mentre vero; do inotifywait -r -e MODIFICA DIRECTORY && YOUR_COMMAND fatto

Lo script sopra esegue un comando in risposta alle modifiche ai file in una directory. Puoi usarlo per diversi scopi, ad esempio per accendere automaticamente il lettore durante il salvataggio di MP3. Oppure, ad esempio, visualizzare una notifica sul desktop utilizzando il comando notify-send:

Notifica-invia "File modificato"

Per desktop

Di seguito vedrai un esempio di uno script che carica sfondi casuali pubblicati sul canale Reddit degli sfondi:

#!/bin/bash wget -O - http://www.reddit.com/r/wallpaper |\ grep -Eo "http://i.imgur.com[^&]+jpg" |\ shuf -n 1 |\ xargs wget -O background.jpg feh --bg-fill background.jpg

Funziona tutto in modo abbastanza semplice. Usando l'utilità wget, lo script scarica la pagina www.reddit.com/r/wallpaper, quindi la passa a grep, che cerca già collegamenti a imgur, ne seleziona uno a caso usando shuf, lo scarica usando wget e lo imposta come sfondo per il tuo desktop, usando il comando feh (si tratta di un visualizzatore di immagini in miniatura che deve essere prima installato). Puoi aggiungere questo script a un normale file di testo come ho descritto sopra, salvarlo in formato sh, renderlo eseguibile, aggiungervi un'icona ed eseguirlo dal desktop facendo clic e lo sfondo cambierà.

#!/bin/sh state=`synclient | grep TouchpadOff | cut -d "=" -f 2` if [ $stato = "1" ]; then synclient TouchpadOff=0 altrimenti synclient TouchpadOff=1 fi

Lo script sopra viene utilizzato per abilitare e disabilitare il touchpad del tuo laptop: abilita se disabilitato e viceversa. Per il corretto funzionamento, utilizza l'utilità synclient, che consente di controllare i touchpad, prodotti principalmente da Synaptics, questo è possibile al 90% o anche di più. Dopo l'avvio, l'utility visualizza molte informazioni, anche la riga TouchpadOff = 1 se è attivato e TouchpadOff = 2 se è disabilitato. Lo script leggerà questi valori e, a seconda dello stato del touchpad, lo abiliterà o disabiliterà.

!#/bin/bash mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg photo.jpg rm -f 0000*.jpg

Utilizzando lo script sopra, puoi scattare una foto utilizzando la tua webcam. Lo script utilizza un lettore video mpv che registra i primi tre fotogrammi catturati dalla fotocamera in file in formato JPEG con nomi 0000000.jpg, 00000002.jpg, 00000003.jpg, ecc., dopodiché la terza immagine viene rinominata in photo.jpg file e il resto viene eliminato. A cosa servono tre immagini? Sono necessari solo affinché la tua fotocamera abbia il tempo di inizializzarsi; se usi le prime due immagini, di solito otterrai un'immagine nera. Ci sono anche problemi di posizionamento, la foto potrebbe essere capovolta; per evitare ciò, mpv deve essere lanciato con il flip flag -vf:

Mpv tv:// -frames 3 -vf flip -vo jpeg

Puoi utilizzare lo stesso comando per creare una telecamera di sicurezza che scatterà foto solo quando l'utente tocca il mouse:

#!/bin/bash mentre vero; fai sudo cat /dev/input/mouse0 | leggi -n1 mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg `date +%F-%H-%M`.jpg rm -f 0000*.jpg sleep 10 fatto

Lo script sopra utilizza un ciclo infinito, recuperando i dati dal dispositivo /dev/input/mouse0. Se sono presenti dati significa che è stato spostato il mouse o è stato premuto uno dei suoi pulsanti. Quindi mpv viene utilizzato per creare tre istantanee, alla terza istantanea viene assegnato il nome della data corrente e le prime due vengono cancellate.

Se desideri registrare un video completo da una webcam, puoi utilizzare uno script simile come esempio:

#!/bin/bash mencoder tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:advice=hw.2, 0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame -lameopts cbr=128 -o video.avi

Di conseguenza, riceverai un file chiamato video.avi in ​​formato MPEG4, bitrate 1800 e un file audio in formato MP3 con bitrate 128.

#!/bin/bash ffmpeg -f x11grab -r 25 -s 1366x768 -i:0.0 screencast.mpg

Utilizzando lo script sopra, puoi registrare uno screencast completo. 1366×768 è la risoluzione del desktop, puoi personalizzarla in base alle tue esigenze. Per fare uno screenshot di una singola finestra, puoi utilizzare il comando import:

Importa screenshot.png

Se esegui il comando sopra, l'icona del cursore del mouse si trasformerà in una croce, utilizzando la quale potrai selezionare un'area dello schermo come fai quando acquisisci screenshot utilizzando applicazioni o estensioni di terze parti. Se colleghi questo comando a uno dei tasti di scelta rapida, otterrai un sistema quasi ideale per acquisire screenshot e questa combinazione non consumerà la tua RAM, il che gli conferisce in modo significativo un enorme vantaggio.

Puoi anche configurare un monitor esterno utilizzando la console:

#!/bin/sh if [ -z "$1" ]; quindi esci da fi if [ $1 == "off" ]; then xrandr --output VGA-0 --off xrandr -s 0 else if [ $1 == "on"]; then xrandr --output LVDS --auto --primary --output VGA-0 --auto --left-of LVDS xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr -- addmode VGA-0 1920x1080 xrandr --output VGA-0 --mode 1920x1080 fi xrandr --dpi 96

Questo script si basa sul fatto che il monitor principale si chiama LVDS e il monitor esterno si chiama VGA-0. Questa è una situazione standard per tutti i laptop; se non sei sicuro, puoi verificare eseguendo il comando xrandr: quando passi un argomento allo script spento disabilita il monitor esterno, argomento SU, a sua volta, lo include, collocandolo sul lato sinistro di quello principale (argomento -sinistra diLVDS nella prima squadra). Lo script crea quindi una nuova configurazione per il monitor con una risoluzione di 1920 x 1080 e la attiva. Infine, lo script imposta il valore DPI predefinito, poiché quando si collega un monitor con una risoluzione diversa spesso si blocca.

Nella maggior parte dei casi i comandi xrandr -newmode… E xrandr -addmode... non sono necessari poiché Xorg otterrà la configurazione e la risoluzione del monitor utilizzando l'EDID. A volte, tuttavia, ciò non accade e la stringa di configurazione viene specificata dopo l'argomento -nuova modalità, devi generarlo tu stesso utilizzando lo strumento cvt:

CVT 1920 1080

Utilizzando lo strumento cvt, puoi generare risoluzioni personalizzate che non sono supportate dal monitor predefinito.

Ricerca su Google dalla riga di comando

Torniamo di nuovo ai servizi di rete. Come ottenere i primi 10 risultati di ricerca su Google? Guarda lo script qui sotto:

#!/bin/bash Q=" " URL="https://www.google.de/search?tbs=li:1&q=" AGENT="Mozilla/4.0" stream=$(curl -A "$AGENT" -skLm 10 "$(GOOG_URL)$(Q//\ /+)" |. grep -oP "\/url\?q=.+?&" | &||") echo -e "$(stream//\%/\x)"

Questo script invia una richiesta a Google utilizzando curl, sostituendo gli spazi nella stringa di ricerca con più. Quindi i collegamenti vengono visualizzati nell'HTML di risposta

Esempio con il servizio YouTube:

#!/bin/bash mpv -fs -quiet `youtube-dl -g "$1"`

Lo script dell'esempio precedente riproduce un video con l'ID specificato nell'argomento utilizzando un lettore mpv. È necessario installare youtube-dl in anticipo.

Diversi esempi di lavoro con Twitter. Di seguito vedrai uno script per un bot a tutti gli effetti, che accetta un comando come input, lo esegue utilizzando l'interprete dei comandi e invia il risultato all'utente specificato.

#!/bin/bash USER="Il tuo soprannome" while true; do CMD=`echo "/dma +1" | ttytter-script | sed "s/\[.*\]\ //" if [ $CMD != $OLD_CMD ]; then REPL=`$CMD` echo "/dm $USER $(REPL:0:140)" | ttytter -script CMD = $OLD_COMD fi sleep 60 fatto

Lo script utilizza il client della console ttytter, leggendo l'ultimo valore del messaggio diretto dal ciclo, quindi controllando se questo comando è stato eseguito, in caso contrario, lo esegue e lo invia all'utente specificato con la variabile USER, tagliando fino a 140 caratteri; .

Perché tutto funzioni, è necessario installare l'utility ttytter, eseguirla, quindi copiare il collegamento generato dalla console e incollarlo nella barra degli indirizzi del browser, passare attraverso la conferma, accettare, quindi ricevere la chiave di autenticazione, copiare e incollare nella console in ttytter. Naturalmente, prima di tutto ciò, è consigliabile aggiungere un utente separato e accedere con il suo account.

Puoi utilizzare Twitter non solo per creare un bot, ma anche per monitorare il tuo computer. Lo script seguente invia un messaggio al feed con informazioni sullo stato della macchina (nome host, tempo di attività, carico, memoria libera e carico della CPU):

#!/bin/bash HOST=`nomehost -s` UP=`uptime | taglia -d" " -f4,5 | cut -d"," -f1` LOAD=`uptime | cut -d":" -f5,6` MEM=`ps aux | awk "( somma += $4 ); END ( stampa somma )"` CPU=`ps aux | awk "( somma += $3 ); END ( stampa somma )"` tweet="Host: $(HOST), tempo di attività: $(UP), cpu: $(CPU)%, memoria: $(MEM)%, loadavg $(CARICA)" if [ $(echo "$(tweet)" | wc -c) -gt 140]; quindi echo "FATAL: il tweet è più lungo di 140 caratteri!" exit 1 fi echo $tweet | ttytter-script

Infine, guarda lo script qui sotto, questo script viene utilizzato per avviare e arrestare il client torrent mentre il tuo PC è inattivo:

#!/bin/bash IDLE=600000 STOPCMD="trasmissione-remota -S" STARTCMD="trasmissione-remota -s" STOPPED="sì" mentre true; do if [ `xprintidle` -gt $IDLE ]; allora if [ $STOPPED = "sì"]; then $STARTCMD STOPPED="no" fi else if [ $STOPPED = "no" ]; quindi $STOPCMD STOPPED="yes" fi fi sleep 60 fatto

Ogni minuto lo script entra in un ciclo infinito e controlla quanto tempo in millisecondi è trascorso da quando l'utente ha eseguito l'ultima azione (per questi scopi viene utilizzato xprintidle). Trascorsi 600.000 ms (dieci minuti), lo script esegue il comando specificato nella variabile STARTCMD. Altrimenti, il comando STOPCMD viene eseguito, ma solo se prima è stato eseguito STARTCMD. Per spiegarlo in termini semplici, non si fa nulla al computer per dieci minuti, poi viene lanciato STARTCMD, nel nostro caso questo è il comando che avvia tutti i download in Transmission, altrimenti tutti i download vengono sospesi. Non ti piace il client di trasmissione? Usiamo i comandi per Deluge, vedi sotto:

STOPCMD="pausa della console deluge \*" STARTCMD="riprendi la console deluge \*"

Conclusione

I migliori articoli sull'argomento