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