un’introduzione all’uso della shell su Linux Simone Capodicasa · Ctrl+C A volte può essere...

Post on 15-Feb-2019

242 views 0 download

Transcript of un’introduzione all’uso della shell su Linux Simone Capodicasa · Ctrl+C A volte può essere...

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Il terminale per tuttiun’introduzione all’uso della shell su Linux

Simone Capodicasasimone.capo@gmail.com

Linux Day Torino

26 ottobre 2013

S. Capodicasa Il terminale per tutti 1/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Indice

1. Introduzione

2. Comandi

3. Qualche trucco

4. Scripting

5. Un esempio di vita reale

S. Capodicasa Il terminale per tutti 2/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Obiettivo di oggi

Primo approccio con il terminaleFarvi venire la voglia di approfondire la conoscenza di questo

strumento, farvi assaggiare la sua potenza, senza essereesauriente (il tempo non lo permetterebbe comunque)

S. Capodicasa Il terminale per tutti 3/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Introduzione

S. Capodicasa Il terminale per tutti 4/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

ConvenzioniPer parlare la stessa lingua

1.Terminale = Shell = Linea di comando

2.Directory = cartella

3.Indipendenza dalla distribuzione

4.Comandi scritti in carattere a spaziatura fissa

S. Capodicasa Il terminale per tutti 5/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Cosa è il terminale

Un’interfaccia tra programma e utente

S. Capodicasa Il terminale per tutti 6/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

GUI vs. CLI

Tutto ciò che si fa tramitel’interfaccia grafica

si può replicare usando ilterminale

spesso in modo più efficiente!

S. Capodicasa Il terminale per tutti 7/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Una scelta intelligente

GUINuova versione ⇒ funzionalità (come minimo) spostate

CLINuova versione ⇒ funzionalità (al massimo) aggiunte

Non si deve imparare di nuovo a guidare

S. Capodicasa Il terminale per tutti 8/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Emulatore di terminaleCome si usa il terminale oggi

Un’interfaccia grafica che simula una linea di comando

? xterm? Konsole? Gnome Terminal? LXTerminal? infiniti altri...

Sicuramente si usa ancora la linea di comando pura(server, ssh, ecc...)

S. Capodicasa Il terminale per tutti 9/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Tanti tipi di shellnei sistemi operativi di tipo UNIX

? sh? zsh? tcsh? C shell? Korn shell

noi ci riferiremo sempre alla

BASHBourne Again Shell

S. Capodicasa Il terminale per tutti 10/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Il promptChi siamo e dove siamo

Utenteusername@hostname:directory$

Amministratore (root)root@hostname:directory#

Esempio (quasi) realesimone@linuxdayto2013:∼ $

S. Capodicasa Il terminale per tutti 11/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Comandi

S. Capodicasa Il terminale per tutti 12/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

La struttura di un comando bash

In generale:

comando -opzione argomento

Un esempio:

rm -f divinaCommedia.pdf

Anche più opzioni e più argomenti:

rm -rf divinaCommedia.pdf promessiSposi.pdf

S. Capodicasa Il terminale per tutti 13/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

ls

Stampa la lista del contenuto della directory passata comeargomento

S. Capodicasa Il terminale per tutti 14/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

cdNavigare nelle cartelle

Ci spostiamo nella directory passata come argomento

S. Capodicasa Il terminale per tutti 15/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

cpCopiare files e cartelle

Copia il file o la cartella passato come argomento

S. Capodicasa Il terminale per tutti 16/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

mkdirCreare directory

Crea la directory specificata

S. Capodicasa Il terminale per tutti 17/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

rm

Rimuove file o directory senza passare dal cestino!Per le directory aggiungere l’opzione -r

S. Capodicasa Il terminale per tutti 18/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

su e sudoDiventare amministratore (utente root)

per altre vignette visitare http://xkcd.com

Due metodi:

Anteporre sudo

al singolo comando

oppure

suPer loggarsi in una shell di root

S. Capodicasa Il terminale per tutti 19/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Le pagine manCercare aiuto

Come si trovanoman comando

Cosa c’è dentroTutto ciò che c’è da sapere su un programma

(e anche di più)

Nessuna voglia di leggerecomando -h

S. Capodicasa Il terminale per tutti 20/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Qualche trucco

S. Capodicasa Il terminale per tutti 21/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

AutocompletamentoIl tabulatore

Esiste una lista di comandi e il terminale la conosce

1.Si scrive un pezzo di comando e si preme TAB

2a.Se la corrispondenza è univoca,

avremo l’autocompletamento

2b.Se non è univoca, avremo una

lista delle possibilità (premendodi nuovo TAB)

S. Capodicasa Il terminale per tutti 22/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

PipeIl carattere |

Manda l’output del primo comando come input del secondo.

S. Capodicasa Il terminale per tutti 23/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Wild CardIl carattere *

Si usa l’asterisco per sostituire uno o più caratteri di nomi di filee directory

S. Capodicasa Il terminale per tutti 24/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Questa cartella e quella superiore. e ..

. indica la working directory

.. indica la parent directory

Non vale aggiungere altri puntiniNon si usa (non funziona) ...

ma ../..

Dove ci si trova?pwd

S. Capodicasa Il terminale per tutti 25/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Cronologia

Con su (N) e giù (H) si scorrono gli ultimi comandi utilizzati

Usando la combinazione di tasti Ctrl+R si effettua una ricerca tragli ultimi comandi utilizzati

S. Capodicasa Il terminale per tutti 26/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Interrompere l’esecuzione di un comandoCtrl+C

A volte può essere necessario interrompere con la forzal’esecuzione di un programma lanciato da terminale.

Si può fare premendo la combinazione di tasti:Ctrl+C

S. Capodicasa Il terminale per tutti 27/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Reindirizzamento dell’outputIl carattere >

Utilizzando il carattere > simanda l’output di un comando inun file di testo

S. Capodicasa Il terminale per tutti 28/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Programmi in background&

Postponendo & al comando lo si esegue in background,mantenendo le funzionalità del terminale

S. Capodicasa Il terminale per tutti 29/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Scripting

S. Capodicasa Il terminale per tutti 30/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Cosa è uno script?

Un file di testo che contiene unaserie di comandi su righe diverse

Esecuzione riga per riga

Lo strumento principeUn editor di testo

(Emacs, vi, Gedit, ecc...)

S. Capodicasa Il terminale per tutti 31/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Solo due regole da rispettare

#!/bin/bashSi dichiara quale tipo di shell si vuole usare per lo script

Usiamo l’estensione .sh

È solamente una convenzione

S. Capodicasa Il terminale per tutti 32/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Bisogna dare il permessoe poi eseguire

Dare il permesso di esecuzionechmod u+rx myScript.sh

Eseguire./myScript.sh

S. Capodicasa Il terminale per tutti 33/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Le variabili

Sono dei nomi brevi (o intuitivi) per richiamare stringhe di testo onumeri

S. Capodicasa Il terminale per tutti 34/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

I cicli

Come nei linguaggi di programmazione esiste il modo di ripeterele stesse righe un numero definito (o indefinito) di volte

Esiste anche il costrutto IF-THEN-ELSE

S. Capodicasa Il terminale per tutti 35/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Un esempio di vita reale

S. Capodicasa Il terminale per tutti 36/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Mettere i dati in tabella

Situazione? L’utente ha un file di testo contenente dati? Vuole mettere questi dati in una tabella LATEX

ProblemaI dati sono moltissimi!

S. Capodicasa Il terminale per tutti 37/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

ProblemaCosa si ha Cosa si vuole ottenere

S. Capodicasa Il terminale per tutti 38/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Soluzione

L’utente ha scritto uno scriptCon un solo comando la tabella

è pronta!

S. Capodicasa Il terminale per tutti 39/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Conclusioni

Il terminale è un modo alternativo di interagire con la macchina

Esiste un efficace linguaggio che permette di comunicare con ilcomputer

Questo linguaggio può essere usato per automatizzare e/ovelocizzare certe operazioni ripetitive oppure lunghe e complicate

S. Capodicasa Il terminale per tutti 40/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Un ultimo consiglio

In rete si trovano moltissime guide che usano comandi daterminale per effettuare varie operazioni

È importante capire bene cosa si sta facendo

Evitare il copia-incolla alla cieca!

S. Capodicasa Il terminale per tutti 41/42

Introduzione Comandi Qualche trucco Scripting Un esempio di vita reale

Riferimenti

Guida completahttp://www.pluto.it/files/ildp/guide/abs/

Queste slidehttp://linuxdaytorino.org/2013

oppurehttp://newton.ph.unito.it/∼capodica

S. Capodicasa Il terminale per tutti 42/42

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Appendici

6. Altri comandi

7. Altri trucchi

8. Ambiente di lavoro

9. Aggiornare il sistema

S. Capodicasa Il terminale per tutti 1/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Altri comandi

S. Capodicasa Il terminale per tutti 2/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

echo

Stampa a video una stringa di testo

S. Capodicasa Il terminale per tutti 3/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

mvPer spostare...

Sposta il file nella posizione indicata (due argomenti)

S. Capodicasa Il terminale per tutti 4/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

mv... o per rinominare

Può essere usato anche per rinominare file o directory

S. Capodicasa Il terminale per tutti 5/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Altri trucchi

S. Capodicasa Il terminale per tutti 6/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Andare a capoIl carattere \

Comandi lunghi si possono scrivere su più righe, inserendo allafine della riga un \

S. Capodicasa Il terminale per tutti 7/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Comandi con condizioni&& e ||

Si inseriscono tra due comandi sulla stessa linea

&&Esegue il primo comando e, se questo va a buon fine, vieneeseguito anche il secondo

||Prova a eseguire il primo comando e, se questo non va a buonfine, si prova a eseguire il secondo

S. Capodicasa Il terminale per tutti 8/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Ambiente di lavoro

S. Capodicasa Il terminale per tutti 9/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Files importanti

Quali sono?? /etc/profile

? ∼/.bash_profile, ∼/.bash_login, ∼/.profile? ∼ /.bashrc

Vengono letti e caricati ogni volta che si apre un terminale

S. Capodicasa Il terminale per tutti 10/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

/etc/profile

Contiene le variabili d’ambiente e i programmi di avvio comuni atutti gli utenti del sistema

Un esempio:

La variabile PATHDefinisce la lista dei comandi conosciuti al sistema (utilizzata per

l’autocompletamento)

S. Capodicasa Il terminale per tutti 11/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

La variabile PATH

È una lista di directory dove la bash andrà a cercare glieseguibili quando sriviamo un comando sul terminale

La mia PATH

S. Capodicasa Il terminale per tutti 12/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

∼/.bash_profile

Variabili d’ambiente e programmi di avvio dell’utente

Un esempio:

La variabile PATH

È possibile ridefinirla

S. Capodicasa Il terminale per tutti 13/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

∼ /.bashrc

Configurazioni utente della bash

Alcuni esempi:

? alias? personalizzazioni del prompt? definizioni di funzioni

S. Capodicasa Il terminale per tutti 14/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Gli alias

Sono abbreviazioni di comandi lunghi o ricorrenti

Un alias dal mio ∼/.bashrcalias r=’root -l’

S. Capodicasa Il terminale per tutti 15/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Aggiornare il sistema

S. Capodicasa Il terminale per tutti 16/17

Altri comandi Altri trucchi Ambiente di lavoro Aggiornare il sistema

Aggiornare il sistema

Debian (e derivate: Ubuntu, Linux Mint, ecc...)sudo apt-get update && sudo apt-get upgrade

Fedora (e simili: CentOS, ecc...)sudo yum update

Archlinuxsudo pacman -Syu

S. Capodicasa Il terminale per tutti 17/17