Università degli Studi di Verona
Dipartimento di Biotecnologie
Biochimica - Laboratorio di Bioinformatica I (CdL. Bioinformatica)
Bioinformatica e banche dati biologiche (CdL. Biotecnologie)
Modulo Laboratorio
A.A. 2014
2014//2015
Introduzione a Linux
Dr. Sergio Marin Vargas
Caratteristiche di Linux
Nel 1991, uno studente finlandese, Linus
Torvalds, per la sua tesi di laurea scrive
un ''mini-unix per PC'', basandosi su
software GNU, e nasce così LINUX.
Linux possiede molte caratteristiche che ne fanno
un ottimo sistema operativo:
robusto e affidabile
ampio supporto di processori e periferiche
networking avanzato
strumenti di sviluppo e debugging
interfaccia grafica
ampia disponibilità di software
gratuito e open source (licenza GNU)
Distribuzioni Linux
Principali distribuzioni
◦
◦
◦
◦
◦
Debian, Ubuntu
RedHat, Fedora
Novell SuSe, Open Suse
Mandriva
Slackware
Altre distribuzioni
◦ 1000+
Ubuntu
Ubuntu è una espressione in lingua bantu (Africa subSahariana) che indica "benevolenza verso il prossimo".
Indica anche una regola di vita, basata sulla compassione
e il rispetto altrui.
http://www.ubuntu.com/
Ubuntu deriva da Debian
Ubuntu sarà sempre
◦ “free to download”
◦ “free to use” and
◦ “free to distribute to others”
Desktop Edition
Server Edition
X86-32, x86-64, and Mac
Ubuntu, Kubuntu, Xubuntu, …
L’ambiente grafico
GNOME (GNU Network Object Model Environment)
L’ambiente grafico di Linux: è un ambiente desktop creato inizialmente dai
programmatori messicani Miguel de Icaza e Federico Mena nell'agosto del 1997,
con l'obiettivo di fornire sia un ambiente desktop che un ambiente di sviluppo
libero per i sistemi operativi basati su GNU/Linux.
GNU (acronimo ricorsivo di "GNU's Not Unix") è un sistema operativo Unix-like
Aprite la vostra home
Gestione dei file
Nella home il file si possono:
Copiare
Incollare
Tagliare
Creare una cartella (ORDINE!)
Cancellare una cartella (e fare spazio)
Il vostro spazio è LIMITATO, finito lo spazio molti
programmi non vanno (E NON AVVERTE)
Il filesystem di Linux
• Opera su diversi tipi file:
– normali
Archivi di dati, testi, comandi, programmi sorgente,
programmi eseguibili, immagini, ecc.
– directory
Entità che raggrupa diversi files al suo interno.
– device
Dispositivi hardware collegati, vengono visti come
file speciali (stampanti, dischi esterni, chiavette,
ecc).
– link
Riferimento ad un altro file o directory. Le
operazioni sul link si riflettono sull’oggetto collegato.
La vostra home dentro il filesystem
Ora voi siete
nella vostra home
È una cartella in
cui potete
scrivere i vostri
file, fare cartelle
e mettere in
ORDINE le cose.
Struttura logica: pathnames
• Un file è individuabile attraverso il nome e le
sottodirectory del path (percorso) dalla root /
• Le “path”possono essere relative (rispetto alla
directory di lavoro) o assolute (iniziano con /)
Esempio: path assoluta e path relativa (sul file
“file.txt” della cartella “/home/utente”)
o Path assoluta (Posizionati su una qualsiasi directory)
/home/utente/file.txt
(path assoluta)
./file.txt
(path assoluta se sono su /home/utente)
o Path relativa (Posizionati su “/home”)
utente/file.txt
o Path relativa (Posizionati su “/home/utente”)
file.txt
La Shell
• In Linux si interagisce con il sistema attraverso un programma
chiamato shell il quale viene invocato automaticamente al
Login.
• Esistono diverse shell (sh, bash, tcsh, …)
o la maggior parte dei comandi ha la stessa sintassi nelle
diverse shell, la più utilizzata resta la “sh”
o la scelta di una shell è essenzialmente questione di gusti
• In Linux i comandi sono dati sotto la shell che li interpreta,
esegue e scrive (se necessario) il risultato sul terminale.
• L’attenzione della shell è espressa dal prompt , carattere che
può essere deciso dall’utente.
• Esempi di prompt :
>
%
[pccmslb]:~>
utente@server:~$
Il terminale
• I vostri comandi sono interpretati dalla shell,
per interagire con questa si usa il terminale,
un ambiente dove si possono scrivere i
comandi e leggere le risposte.
Perche un buon bioinformatico o
biotecnologo deve sapere utilizzare
linux da terminale
Perché molti programmi sono “artigianali”
e si controllano in modo meno raffinato
(pochi soldi per lo sviluppo…).
Perchè va bene per gli automatismi (piccoli
programmini, come ad esempio per blast,
phyton, ma molti, molti altri programmi).
Login
• Una volta partito il sistema l’utente esegue la
procedura di Login.
• Se si è installato un ambiente grafico di desktop,
la procedura è gestita dall’ambiente stesso.
• Il Login richiede sempre uno username e una
password.
• All’utente viene assegnato una zona di disco
identificata come home directory (/home/utente/)
• Alla fine della procedura di Login l’utente “si
trova” dentro il terminale, in una particolare shell,
posizionato nella sua home directory cioè in una
zona di disco in cui ha tutti i privilegi per creare
nuovi files o directories.
Comandi principali: man
In Linux il comando di help non si chiama help !
Per avere informazioni su un qualsiasi comando si
usa man che mostra l’uso del comando e delle sue
opzioni in modo formattato.
Ovviamente per illustrare il funzionamento del comando
man stesso, si può fare anche:
man man
Comandi principali: ls
• Permette di elencare il contenuto (in files) di una
cartella.
Opzioni:
• -l (informazioni estese)
• -a (visualizza file nascosti, cioè inizianti con il .)
• -R (visualizza sottocartelle)
• -t (ordina la lista di file secondo l’ora dell’ultima modifica)
• Esempio:
$ ls -laR
• Carattere jolly “*”:
$ ls –l *.py
Comandi principali: less
less,, more e cat
• Permette di visualizzare un file (di testo) con
la gestione della paginazione
less nomefile
• Permette di visualizzare un file (di testo) con
solo la gestione dell’avvanzamento di pagina
more nomefile
• Permette di visualizzare un file (di testo)
senza la gestione della paginazione
cat nomefile
Comandi principali: cd e pwd
• Permette di cambiare la cartella corrente
cd altra_cartella
cd /path/altra_cartella
(relativo)
(assoluto)
Opzioni:
• cartella corrente: .
• cartella padre: ..
• home directory: ~ (oppure lasciare in bianco)
• Esempio:
$ cd ..
$ cd ./utente/cartella
$ cd
(va alla cartella sup.)
(se esiste)
(va alla home)
• Visualizzare il path assoluto della cartella
corrente
pwd
I permessi nei file linux
Permessi
• La prima lettera indica se è una directory (d) , un link simbolico (l) o un file (-)
mentre le restati 9 ( a gruppi di 3 ) definiscono i permessi per proprietario,
gruppo e altri utenti.
• I tipi di permesso possono essere:
• lettura (r)
• scrittura (w)
• esecuzione (x)
•
Per cambiare il proprietario di un file si usa il comando chown, è necessario
essere proprietario del file o “super user” (sudo).
$ chown propietario.gruppo nomefile
•
Per cambiare i permessi di un file si usa il comando chmod, è necessario
essere proprietario del file o “super user” (sudo).
$
$
$
$
$
$
chmod
chmod
chmod
chmod
chmod
chmod
760 nomefile
666 nomefile
777 nomefile
+r nomefile
-w nomefile
-x nomefile
Comandi principali: mkdir e rmdir
• Creare nuove cartelle
mkdir nome_cartella
• Esempio:
$ mkdir nuovacartella1 nuovacartella2
• Eliminare una cartella (solo se vuota)
rmdir nome_cartella
Comandi principali: cp,
cp, mv e rm
• Copiare file e cartelle
cp [opzioni…] sorgente… destinazione
• Spostare o rinominare file e cartelle
mv [opzioni…] sorgente… destinazione
• Eliminare file (opzioni: -i per modalità interattiva, -r
ricorsiva, elimina le cartelle senza passare per il cestino!!!)
rm [opzioni…] file
• Eliminare cartelle (Cancella la cartella e tutto il suo
contenuto. Attenzione ad utilizzarla, cancella tutto !!!)
rm –r nome_cartella
La pipeline: |
• Permette di passare l’output di un comando
direttamente sull’input del comando
successivo in un’unica riga di comando
Esempi:
ls -l | less
ls -l | more
cat nomefile | less
less nomefile
cat nomefile | more
more nomefile
Comandi principali: grep
• Ricerca in uno o più file di testo le linee che
corrispondono alla espressione indicata.
• Opzioni:
• -i Ignora le differenze tra lettere maiuscole e minuscole.
• -n Precede ogni linea dei risultati con il numero di linea all'interno del file
(partendo da 1).
• -l Indica solo i nomi dei file in cui è stata trovata almeno una corrispondenza
(ciascun file è elencato una sola volta, indipendentemente dal numero di
corrispondenze in esso trovate).
• -v Nega i modelli specificati, producendo un elenco delle linee che non
soddisfano alcun modello.
• -c Produce per ciascun file solo il conteggio del numero di linee che
corrispondono.
grep nomefile espressione
ls –l | grep 2014
ls –l | grep rwx | less
Eseguire programmi
•
In windows gli eseguibile sono “.exe”, in linux un eseguibile si riconosce perche il
terzo attributo del file è “x”, questi normalmente vengono colorati col colore verde:
$ ls --color=always
$ ls -l
•
Per che un programma possa essere eseguito, questo deve trovarsi in una delle
cartelle indicate dalla variabile di ambiente PATH, oppure deve essere lanciato con
la path assoluta:
$ echo $PATH
(Per visualizzare i percorsi eseguibili)
Se il programma si trova in una delle cartelle di $PATH:
$ nomeprogramma
Se il programma si trova nella cartella corrente e non nella $PATH:
$ ./nomeprogramma
Se il programma non si trova ne nella cartella corrente ne nella $PATH:
$ /path_assoluta/nomeprogramma
Operare con i processi
• Un processo è un programma in esecuzione
(front-end o background).
• Visualizzare informazioni sui processi
ps [opzioni…] [PID]
Esempi:
ps –ef | less
ps –ef | grep PID
• Eliminare un processo
kill [opzioni…] PID
Esempio: kill -9 2435
• Monitorare l’utilizzo delle risorse da parte dei
processi
top [opzioni]
Esempio: top
Comandi principali: du e df
• du: visualizza la dimensione della cartella
corrente, mostrando il valore delle
sottocartelle e alla fine il totale
$ du
• Esempio (opzione -h
human format):
$ du -h
• df: visualizza i “file system” (dischi)
mostrando lo spazio totale, quello utilizzato e
quello ancora disponibile.
$ df -h
Fare spazio
Quanto spazio occupa la cartella?
Salite di un livello (icona “SU”)
Tasto destro sulla vostra cartella ->
proprietà.
Così vedete quanto spazio occupa.
Come fare spazio?
Cancellare i file inutili
Potrebbero esserci file di
configurazione di programmi vari,
magari inutili.
Ma sono NASCOSTI (iniziano per “.”)
Che fare?
Visualizzare i file nascosti
• Nota: i file nascosti contengono spesso impostazioni di un
programma. La loro cancellazione causa la perdita delle
personalizzazioni
Firefox – dove salva i files scaricati?
scaricati?
Firefox salva di default nella directory “Download”
Personalizzare l’impostazione: Modifica ->
Preferenze
Firefox – occupa troppo spazio ?
Cancella la cartella “.mozilla” dalla tua home (è nascosta!),
però così si perdono tutte le impostazioni, i bookmarks,
ecc
Oppure cancella la cache (libera meno spazio ma non si
perdono dati):
Firefox – find
Una funzione molto utile in Firefox è trova (ctrl+f)
In questo esempio il risultato di una ricerca di “arch”
• La funzione “evidenzia tutti” evidenzia tutte le occorrenze.
Conoscere la tmp
In ogni computer localmente (i.e. se cambiate pc il
contenuto cambia) c’è una cartella temp ( /tmp )
Ci si arriva salendo su nelle cartelle, si vede dalla
“root” (/)
E’ capiente (come l’hard disk locale) e ci potete
scrivere!
I file vengono cancellati ad ogni riavvio (ma dipende
dalle impostazioni del singolo computer)
Quindi è molto utile per salvarci i download prima
di installare un programma o per metterci grossi file
durante un’esercitazione o un esame…
Creare e modificare files di testo
Il programma per editare “file di testo”, si chiama
gedit, questo viene lanciato dal terminale.
gedit ènome-file
Gedit
un editor semplice, alcune comandi
dell’editor sono:
Per selezionare una parte del testo, utilizzate “shift”
e le “freccie”.
Per selezionare tutto il testo utilizzate Ctrl-A.
Ctrl-C permette di “copiare” il testo selezionato.
Ctrl-X permette di “tagliare” il testo selezionato.
Ctrl-V permette di “incollare” quello che avete
“copiato” con Ctrl-C o “tagliato” con Ctrl-X.
Editare il file helloworld.c
Aprite il terminale e posizionatevi nella vostra “home”
Create il vostro primo file di testo con il nome helloworld.c
gedit helloworld.c
Una volta dentro l’editor “gedit” scrivete esattamente le
seguente righe e poi salvate il file.
Un altro editor (“vi” o “vim
“vim”)
”)
L’editor di base a riga di comando, esistente in tutte
le distribuzione di linux è “vi” oppure nella sua
versione migliorata “vim”.
vim nome-file
L’editor vim dispone di numerosi comandi, essi si
invocano premendo la sequenza di tasti
corrispondente.
◦ Premendo i tasti in vim, infatti, i caratteri corrispondenti
non vengono inseriti nel testo, ma vengono interpretati
come comandi, a meno che non si sia entrati nel modo
inserimento con l’opportuna sequenza di tasti
Per uscire da una certa modalità si preme il tasto
ESC.
I commandi in vim sono “case sensitive”.
Comandi dentro vim (1
(1)
:q
Esce da vim
:q!
Esce senza salvare
:x
Esce e salva
:w
Salva il testo corrente
i
Entra in modalità inserimento testo (insert)
R
Entra in modalità sovrascrittura testo (replace)
ESC
Esce da una modalità (es. inserimento testo)
dd, D Elimina una riga (3D
de,dw Elimina una parola
Elimina 3 righe)
Comandi dentro vim (2
(2)
u
Undo
yy, Y Copia una linea (5Y
Copia 5 linee)
ye,yw Copia una parola
p
Incolla
:
Entra in modalità inserimento comandi
:/xxx Cerca la parola “xxx”
n
Ripete l’ultima ricerca
:s
:s/old/new
Sostituisce old con new
:1,$s/old/new/g
Sostituisce tutte le occorrenze
O, o
Modalità inserimento, aggiungendo una riga
Quale editor di testo usare
Per la bioinformatica meglio scegliere dei font che
per ogni carattere usano lo stesso spazio (e.g.
Courier o altri font con l’aggettivo “monospace”).
Spesso un editor semplice (gedit) è più adatto di uno
complicato (meglio evitare openoffice writer).
Collegamento locale e remoto
• Il collegamento locale avviene tramite il terminale.
• Il collegamento remoto avviene tramite il protocollo “ssh”, con il
comando ssh da linux o tramite programmi come “putty” da
windows. Il ssh è a tutti gli effetti un “terminale remoto”.
• Un server viene riconosciuto dal nome del server (se inserito nel
DNS) oppure dal suo indirizzo IP.
• Per copiare files tra server e client si utilizza il protocollo “scp”,
mediante il comando scp oppure con programmi come “winscp”.
Comando ssh (secure shell)
• Il comando ssh ha la seguente sintassi:
ssh [opzioni] nomeutente@nomeserver [comando]
• Esempio 1, collegamento al server “molsim.sci.univr.it” con
l’utente sergio
ssh [email protected]
• Esempio 2, collegamento al server “bioinfo2” con l’utente
“studenti”.
ssh [email protected]
• Esempio 3, collegamento al server “bioinfo3” con l’utente
“studenti”, eseguendo il comando “ls -l”
ssh [email protected] ls -l
.
Comando scp (secure copy)
• Il comando scp ha la seguente sintassi:
scp FileSorgente nomeUtente@host:directory/FileDestinazione
scp nomeUtente@host:directory/FileSorgente FileDestinazione
• Esempio copia da locale a remoto, copia del file “file.txt” dal
computer locale al server “bioinfo2” con l’utente “studenti” nella
cartella remota /home/studenti con lo stesso nome:
scp file.txt [email protected]:/home/studenti/file.txt
• Esempio copia da remoto a locale, copia del file “file.txt” dal
computer remoto “bioinfo2” con l’utente “studenti” che si trova
nella cartella /home/studenti al computer locale nella cartella
“/varie” ma col nome “nuovofile.txt”:
scp [email protected]:/home/studenti/file.txt
/varie/nuovofile.txt
Domande ?
Esercizio comandi vari
• Visualizzare le cartelle nascoste della propria home
• Verificare la dimensione della propria home
• Individuare la cartella “/tmp”
• Scaricare un’immagine con Firefox. Salvarla nella cartella /tmp
• Creare la cartella “Bioinfo1” nella propria home (conterrà i file del
corso)
• Copiare il file salvato nella cartella e rinominarlo in “cancellami”
• Cancellare il file
• Aprire in Firefox la pagina http://www.scienze.univr.it
• Quante volte compare la stringa “forma”?
Esercizio script bash
• Per scrivere uno script di shell, basta utilizzare un qualsiasi
editor di testo (esempio gedit)
• Hints: Tutti gli script iniziano con la seguente riga (#!/bin/bash).
• Salvare lo script (Hints: il nome del file ha estensione .sh)
• Rendere eseguibile lo script (Hints: chmod)
• Posizionarsi sulla giusta directory dove è presente lo script (Hints
: cd)
• Eseguire lo script da terminale (Hints: ./nome_script.sh)
Scarica

Introduzione a Linux - Università degli Studi di Verona