Superquack in a (nut)shell

About me

Luca

Aguzzoli

Cose inutili

  • aka: TinyTanic
  • github: github.com/TinyTanic
  • linkedIn: it.linkedin.com/in/lucaaguzzoli
  • website: aguzzoliluca.it

 

La presentazione e tutto il materiale è disponibile qua:

​https://github.com/TinyTanic/LinuxLessonsUniTo.git

... magari questo non è tanto inutile

Iniziamo!

Shell

  • Interprete
  • Linea di comando / Terminale
  • 3 importanti Shell: 
    • Bourne Shell (sh)
    • C shell (csh)
    • Korn shell (ksh)

Quali shell abbiamo?

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

>_ folders

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 

>_ files

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 

>_ view_files

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

>_ man

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)

>_ superquackers (1)

I/O redirection

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

>_ superquackers (2)

I/O redirection

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

>_ superquackers (3)

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

>_ superquackers (4)

Esempi

# 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

L'arte dello scripting

Scripting (1)

  • bash è un interprete
  • posso scrivere piccoli programmi (script)
  • alta automazione per il SO

Scripting (2)

# 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

Scripting (3)

# 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

Du quack is

megl che uan

  • https://it.wikipedia.org/wiki/Shell_(informatica)
  • http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
  • https://it.wikipedia.org/wiki/Bash