BASH La maggior parte del lavoro di un bioinformatico si svolge

Transcript

BASH La maggior parte del lavoro di un bioinformatico si svolge
BASH
La maggior parte del lavoro di un bioinformatico si svolge attraverso un’interfaccia command line che
al contrario dell’interfaccia grafica che usiamo ogni giorno, ha bisogno di comandi di testo esatti.
All’inizio può intimidire un po’, ma una volta capito come funziona capirai perché si fa in questo
modo. La modalità command line permette di compiere facilmente le stesse operazioni ripetute su
diversi dataset (insieme di dati) o di effettuare queste analisi su un cluster di computer localizzato su
una macchina remota nel caso in cui le analisi siano su larga scala.
L’interfaccia command line di Ubuntu è il Terminale che usa un sistema command line detto bash.
Di seguito trovi alcuni esercizi per imparare ad usare i comandi bash e capirne i vantaggi.
Aprite il Terminale
Per sapere dove vi trovate nel file system (working directory) uste pwd (present working directory).
Il path (percorso) è la descrizione della posizione di qualcosa nel file system ed è una lista di
directories separate da uno slashes (/) (vedere di seguito)
Scorciatoie: quando usate il terminale ci sono dei modi per avere vita più semplice. Per esempio la
freccia verso l’alto fa ricomparire l’ultimo comando, il TAB auto-completa un comando or il nome di
un file (se non è ambiguo).
Il comando ls (list) permette di vedere il contenuto della cartella in cui siete.
Tutti i comandi bash hanno un manuale. Scrivendo man seguito dal nome del comando potete
accedervi. Nel manuale la barra spaziatrice vi permette di scendere e la q (quit) di uscire. Aprendo la
pagina del manuale di ls potete vedere come aggiungendo delle flag potete ottenere una lista un po’
diversa. Ad esempio ls –l (ricordate sempre lo spazio tra i comando e la flag) vi permette di vedere la
lista in formato lungo, con informazioni addizionali.
Il comando cd permette di cambiare cartella (change directory)
Esempio: se nello schema della pagina precedente siete in dir2 e volete “scendere” di un livello
scriverete cd dir1 (ricordare lo spazio). Se volete tornare alla directory precedente scriverete cd ..
the working (current) directory: “.”
the parent of the current directory: “..”
the root directory: “/”
the home directory: “~”
I percorsi assoluti (absolute path) iniziano dalla root (/), quelli relativi dalla directory in cui vi trovate.
Alcuni percorsi assoluti riferiti all’immagine seguente:
/dir1/fileA
/dir2
/dir4/fileB
/dir2/dir1/fileA
Siete nel punto del cerchio arancione. Se digitate pwd ottenete /dir2/dir1. Volete spostarvi per usare
il fileU: ../../dir4/fileU (cioè tornate indietro di due livelli con .. , poi riscendete a Dir4 dentro la quale
c’è fileU). Volete usare fileE?
Altri comandi:
Copy a file: cp fileA copyoffileA
Aggiungendo un percorso non solo si copia il file, ma lo si posiziona dove si vuole
cp filetobecopied destinationfolder
Rename a file: mv fileA fileB
Create a directory: mkdir dir2
Alcuni comandi funzionano anche da soli:
pwd
ls
Molti richiedono uno o più argomenti (attenzione a mettere sempre uno spazio!):
mkdir nomedellanuovadirectory
mv nomedelvecchiofile nomedelnuovofile
La maggior parte dei comandi ha opzioni:
ls -l –a
File di testo ( i più usati in bioinformatica)
The command `cat` prints the content of a text file (and also combines files together)
cat nomedelfile
The command `more`to view (but not modify) the contents of a text file one screen at a time (se ne
vede una parte e si scorre con la barra spaziatrice)
The command `wc` prints (for example) the number of lines
wc -l nomedelfile
wc -w nomedelfile (numero di parole)
ect (vedi iI manuale per le possibili opzioni)
The command `head` prints the first 10 lines
head nomedelfile
The command `tail` prints the last 10 lines
tail nomedelfile
se invece di 10 volete vederne 50, usate
head -n50 nomedelfile
tail -n50 nomedelfile
NB: i nomi devono includere l’estensione (esempio: file1.txt)
Redirects
Molti comandi stampano l’informazione richiesta (output) sul terminale. Se volete dirigerla in un file:
head fileA > fileB
in questo modo le prime 10 righe del fileA finiranno nel fileB.
Uno dei comandi più utili nel terminale è grep. Questo comando cerca nel testo le linee che
corrispondono ad un argomento e le stampa a schermo. Provate ad usare grep per estrarre ATTCC da
un file fastq:
grep ATTCC filename
Combinazioni di comandi si chiamano pipe, il cui simbolo è |
Con pipe prendiamo l’output di un comando e lo diamo in pasto al comando successivo.
tail –n 50 nomedelfile | grep @
prendo le ultime 50 righe di un file e cerco tra queste quelle che contengono il simbolo @, quindi le
mostro sul terminale
Posso anche decidere di dirigerle in un file
tail –n 50 nomedelfile | grep @ > fileA