00 BASH – Cose da sapere prima di cominciare

1 Aprile, 2024 (09:26) | BASH, Linux | By: sargonsei

00 BASH – Cose da sapere prima di cominciare.

BASH è un linguaggio per la gestione del PC installata di default su Linux, ed installabile su altri Sistemi Operativi. In pratica, è l’equivalente di ciò che il DOS è per i Sistemi Operativi Windows. L’efficacia degli appunti a cui questo indice fa riferimento, è stata provata nel 2024 con Linux OpenSUSE Tumbleweed con KDE, quindi non è garantita per distribuzioni di Linux diverse.
Nella maggiorparte dei casi, le differenze rispetto ad altre distribuzioni di Linux si riscontrano nelle autorizzazioni necessarie per l’esecuzione dei comandi: alcuni comandi, su altre distribuzioni di Linux, potrebbero essere eseguiti solo se impartiti da super-utente e viceversa. Differenze sostanziali fra i comandi da impartire per avere il medesimo effetto al variare della distribuzione di Linux si riscontrano in rari casi, prevalentemente attinenti l’aggiornamento del Sistema Operativo stesso.
I singoli comandi, possono essere impartiti sia da shell (detto anche terminale, o prompt), sia raccolti in un file di testo eseguibile che verrà attivato dall’utente; in quest’ultimo caso, la scrittura del testo dovrà rispettare regole ben precise; questi appunti sono stati redatti al fine di raccogliere in modo semplice queste regole.
La cartella di lavoro è la cartella all’interno della quale la SHELL è stata aperta. Se non diversamente specificato, i comandi che creano o elaborano files e cartelle agiscono esclusivamente all’interno della cartella di lavoro.
ATTENZIONE!!!
Ciò che segue, è una raccolta di informazioni utili per i miei script, quindi non intende in alcun modo sostituire le guide più dettagliate alle quali mi sono ispirato per redigere questi appunti. Chi necessita di qualcosa di più completo, può trovarlo alle pagina web di seguito linkate:

Guida avanzata di scripting Bash
https://diraimondo.dmi.unict.it/wp-content/uploads/classes/so/mirror-stuff/abs-guide.pdf
Bash scripting
https://guide.debianizzati.org/index.php/Bash_scripting
Guida avanzata di scripting Bash: Indice
http://www.pluto.it/files/ildp/guide/abs/index.html
Guida avanzata di scripting Bash: Capitolo 3. Caratteri speciali
http://www.pluto.it/files/ildp/guide/abs/special-chars.html
Guida avanzata di scripting Bash: Capitolo 4. Comandi
http://www.pluto.it/files/ildp/guide/abs/part4.html
BASH Programming – Introduction HOWTO
http://www.pluto.it/files/ildp/HOWTO/Bash-Prog-Intro-HOWTO/Bash-Prog-Intro-HOWTO.html#toc7
bc esempi di programmazione (Matematica con BASH)
http://appunti.linux.it/a2/bc_esempi_di_programmazione.htm
The GNU Core Utilities
http://maizure.org/projects/decoded-gnu-coreutils/

29 BASH – Lanciare script con e senza parametri

1 Aprile, 2024 (09:16) | BASH, Linux | By: sargonsei

29 BASH – Lanciare script con e senza parametri
Esiste più d’un modo per fornire dati da elaborare ad uno script BASH; in questa sezione di appunti, si esaminerà la possibilità di fornire dati sotto forma di parametri
In gergo informatico, l’avvio di uno script, è detto “Lancio”. Al momento del lancio, è possibile fornire uno o più parametri da elaborare; i parametri sono stringhe alfanumeriche scritte dopo il nome dello script, e separati mediante spazi. I parametri forniti al lancio verranno messi all’interno di variabili chiamate col simbolo $ seguito da un numero; la variabile $0 conterrà sempre il nome dello script, la variabile $1 conterrà sempre il primo parametro scritto dopo il nome dello script al momento del lancio; la variabile $2 conterrà sempre il secondo parametro scritto dopo il nome dello script al momento del lancio, e così via fino alla variabile $9 contenente il nono parametro scritto dopo il nome dello script BASH e separato dal nome e dagli altri parametri tramite uno spazio. Se si ha l’esigenza di passare più di 9 parametri, fal decimo parametro in poi il numero dovrà essere contenuto fra parentesi graffe, così ${10} conterrà il decimo parametro, ${11} conterrà l’undicesimo parametro, e così via.

29.1 BASH – Lanciare uno script fornendo i parametri all’interno dello script stesso
Il metodo più semplice per fornire ad uno script i dati da elaborare, è scriverli nello script stesso.
Il nome dello script è sempre contenuto nella variabile $0.

#!/bin/bash
: || { BASH - Lanciare script
 Per avviare questo script BASH chiamato [parametro0.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./parametro0.txt parametro
}
A0=$0 # Nome dello script
A1="Primo parametro fornito nel listato dello script BASH"
A2="secondo parametro fornito nel listato dello script BASH"
echo "Hai fornito i parametri"
echo $A1
echo $A2
echo "allo script il cui nome è $A0" 
exit 0

29.2 BASH – Lanciare uno script fornendo dei parametri posizionali
I dati da elaborare, possono essere forniti allo script BASH anche sotto forma di parametri fornito al momento del “lancio”.

#!/bin/bash
: || { BASH - Avviare script passando un parametro
 Per avviare questo script BASH chiamato [parametro1.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./parametro1.txt parametro1 parametro2
}
A0=$0 # Nome dello script
A1="Primo parametro fornito nel listato dello script BASH"
A2="secondo parametro fornito nel listato dello script BASH"
echo "Hai fornito i parametri"
echo $A1
echo $A2
echo "allo script il cui nome è $A0" 
A1=$1; A2=$2
echo "All'avvio dello script hai passato i parametri $A1"
echo "e $A2"
exit 0

28 BASH – Le funzioni

1 Aprile, 2024 (09:08) | BASH, Linux | By: sargonsei

28 BASH – Le funzioni
Una funzione è formata da un gruppo di istruzioni racchiuse fra parentesi graffe preceduta dal nome della funzione stessa.
Ciascuna funzione deve essere dichiarata in una parte dello script che verrà letto prima della parte dello script in cui la funzione stessa verrà chiamata; la funzione verrà eseguita ogni volta che verrà chiamata.
Ogni funzione deve essere definita tramite un gruppo di istruzioni che cominciano con una riga che contiene il nome della funzione stessa, e terminano con una riga che contiene unicamente la chiusura della parentesi graffa.
Le istruzioni contenute all’interno delle parentesi graffe, verranno eseguite ogni volta che la funzione verrà chiamata. Per chiamare una funzione, occorre scrivere una riga di istruzioni contenente il nome della funzione stessa.

#!/bin/bash
: || { Funzione
 Per avviare questo script BASH chiamato [funzione.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./funzione.txt
}

Fun1 () # Questa è la prima riga con cui si dichiara la funzione Fun1
{ echo "Questo è il primo comando della funzione Fun1"
    echo "La funzione può contenere un numero qualsiasi di righe di comandi"
    echo "Questo è l'ultimo comando della funzione Fun1"; echo
} # Questa è l'ultima riga in cui si dichiara la funzione Fun1
# La dichiarazione della funzione deve precedere la sua chiamata.

Fun1 # Comando per far eseguire la funzione Fun1
Fun1 # Comando per far eseguire la funzione Fun1
exit 0

27 BASH – if, then, elif, else, fi

1 Aprile, 2024 (07:55) | BASH, Linux | By: sargonsei

27 BASH – if, then, elif, else, fi.
27.1 BASH – if, then, fi: [+ operatori di confronto fra 2 stringhe]

#!/bin/bash
: || { BASH – if, then, fi. [Comparare fra loro 2 stringhe]
 Per avviare questo script BASH chiamato [compara1.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./compara1.txt
}
A1='compara1.txt' # Mette il nome del file 'compara1.txt' nella variabile A1
if [[ -e $A1 ]]   # Verifica se la variabile A1 contiene il nome di un file presente nella cartella di lavoro
then
    echo "Il file \"$A1\" è presente nella cartella di lavoro."
fi
B1="Alfaa"; B2="Alfab"
echo "Questo script confronta fra loro le stringhe \"$B1\" e \"$B2\""
if [ "$B1" == "$B2" ] # Verifica se i contenuti di 2 variabili alfanumeriche sono uguali
then                  # Se la condizione è verificata, esegui le istruzioni seguenti
    echo "La stringa \"$B1\" è uguale a \"$B2\""
fi                    # Fine istruzioni condizionate
if [ "$B1" != "$B2" ] # Verifica se i contenuti di 2 variabili alfanumeriche sono diversi
then
    echo "La stringa \"$B1\" è diversa da \"$B2\""
fi
if [[ "$B1" < "$B2" ]] # Verifica ordine alfabetico then echo "La stringa \"$B1\" viene prima di \"$B2\"" fi if [[ "$B1" > "$B2" ]] # Verifica ordine alfabetico
then
    echo "La stringa \"$B1\" viene dopo di \"$B2\""
fi
if [[ -z "$B1" ]] # Verifica se la variabile B1 è priva di contenuto
then
    echo "La variabile 'B1' è nulla (è priva di contenuto)"
fi
if [[ -n "$B2" ]] # Verifica se la variabile B2 ha un contenuto
then
    echo "La variabile 'B2' ha un contenuto"
fi
exit 0

27.2 BASH – if, then, else, fi. [+ operatori di confronto fra 2 numeri]

#!/bin/bash
: || { BASH – if, then, else, fi. [Comparare fra loro 2 numeri]
 Per avviare questo script BASH chiamato [compara2.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./compara2.txt
}
A1='compara2.txt' # Mette il nome del file 'compara2.txt' nella variabile A1
if [[ -e $A1 ]]  # Verifica se la variabile A1 contiene il nome di un file presente nella cartella di lavoro
then
    echo "Il file \"$A1\" è presente nella cartella di lavoro."
else
    echo "Il file \"$A1\" non è presente nella cartella di lavoro."
fi
let B1=3; let B2=4
echo "Questo script confronta fra loro i numeri \"$B1\" e \"$B2\""
if [ "$B1" -eq "$B2" ] # Verifica se i valori numerici di 2 variabili sono uguali
then                   # Se la condizione è verificata, esegui le istruzioni seguenti
    echo "Il numero "$B1" è uguale al numero "$B2
else                   # Se la condizione NON è verificata, esegui le istruzioni seguenti
    echo "Il numero "$B1" non è uguale al numero "$B2
fi                     # Fine istruzioni condizionate fra loro alternative
if [ "$B1" -ne "$B2" ] # Verifica se i valori numerici di 2 variabili sono diversi
then
    echo "Il numero "$B1" è diverso dal numero "$B2
else
    echo "Il numero "$B1" non è diverso dal numero "$B2
fi
if [ "$B1" -gt "$B2" ] # Verifica se B1 > B2
then
    echo "Il numero "$B1" è maggiore del numero "$B2
else
    echo "Il numero "$B1" non è maggiore del numero "$B2
fi
if [ "$B1" -ge "$B2" ] # Verifica se B1 >= B2
then
    echo "Il numero "$B1" è maggiore o uguale al numero "$B2
else
    echo "Il numero "$B1" non è maggiore o uguale al numero "$B2
fi
if [ "$B1" -lt "$B2" ] # Verifica se B1 < B2
then
    echo "Il numero "$B1" è minore del numero "$B2
else
    echo "Il numero "$B1" non è minore del numero "$B2
fi
if [ "$B1" -le "$B2" ] # Verifica se B1 <= B2
then
    echo "Il numero "$B1" è minore o uguale al numero "$B2
else
    echo "Il numero "$B1" non è minore o uguale al numero "$B2
fi

27.3 BASH – if, then, elif, else, fi.((+ Operatori di confronto fra 2 numeri))

#!/bin/bash
# BASH – if, then, elif, else, fi ((+ Comparare fra loro 2 numeri))
: || { Per avviare questo script BASH chiamato [compara3.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./compara3.txt
}
let B1=6; let B2=5
echo "Questo script confronta fra loro i numeri \"$B1\" e \"$B2\""
if [[ -z "$B1" ]]         # Verifica se la variabile B1 è priva di contenuto
then
    echo "La variabile 'B1' è nulla (è priva di contenuto)"
elif [[ -n "$B1" ]]       # Verifica se la variabile B1 ha un contenuto
then
    echo "La variabile 'B1' ha un contenuto"
else
    echo "ANOMALIA - Non è possibile determinare se la variavile 'B1' abbia o non abbia un contenuto."
fi
if [[ -z "$B2" ]]         # Verifica se la variabile B2 è priva di contenuto
then
    echo "La variabile 'B2' è nulla (è priva di contenuto)"
elif [[ -n "$B2" ]]       # Verifica se la variabile B2 ha un contenuto
then
    echo "La variabile 'B2' ha un contenuto"
else
    echo "ANOMALIA - Non è possibile determinare se la variavile 'B2' abbia o non abbia un contenuto."
fi
if (( "$B1" == "$B2" ))   # Verifica se i valori numerici di 2 variabili sono uguali
then                      # Se la condizione preceente è verificata, esegui le istruzioni seguenti
    echo "Il numero "$B1" è uguale a "$B2
elif (( "$B1" != "$B2" )) # Verifica se i valori numerici di 2 variabili sono diversi
then                      # Se la condizione preceente è verificata, esegui le istruzioni seguenti
    echo "Il numero "$B1" è diverso da "$B2
else                      # Se la condizione NON è verificata, esegui le istruzioni seguenti
    echo "ANOMALIA - Il numero "$B1" non pare nè uguale nè diverso da "$B2
fi                        # Fine istruzioni condizionate fra loro alternative
if (( "$B1" < "$B2" )) # Verifica se B1 < B2 then echo "Il numero "$B1" è minore del numero "$B2 elif (( "$B1" >= "$B2" )) # Verifica se B1 >= B2
then
    echo "Il numero "$B1" è maggiore o uguale al numero "$B2
else
    echo "ANOMALIA - Il numero "$B1" non pare nè minore nè maggiore o uguale a "$B2
fi
if (( "$B1" > "$B2" ))    # Verifica se B1 > B2
then
    echo "Il numero "$B1" è maggiore del numero "$B2
elif (( "$B1" <= "$B2" )) # Verifica se B1 <= B2
then
    echo "Il numero "$B1" è minore o uguale al numero "$B2
else
    echo "ANOMALIA - Il numero "$B1" non pare nè maggiore nè minore o uguale a "$B2
fi
exit 0

26 BASH – Ciclo “until”

1 Aprile, 2024 (07:50) | BASH, Linux | By: sargonsei

26 BASH – Ciclo “until”

Il ciclo “until” ripete i comandi fino a che la condizione specificata continua ad essere valutata come falsa.

#!/bin/bash
: || { Ciclo Until
 Per avviare questo script BASH chiamato [cicloUntil.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./cicloUntil.txt
}
let A1=1
until [  $A1 -gt 5 ]; do # Le istruzioni del ciclo "until" verranno eseguite finché la condizione [A1 > 5] è falsa
    echo Numero $A1
    let A1=A1+1
done
exit 0

25 BASH – Ciclo “while”

1 Aprile, 2024 (07:40) | BASH, Linux | By: sargonsei

25 BASH – Ciclo “while”

Il ciclo while ripete i comandi fino a che la condizione specificata continua ad essere valutata come vera.
25.1 Ciclo “while”: un semplice esempio di funzionamento

#!/bin/bash
: || { Ciclo While
 Per avviare questo script BASH chiamato [cicloWhile.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./cicloWhile.txt
}
let A1=1
while [  $A1 -lt 6 ]; do # Le istruzioni del ciclo while verranno eseguite finché [A1 < 6]
    echo Numero $A1
    let A1=A1+1
done
exit 0

24 BASH – Ciclo “for”

1 Aprile, 2024 (07:34) | BASH, Linux | By: sargonsei

24 BASH – Ciclo “for”
24.1 Ciclo “for” – semplice esempio di funzionamento

#!/bin/bash
: || { Inizio commento multilinea
 Ciclo for
 Per avviare questo script BASH chiamato [cicloFor.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./cicloFor.txt
}
for A1 in 1 2 3 4 5
do
  echo "Numero $A1"
done
exit 0
Esempio di output
:~/Pubblici> ./cicloFor.txt
Numero 1
Numero 2
Numero 3
Numero 4
Numero 5
:~/Pubblici> 

24.2 Ciclo “for” per eseguire comandi

#!/bin/bash
# Ciclo for
# Per avviare questo script BASH chiamato [cicloFor.txt]
# aprire un terminale nella cartella in cui si trova questo script
# ed impartire il comando
# ./cicloFor.txt
for A2 in Documenti Immagini Modelli; do
  A21='ls ~/'$A2
  echo "Output del comando "$A21; eval "$A21"
done
exit 0
Esempio di output
:~/Pubblici> ./cicloFor.txt
Output del comando ls ~/Documenti
aOutCalsa.mp3  aOutCpulse.mp3  aOutD-pa.mp3  aOutD_pa.mp3  Cardio.bak  Cardio.old  Cardio.txt  Esperimento01  vOutB.mkv  vOUTc-pa.mkv  xxx.txt
Output del comando ls ~/Immagini
01hardware.txt  03video.txt  05usb.txt  07internet.txt    09ramSwap.txt  11smontare.txt  13fstab.txt   CD-DVD.txt
02pci.txt       04audio.txt  06cpu.txt  07r_internet.txt  10hd.txt       12F_NTFS.txt    17F_ext2.txt
Output del comando ls ~/Modelli
:~/Pubblici>

23 BASH – Acquisire dati da tastiera

1 Aprile, 2024 (07:23) | BASH, Linux | By: sargonsei

23 BASH – Acquisire dati da tastiera
L’istruzione “read” consente a BASH di acquisire dati in fase di esecuzione dello script BASH senza modificare parti dello script stesso. Grazie al comando “read”, l’utente può passare i dati allo script direttamente da tastiera, durante la fase di esecuzione dello script stesso.
Questo comando consente l’utilizzo di opzioni con le quali il programmatore può predeterminare la lunghezza e la visualizzazione dato digitato.
L’assenza di opzioni fa sì che il comando [read] accetti e visualizzi -senza limiti di tempo- tutti i caratteri digitati dall’utente da quando BASH esegue l’istruzione a quando l’utente digita [Invio]
L’opzione [-s] inibisce la visualizzare dei dati digitati.
L’opzione [-nN] simula la digitazione del tasto [Invio] dopo aver acquisito N caratteri.
L’opzione [-p “Messaggio”] fa sì che la lettura dell’Input sia preceduta dal messaggio riportato fra apici.
L’opzione [-t S] simula la digitazione del tasto [Invio] dopo aver atteso S secondi.
Le singole opzioni possono combinarsi fra loro, ragion per cui la combinazione di opzioni [-n4 -t5] fa sì che l’utente abbia 5 secondi per digitare 4 caratteri, ma la pressione del tasto [Invio] fa sì che il comando termini senza attendere né l’immissione del numero massimo di caratteri attesi, né il numero massimo di secondi concessi all’utente per digitare il dato richiesto; infatti:
1. l’acquisizione dei dati termina appena sono stati inseriti 4 caratteri, anche se non sono trascorsi 5 secondi e/o non è stato digitato [Invio];
2. l’acquisizione dei dati termina appena sono trascorsi 5 secondi, anche se non sono stati digitati 4 caratteri e/o non è stato digitato [Invio];
3. l’acquisizione dei dati termina appena l’utente digita [Invio], anche se non sono stati digitati 4 caratteri e/o non sono trascorsi 5 secondi.
Qualora l’utente utilizzi il comando “read” non per acquisire un dato da tastiera ma per fermare l’esecuzione dello script BASH da quando viene eseguita a quando l’utente digita [Invio], la variabile destinata a contenere i caratteri digitati può essere omessa; tuttavia, quando si usa il comando “read” per tale scopo, si consiglia di affiancarvi il comando [echo “Testo”] oppure inserire l’opzione [-p “Testo”] per spiegare all’utente che il computer sta attendendo la pressione del tasto [Invio]; seguono alcuni esempi.
echo "Per continuare, digita [Invio]."; read; echo "Hai digitato [Invio]."
read -p "Per continuare, digita [Invio]."; echo "Hai digitato [Invio]."
read -t 3 -p "Per proseguire, attendi 3 secondi oppure digita [Invio]."; echo " BASH prosegue."
read -n 2 -t 3 -p "Per proseguire, digita 2 caratteri, o attendi 3 secondi, o digita [Invio]."; echo " BASH prosegue."

23.1 BASH – Acquisire dati da tastiera (default)
Di default e senza opzioni, il comando “read” attende la pressione di una qualsiasi sequenza di tasti ma non visualizza nessun messaggio che spieghi che sta aspettando l’inserimento di dati, quindi il programmatore dovrà farlo precedere da un apposito messaggio che invita l’utente a digitare il dato atteso; l’acquisizione termina quando l’utente digita il tasto [Invio].

#!/bin/bash
: || { Leggere da tastiera
 Per avviare questo script BASH chiamato [leggeDaTastiera1.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./leggeDaTastiera1.txt
}
echo "Digita qualcosa; quando hai finito, premi il tasto [Invio]."
read A1
echo "Hai digitato: $A1"
exit 0

23.2 BASH – Acquisire da tastiera un numero predefinito di tasti

#!/bin/bash
: || { Leggere da tastiera senza dover premere INVIO
 Per avviare questo script BASH chiamato [leggeDaTastiera2.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./leggeDaTastiera2.txt
 L’opzione -s serve a non visualizzare il carattere corrispondente al tasto premuto.
 L’opzione -n N indica che devono essere accettati solo N caratteri di input.
 L’opzione -p permette di visualizzare il messaggio del prompt.
 Rispettare ordine delle opzioni suddette.
}
read -s -n1 -p "Premi un tasto " A1
echo; echo "Hai premuto il tasto "\"$A1\""."
exit 0

23.3 BASH – Acquisire da tastiera un vari modi

#!/bin/bash
: || { Leggere da tastiera in vari modi
 Per avviare questo script BASH chiamato [leggeDaTastiera3.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./leggeDaTastiera3.txt
 L’opzione -s serve a non visualizzare l’input.
 L’opzione -n N simula la pressione del tasto [Invio] dopo aver accettato N caratteri.
 L’opzione -p permette di visualizzare il messaggio del prompt.
 Rispettare ordine delle opzioni suddette.
}
read -p "Premi alcuni tasti, poi digita [Invio] " A1
echo; echo "Hai premuto i tasti '$A1'."
read -n4 -p "Premi alcuni tasti (max 4) poi digita [Invio] " A1
echo; echo "Hai premuto i tasti '$A1'."
read -n2 -p "Premi 2 tasti " A1
echo; echo "Hai premuto i tasti '$A1'."
read -s -n1 -p "Premi un tasto " A1
echo; echo "Hai premuto il tasto "\"$A1\""."
exec echo "Lo script \"$0\"è terminato." # Esce dallo script in questo punto
echo "Questa riga non verrà mai eseguita, perché preceduta da riga exec"
exit 0

23.4 BASH – Acquisire da tastiera un numero predefinito di tasti entro un tempo massimo
L’opzione -t S fa sì che la lettura dell’Input sia attesa per non più di S secondi.

#!/bin/bash
: || { Leggere un tasto da tastiera entro 4 secondi
 Per avviare questo script BASH chiamato [leggeDaTastiera.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./leggeDaTastiera.txt
 L’opzione -s serve a non visualizzare il carattere corrispondente al tasto premuto.
 L’opzione -n N simula la pressione del tasto [Invio] dopo aver accettato N caratteri.
 L’opzione -t SEC simula la pressione del tasto [Invio] dopo SEC secondi.
 L’opzione -p permette di visualizzare il messaggio del prompt.
}
sec=4        # 4 secondi
read -s -n1 -t $sec -p "Premere un tasto entro $sec secondi " A4
echo
if [ -z "$A4" ]  # È nulla?
then
  echo "Tempo scaduto, non hai premuto nessun tasto."
else
  echo "Hai premuto il tasto = $A4"
fi
exit 0

22 BASH – Acquisire dati da file di testo

1 Aprile, 2024 (07:09) | BASH, Linux | By: sargonsei

22 BASH – Acquisire dati da file di testo
22.1 BASH – Acquisire dati da file di testo

#!/bin/bash
: || { Leggere da file
 Per avviare questo script BASH chiamato [leggeDaFile.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./leggeDaFile.txt
}
A1="03"; A2="testo.txt" # Imposta testo da cercare e file in cui cercarlo
A3=`grep $A1 $A2`       # Legge riga di A2 che contiene A1 e la mette in A3
echo "La riga del file [$A2] che contiene [$A1] contiene anche [$A3]"
exit 0

22.2 BASH – Acquisire dati da file di testo

#!/bin/bash
: || { Leggere da file
 Per avviare questo script BASH chiamato [leggeDaFile.txt]
 aprire un terminale nella cartella in cui si trova questo script
 ed impartire il comando
 ./leggeDaFile.txt stringaDaCercare fileInCuiCercare.txt
}
A1=$1; A2=$2 
A3=`grep $A1 $A2`
echo "La riga del file [$A2] che contiene [$A1] contiene anche [$A3]"
exit 0

21 BASH – Impaginatura dell’Output

1 Aprile, 2024 (06:50) | BASH, Linux | By: sargonsei

21 BASH – Impaginatura dell’Output

21.1 BASH – Impaginatura dell’Output di un unico comando
L’impaginatura dell’output può essere modificata utilizzando opportunamente il comando “echo”, le parentesi tonde, ed i caratteri speciali “Virgolette” e “$”. Seguono alcuni esempi.
:~> ls -1 # meno uno, non meno elle!!!
Documenti
Immagini
Modelli
Musica
Plus
Pubblici
Scaricati
Scrivania
snap
Video
'VirtualBox VMs'
:~> echo $(ls -1) # meno uno, non meno elle!!!
Documenti Immagini Modelli Musica Plus Pubblici Scaricati Scrivania snap Video VirtualBox VMs
ubuntu23m10@ubuntu23m10-Default-string:~$ echo "$(ls -1)" # meno uno, non meno elle!!!
Documenti
Immagini
Modelli
Musica
Plus
Pubblici
Scaricati
Scrivania
snap
Video
VirtualBox VMs
:~>

21.2 BASH – Impaginatura dell’Output di comandi successivi
Di default, l’output del comando echo termina portando il prompt all’inizio della riga successiva; l’opzione -n inibisce questo comportamento, cosicché l’output del comando successivo inizia dove termina l’output del comando precedente.
Seguono alcuni esempi.
:~> A=Alfa;B=Beta;echo $A;echo $B # Imposta e visualizza il contenuto di 2 variabili
Alfa
Beta
:~> A=Alfa;B=Beta;echo -n $A;echo $B # Imposta e visualizza sulla stessa riga il contenuto di 2 variabili
AlfaBeta
:~> A=Alfa;B=Beta;echo -n $A;echo -n $B # Imposta e visualizza sulla stessa sia riga il contenuto di 2 variabili, sia il prompt
AlfaBeta:~>