Professional Documents
Culture Documents
http://www.slideshare.net/alabarga/introduction-to-linux-for-bioinformatics
Proyecto GNU
Richard Stallman Proyecto GNU creado en el ao 1984.
Software Libre Licencias GPL Free Software Fundation
Estructura de GNU
Linux
Linus Torvalds. Nucleo Linux (1991)
Compatible con Unix Licenciado bajo GPL Publicado en Internet
Nucleo de Linux
GNU + Linux
GNU + Linux
Recomendaciones
http://www.jomuoru.net/wp-content/uploads/2010/03/gldt102-full.png http://distrowatch.com
Shells
Los usuarios de Linux con frecuencia utilizan un tipo especial de programa llamado shell para interactuar con el kernel. Sistemas UNIX disponen de diferentes Shell: Bourne shell (sh), C shell (csh), Korn shell (ksh), TC shell (tcsh), Bourne Again shell (bash). La ms popular es la bash shell.
echo $SHELL
Shells
La shell se ejecuta dentro de una terminal emitiendo un "prompt y esperando a que le digan qu hacer. Luego, el usuario le pide a la shell que ejecute un programa escribiendo el nombre del programa. La shell bash se puede utilizar de modo interactivo o como un lenguaje de escritura de gran alcance. La shell bash guarda el historial de las lneas de comando ejecutadas. La lneas de comando se pueden recuperar desde el historial.
Shells
Al arranque Bash ejecuta comandos hallados en el archivo ~/.bashrc, permitindole a los usuarios personalizar su shell.
Para empezar
Algunos comandos para ir jugando:
whoami muestra el nombre del usuario id muestra la informacin sobre el usuario who muestra otros usuarios logueados date fecha/hora del servidor cal muestra el calendario history muestra el historial de comandos
hostname
alabarga@genome2:~$ hostname genome2
Archivos y directorios con contenido variable suelen recopilarse en el directorio /var. El colocar dichos archivos aqu hace ms fcil asignarles espacio y proteger los archivos ms estables que se encuentran en alguna otra parte del sistema.
El actual directorio de trabajo El directorio padre El directorio home del usuario El anterior directorio de trabajo El directorio raz
..
~ /
Tamao
df # disk space free -g # memory info in Megabytes du -sh # disk space usage of current directory du -sh * # disk space usage of files/directories du -s * | sort -nr # shows disk space used by different directories/files sorted by size
El comando head
head [OPCIONES] [ARCHIVO...] Algunas veces todo lo que se necesita al examinar un archivo es ver las primeras lneas del archivo. El comando head nos permite hacer esto.
El comando tail
tail [OPCIONES] [ARCHIVO...] Para complementar head, el comando tail muestra las ltimas 10 lneas de cada FILE a la salida estndar. El comando tail tiene otra opcin bastante til: la opcin -f (follow). Con esta opcin tail mostrar las ltimas lneas del archivo y luego "espera" y continua presentando cualquier nueva lnea al ser aadida al archivo.
redirecciones
La shell bash usa > para redirigir un flujo de stdout de proceso a un archivo. Para agregar una salida de un comando a un archivo, en lugar de sobrescribirlo, bash usa >>. bash usa < para hacer que lean entradas desde alguna parte diferente al teclado.
ls > mis_archivos.txt
Comando echo
El comando echo toma cualquier texto que se teclee como parte del comando y lo repite a la salida estndar (usualmente lapantalla) Este comando sencillo junto con el redireccionamiento, se puede utilizar para crear archivos de texto.
echo hola > saludo.txt echo buenos dias >> saludo.txt cat saludo.txt
Descriptores de Archivos
Como protocolo de Linux (y Unix), cada proceso hereda tres archivos abiertos tras el inicio.
Primero, descriptor de archivo 0, es la entrada estndar. Segundo, descriptor de archivo 1, es la salida estndar. Tercero, descriptor de archivo 2, es el error estndar. Flujo Descriptor Abreviacin
Standard In
Standard Out Standard Error
0
1 2
stdin
stdout stderr
redirecciones
Usualmente, stderr est conectado a una pantalla de terminal y los mensajes de error se encuentran entremezclados con las salidas estndar. Cuando se utiliza la shell bash, el flujo de stderr puede redirigirse a un archivo mediante 2>. Al utilizar bash, el flujo de stderr puede combinarse con el flujo de stdout mediante 2>&1 o >&
ls > rcsummary.out 2> rcsummary.err
Ejemplo
alabarga@genome2:~$ ls *.zz ls: cannot access *.zz: No such file or directory alabarga@genome2:~$ ls *.zz > zz.txt ls: cannot access *.zz: No such file or directory alabarga@genome2:~$ cat zz.txt alabarga@genome2:~$ ls *.zz >& zz.txt alabarga@genome2:~$ cat zz.txt ls: cannot access *.zz: No such file or directory
Tuberas
El flujo de stdout desde un proceso puede estar conectado al flujo de stdin de otro proceso mediante lo que Unix llama una "tubera". Varios de los comandos en Unix estn diseados para operar como un filtro, leer la entrada desde stdin y enviar la salida a stdout. bash usa "|" para crear una tubera entre dos comandos.
Vim: control
vi my_file i # INSERT MODE R # replace MODE ESC # NORMAL (NON-EDITING) MODE
vim
: # commands start with ':' :w # save command; if you are in editing mode you have to hit ESC first!! :w new_filename # saves into new file :#,#w new_filename # saves specific lines (#,#) to new file :q # quit file, don't save :q! # exits WITHOUT saving any changes you have made :wq # save and quit
Copiar archivos
Puede copiar archivos de un directorio a otro o de un nombre a otro (renombrarlos) con el comando cp (copy). Uso:
cp [OPCIONES] {FUENTE} {DESTINO} cp [OPCIONES] {FUENTE...} {DIRECTORIO}
Ejemplos:
cp saludo.txt hola.txt cp hola.txt /tmp
Mover/renombrar archivos
Puede mover archivos de un directorio a otro o de un nombre a otro (renombrarlos) con el comando mv (mover). Uso:
mv [OPCION...] {FUENTE} {DESTINO} mv [OPCION...] {FUENTE...} {DIRECTORIO}
Ejemplos:
mv saludo.txt borrar.txt mv borrar.txt /tmp
Borrar archivos
Se pueden suprimir (eliminar, borrar) archivos con el comando rm (remove). Uso:
rm [OPCIONES] {ARCHIVO...}
Examples:
rm /tmp/borrar.txt
Nombres de archivo
En Linux, virtualmente cualquier caracter imprimible se puede utilizar en el nombre de archivo y los nombres pueden ser casi de cualquier longitud.
Los nombres de archivos de Linux pueden tener hasta 255 caracteres. Pueden contener cualquier caracter imprimible (y algunos que no lo son) a excepcin de la barra oblicua /.
Archivos ocultos
Los nombres de archivos y directorios (recuerde un directorio es un tipo de archivo) que comienzan por un punto (.) son archivos "ocultos". Estos archivos no aparecen en los listados de directorio producidos por ls a menos que se utilice la opcin de comando especial -a.
"Comodines"
La shell de comando bash trata algunos de sus metacaracteres especiales como comodines. The shell performs a process called meta-character expansion or wildcard expansion El shell realiza un proceso llamado expansin de metacaracteres o expansin de comodines
Genera una lista de nombres de archivos que coinciden con el patrn descrito por la expresin del comodn Luego, pasa la lista generada al comando. Todo esto, se conoce comnmente como "comodines de nombres de archivos."
Caracteres Comodines
Caracter
* ? [...] [^...]
Efecto
coincide con cero o ms caracteres (a excepcin del punto inicial) coincide exactamente con un caracter (a excepcin del punto inicial) coincide exactamente con un caracter de la lista o rango coincide exactamente con un caracter no incluido en la lista o rango
Ejemplo de Comodines
Patrn
* *.html page*.htm* image?.* [ps]* [^ps]*
Genera la Lista
Bsquedas
find
find -name "*pattern*" # searches for *pattern* in and below current directory find /usr/local -name "*blast*" # finds file names *blast* in directory find /usr/local -iname "*blast*" # same as above, but case insensitive find . -mtime -1 find . -mtime -1 ls find / -size +10000k
additional useful arguments: -user <user name>, -group <group name>, -ctime <number of days ago changed>
Bsquedas
locate
locate "*.dat" q -i, in case you wanted to perform a case insensitive search -c, instead of writing file names on standard output, write the number of matching entries only.
wget
Descarga recursos de modo recursivo, en ambiente no interactivo de los protocolos HTTP, HTTPS y FTP. Cuando se llama con una URL como su argumento, el comando wget recupera el contenido de la URL y lo almacena en un archivo local en el directorio actual de trabajo del mismo nombre.
export http_proxy=http://stargate.ugr.es:3128/
grep
ls -s | sort -n
El comando uniq
El programa uniq se utiliza para identificar, contar o suprimir registros duplicados en la informacin clasificada.
Ejemplos
Reemplazar: Borrar lineas 1-10: Borrar comentarios: Borrar lineas en blanco: sed e s/regex/replacement/ sed -e '1,10d sed -e '/^#/d sed -e '/^$/d
tr
Tambin podemos utilizar tr echo HELLO | tr 'A-Z' 'a-z'
awk
Special-purpose language for line-oriented pattern processing pattern {action} action =
if (conditional) statement else statement while (conditional) statement break continue variable=expression print expression-list
awk
Patterns = boolean combinations of regular expressions and relational expressions awk f program < input > output Also delimiter-separated fields: BEGIN {FS=c} Examples:
Print lines longer than 72 characters: length > 72 print first two fields in opposite order { print $2,$1 }
awk examples
Add up first column, print sum and average
{s += $1 } END {print sum is, s, average is, s/NR}
Print all lines between start/stop words: /start/,/stop/ Print all lines whose first field differs from previous one: $1 != prev {print; prev = $1}
awk
Problem : Get the userid of a user from the /etc/passwd file.
pattern to search
sed/awk
sed '/^>/d' F5R3.fasta | sort | uniq | awk '{print ">SEQ"NR"\n"$0 }'
csplit/cut
csplit -f out fasta_batch "%^>%" "/^>/" "{*}" # splits fasta batch file into many files # at '> cat my_table | cut -d , -f1-3 # cut command prints only specified sections of a table, # -d specifies here comma as column separator (tab is # default), -f specifies column numbers.
Ejercicio
ls -s | sed -e 's/^[ ]*//' | cut -d " " -f2
Comandos avanzados
Valores de retorno
La shell bash almacena el valor de retorno del comando ejecutado anteriormente en una variable especial llamada ?. El valor de retorno del ultimo programa ejecutado e puede examinarse con el comando echo $?.
Ejemplos de Alias
Los siguientes alias podran ser tiles. Puedes configurarlos en el archivo ~/.bashrc.
Usuarios
Archivo /etc/passwd
El archivo /etc/passwd
El archivo de texto /etc/passwd contiene nombres de usuario y sus correspondientes userids y alguna otra informacin.
Grupos de Linux
Cada proceso se ejecuta bajo el contexto de un usuario dado. Los usuarios, los procesos que estos operan y los archivos que poseen, pertenecen a la coleccin de grupos Las membresas de grupo le permiten a los administradores de sistemas manejar eficientemente las colecciones de los usuarios que tienen objetivos similares. Cada usuario es miembro de un grupo primario.
El archivo /etc/group
Para el kernel de Linux, un grupo es nombrado usando un id de grupo (GID) de 32 bits El archivo /etc/group asocia nombres de grupo con GIDs (para humanos). Define los usuarios que pertenecen a cada grupo.
El archivo /etc/group
Examine su archivo /etc/group
wrestle:x:201:ventura,hogan,elvis physics:x:202:einstein,maxwell,elvis emperors:x:203:nero,julius,elvis governor:x:204:ventura,pataki music:x:205:elvis,blondie,prince,madonna dwarfs:x:206:sleepy,grumpy,doc elvis:x:501: prince:x:502: madonna:x:504: blondie:x:505:
Cambio de identidad
El comando su le permite a un usuario cambiar el id del usuario sudo permite ejecutar comandos como root
Permisos
Permisos de usuario
Interpretacin de Permisos
Para poder interpretar los permisos de archivos, se revisa el siguiente ejemplo:
abreviacin
abreviacin interpretacin + = r w x
interpretacin
Agregar Remover Asigna Lectura Escritura Ejecucin
u
g o a
Usuario
Grupo Otros Todos
chgrp
Si deseas compartir un archivo con un grupo de personas, pero no con todo el mundo, debes hacer uso del grupo propietario de archivo y de los permisos de grupo. El grupo privado del creador no es usado para trabajar en colaboracin. Para compartir el archivo, se debe cambiar el propietario del archivo de grupo. Esto se realiza con el comando llamado chgrp.
chgrp
chgrp GROUP ARCHIVO... Cambio de propietario de ARCHIVO(s) a GRUPO El primer argumento especifica el nuevo grupo propietario de archivo, mientras que los argumentos subsecuentes listan los archivos cuyo propietario de grupo se va a cambiar. El propietario del grupo slo lo puede cambiar el usuario dueo del archivo, y el usuario debe ser un miembro del nuevo grupo de propietarios del archivo.
El argumento USER es el nombre del nuevo usuario del archivo y los argumentos siguientes son los nombres de los archivos a cambiar. Slo el usuario administrativo, root, puede usar chown,
chgrp
chown
slo root
gzip (.gz)
el ms versatil y ms comn utilitario de descompresin usado
bzip2 (.bz)
produce la mas compacta compresin de archivos ms uso intesivo de CPU
Archivadores de Archivos
El archivo contiene el directorio y sus archivos y subdirectorios subyacentes, empaquetados como un solo archivo. En Linux (y Unix), el comando ms comn para crear y extraer archivos es el comando tar. El archivo contiene el directorio y sus archivos y subdirectorios subyacentes, empaquetados como un solo archivo. A estos paquetes de archivos suele drseles la extensin del nombre de archivo .tar.
-c, --create
-x, --extract
-t, --list
-P, --absolute-reference
-v, --verbose -Z, --compress -z, --gzip -j, --bzip2
Procesos
The ps command
El comando ps se utiliza comnmente para enumerar los procesos ejecutndose en un sistema. El comando ps, sin ningn argumento, muestra todos los procesos que se iniciaron desde una sola terminal.
alabarga@genome2:~$ ps PID TTY TIME CMD 22047 pts/0 00:00:00 bash 22472 pts/0 00:00:00 ps
The ps command
ps # Shows processes running by user ps -e # Shows all processes on system ps ax tree # Shows the child-parent hierarchy of all processes ps -o %t -p <pid> # Shows how long a particular process was running.
ps <pid> | cat ps aux | grep <user_name> # Shows all processes of one user
top
Descripcin
Los procesos en un estado ejecutable son procesos que si tienen la oportunidad de acceder la CPU Por lo general, este es un proceso que no tiene nada que hacer hasta que suceda algo interesante. Un ejemplo clsico es el demonio de red httpd, el cual es un proceso que implementa un servidor de red. En medio de solicitudes de un cliente (navegador de red), el servidor no tiene nada que hacer, y elige irse a dormir. Cuando dos procesos tratan de acceder el mismo recurso de sistema al mismo tiempo. En estas situaciones, el kernel fuerza al proceso a dormir. Ocasionalmente, los usuarios deciden suspender procesos. Los procesos suspendidos no realizarn ninguna accin hasta no ser reiniciados por el usuario. En la shell bash, la secuencia de teclas CONTROL-Z puede utilizarse para suspender un proceso. cada proceso muriendo pasa a travs de un estado zombi transitorio. No obstante, en ocasiones, algunos se quedan en ese estado.
Dormido involuntario (no interrumpible) (D) Procesos detenidos (suspendidos) (T) Procesos zombi (Z)
Programacin de Procesos
Cada proceso tiene dos valores que influyen en su programacin.
(dinamica) valor de prioridad del proceso (fija) valor del niceness del proceso
Prioridad de Procesos
El kernel da a cada proceso una cantidad de contadores. Cada vez que un proceso se programa en la CPU, entrega uno de sus contadores. Cuando decide qu proceso programar en la prxima CPU, el kernel escoge un proceso ejecutable con la mayora de contadores.
Proceso Niceness
Cada proceso tambin tiene un valor esttico conocido como su valor de niceness. El valor tiene un rango que va de -20 a 19 para cualquier proceso, iniciando en 0 por defecto. Aquellos con un mayor valor de niceness (>0)
obtienen menos contadores menos tiempo en la CPU
El administrador puede utilizar el comando renice como root para elevar el niceness
Usuario normal no puede restaurar dicha situacin.
Envio de seales
Las seales son una forma de bajo nivel de la comunicacin entre procesos que surgen de una variedad de recursos, incluyendo el kernel, la terminal y otros procesos. Las seales se distinguen por los nmeros de seales que tienen nombres y usos simblicos. Los nombres simblicos para los nombres de seales pueden listarse con el comando kill -l. El comando kill enva seales a otros procesos.
Envio de seales
Tras recibir una seal, un proceso puede ya sea, ignorarla, reaccionar de un modo especificado por defecto de kernel o implementar un manejador de seal personalizado. Convencionalmente, el nmero de seal 15 (SIGTERM) se utiliza para solicitar la terminacin de un proceso. La seal nmero 9 (SIGKILL) termina un proceso y no puede anularse. Los comandos pkill y killall pueden utilizarse para enviar seales a procesos especificados por nombre de comando o el usuario a quienes pertenecen.
Enviando Seales
El comando kill se utiliza para enviar seales a otros procesos.
Enviando Seales
kill <process-ID> # Kills a specific process kill -9 <process-ID> # does not give the process any time to perform cleanup procedures. kill -l # List all of the signals that can be sent to a proccess kill -s SIGSTOP <process-ID> # Suspend (put to sleep) a specific process kill -s SIGCONT <process-ID> # Resume (wake up) a specific process
Control de Trabajo
La shell bash permite a los comandos ejecutarse en segundo plano como "trabajos". El comando jobs listar todos los trabajos en segundo plano. La secuencia de teclas CONTROL-Z suspender y enviar a segundo plano el actual trabajo que se encuentra en primer plano. El comando bg reanuda un trabajo de segundo plano. El comando fg trae un trabajo de segundo plano a primer plano.
El demonio atd
El demonio atd le permite a los usuarios someter trabajos para ser realizados ms tarde Para utilizar el demonio atd, ste debe estar ejecutndose. Los usuarios pueden confirmar que atd se est ejecutando simplemente al examinar la lista de procesos en ejecucin
Sintaxis crontab
Networking
Shell scripts
Shell Scripts
A shell script is a text file with a list of commands inside. Shell scripts are good for automating tasks you use often, or running batch jobs. Enter the following in a new file, script.sh:
echo Date and time is: date echo Your current directory is: pwd
Run the script like this: sh script.sh
Ejercicio 1
Download proteome of Halobacterium spec. wget ftp://ftp.ncbi.nih.gov/genbank/genomes/Bacteria/Halobac terium_sp_uid217/AE004437.faa grep '^>' AE004437.faa count egrep 'W.H..H{1,2}' AE004437.faa --count awk --posix -v RS='>' '/W.H..(H){1,2}/ { print ">" $0;}' AE004437.faa | less
Ejercicio 2
for chr in `seq 1 22` X Y do wget -O - -q http://hgdownload.cse.ucsc.edu/goldenPath/ hg19/chromosomes/chr1.fa.gz | gunzip -c >> hg19.fa done
Ejercicio 3
# An example database wget ftp://ftp.ncbi.nih.gov/genbank/genomes/Bacteria/Halobacterium_sp_uid217/AE004437.faa # Prepare dababase for Blast search formatdb -i AE004437.faa -p T -o # Generate an example query awk --posix -v RS='>' '/WWW/ { print ">" $0;}' AE004437.faa \ > blast_query_2seqs.fasta # Run blast with tabular output (extract the hit only) blastall -p blastp -i blast_query_2seqs.fasta -d AE004437.faa -m 8 -e 1e-5 | \ awk '{print $2}' | sort | uniq \ > ids_of_4hits # Get the fasta file for hits fastacmd -d AE004437.faa -i ids_of_4hits > hits.fasta
Ejercicio 4
#!/bin/sh # split fasta file into separate sequence files # if [ $# -gt 1 ] then seqfile="$1" destdir="$2 else echo "Use: fsplit SEQFILE DESTDIR" echo "Splits fasta file SEQFILE into separate files in DESTDIR folder" exit fi mkdir $2 csplit -f $destdir/sequence $seqfile "%^>%" "/^>/" "{*}" -s
More commands
for i in *.input; do mv $i ${i/\.old/\.new}; done scp file.name user@remote_host:~/dir/newfile.name
find /share/media/mp3/ -type f -name "*.mp3" -print0 | xargs -0 -r -I file cp -v -p file --targetdirectory=/bakup/iscsi/mp3
Packages
Installing packages
apt-cache search phylip # searches for application "phylip" from command line apt-cache show phylip # provides description of the package apt-get install phylip apt-get update # do once a month do update Debian packages apt-get upgrade -u # to upgrade after update
aptitude
El nuevo sistema de gestin de paquetes para Debian/Ubuntu se llama aptitude Las operaciones realizadas quedan registradas en /var/log/aptitude