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)