Luca
Aguzzoli
Â
La presentazione e tutto il materiale è disponibile qua:
​https://github.com/TinyTanic/LinuxLessonsUniTo.git
... magari questo non è tanto inutile
Ci sono più shell in Linux.
Come possiamo sapere quali?
$ cat /etc/shells #quali shell abbiamo a disposizione?
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/fish
$ echo $SHELL #quale shell stiamo usanto al momento?
/usr/bin/fish
Interagiamo con il sistema operativo. Dove mi trovo? cosa c'è? Come mi muovo?
#in che cartella sono?
$ pwd
/home/luca
#che cosa c'è nella cartella corrente?
$ ls
Documenti/ Modelli/ Progetti/ Scaricati/ Video/
Immagini/ Musica/ Pubblici/ Scrivania/
#mi sposto nella cartella
$ cd Scrivania/linuxUnito
Come si crea un file, si elimina, si copia o si sposta?
#creo un nuovo file vuoto
$ touch nuovofile
#copio il primo file nel secondo
$ cp nuovofile filecopiato
#rimuovo il file filecopiato creato precedentemente
$ rm filecopiato
#sposto il file da una cartella ad un'altra con un altro nome
$ mv nuovofile /home/luca/filespostato
Diamo uno sguardo al contenuto dei nostri file
# stampa a terminale il contenuto del file
$ cat nuovofile
# visualizzazione di file molto grossi
$ more nuovofile
# visualizzazione di file molto grossi con la possibilità di tornare indietro
$ less nuovofile
CAT(1) User Commands CAT(1)
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]... [FILE]...
DESCRIPTION
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
-A, --show-all
equivalent to -vET
-b, --number-nonblank
number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends
display $ at end of each line
Manual page cat(1) line 1/71 31% (press h for help or q to quit)
viene creato 'outfile' con l'output di 'cmd' (se il file esiste già viene sovrascritto)
viene creato 'outfile' con l'output di 'cmd' (se il file esiste già viene appeso)
# output
cmd > outfile
# append output
cmd >> outfile
il contenuto del file 'infile' viene usato come input per il comando 'cmd
redirect generico da un comando ad un altro
# input
cmd < infile
# pipe
cmd | cmd
cmd2 viene eseguito se e solo se cm1 è andato a buon fine
cmd2 viene eseguito solo se il cmd1 non va a buon fine (usato prevalentemente negli if)
# AND
cmd1 && cmd2
# OR
cmd1 || cmd2
# che cosa restituiscono?
# 1
$ cat esercizio.hs | grep False
# 2
$ cat numeri | sort | uniq > orderednum
# 3
$ sort < numeri | uniq > orderednum
# 4
$ false && echo duck || echo quack
#5
$ true || echo quack && echo duck
# dichiarazione di variabile ed utilizzo in un comando
HW="Ciao utente, come va?"
echo $HW
# uso di passaggio di parametri
HW="Ciao $1, come va?"
echo $HW
# costrutto if-then-else
T1="foo"
T2="bar"
if [ "$T1" = "$T2" ]; then
echo expression evaluated as true
else
echo expression evaluated as false
fi
Variabili, parametri e if-then-else
# creo una funzione che stampa una frase hello-world
function hw {
echo "Hello, $1"
}
hw Luca
# catturo l'output da un comando e ne stampo il contenuto
FILES=$(ls)
# o in alternativa
FILES=`ls`
for f in $FILES;
do
echo $f
done
Cicli, cattura dell'output e funzioni