Introducción a Linux Comandos básicos
Transcripción
Introducción a Linux Comandos básicos
Introducción a Linux Comandos básicos Los comandos sirven para que el sistema operativo realice una operación o función. Estos comandos pueden administrar todo el sistema operativo. Antes de que existieran las interfaces gráficas (Ventanas e iconos) todo se manejaba a través de comandos en línea. Es más, todos lo que realizamos mediante el ratón de manera gráfica equivale a un comando en línea del sistema operativo. Podemos preguntarnos para qué necesitamos estos comandos si ahora tenemos interfaces gráficas que son más amigables y fáciles de utilizar. La respuesta es sencilla, a veces es más óptimo emplear comandos en línea cuando se manejan archivos muy grandes, como suele ser en el caso de la bioinformática. Un ejemplo es cuando queremos abrir un archivo de texto de 200MB, en un editor de texto gráfico esta simple tarea requiere de mucha memoria RAM, sin embargo, esto consume mucho menos en línea de comandos ya que al emplear un conjunto de ellos nos podría mostrar cierta parte del archivo sin acabarnos toda nuestra memoria RAM. Los comandos: ls cat more cp mv rm rmdir cd pwd ln mkdir chmod ssh scp ps kill tar uname sort uniq grep wc tail head cut paste man Listar archivos: para mostrar el contenido de un directorio se emplea el comando “ls” $ ls [opciones] [nombre] Opción Descripción -a Lista todo el contenido del directorio, incluyendo los archivos ocultos. -l Lista todo el contenido del directorio en formato largo: permisos, dueño, tamaño, fecha de modificación, directorio/archivo. -s Lista todo el contenido del directorio con su tamaño. Ejemplo: Listar todo el contenido del directorio Settings con sus archivos ocultos: EstacionMM5:~/Settings$ ls -a . .. settings.txt Listar el contenido del directorio actual en formato largo: EstacionMM5:~$ ls -l total 6527756 -rw-r--r-- 1 carlos carlos -rw-r--r-- 1 root root 3204 2010-07-01 10:41 algo2.pdb 287298 2010-06-29 13:03 allresultsrun4.txt -rw-r--r-- 1 carlos carlos 0 2011-06-22 16:51 a.out drwxr-xr-x 5 carlos carlos 4096 2010-06-17 12:27 Archivos_Genomas -rw-r--r-- 1 carlos carlos 35417201 2010-09-03 09:45 arch.txt drwxr-xr-x 2 carlos carlos -rw-r--r-- 1 carlos carlos 4096 2011-05-30 10:06 asciilinux 6026681 2011-06-20 18:00 avana-0.31-200909141330.jar Listar el tamaño del contenido del directorio actual EstacionMM5:~$ ls -s total 6527756 3004 lista.txt 4 query-test.txt 4 algo2.pdb 24 FiltradosNuevo.txt 2676 list_dengue_genes_uniprot.txt 4 R 284 allresultsrun4.txt 39888 gene_association.goa_human Mostrar el contenido de uno o varios archivos se emplea el comando “cat” $ cat [opciones] [archivos] Ejemplos: Mostrar el contenido de un archivo: EstacionMM5:~$ cat GSE13052.txt "ID_REF","GSM302811","GSM303278","GSM303280","GSM303281" M305302","GSM305303","GSM305304","GSM305306","GSM305307" "GI_10047089-S",-14.3,-9.6,1.9,-15.1,-14.5,-34.2,-12.5 "GI_10047091-S",13,24.4,20.5,26.3,24.8,47.6,22.2,16.9 "GI_10047093-S",123,33.1,119.6,176,88.6,206.5,131,75.6 Mostrar el contenido de varios archivos: EstacionMM5:~$ cat NP_780854.txt NP_780940.txt NP_781135.txt NP_781320.txt NP_782116.txt Pasar el contenido de varios archivos a uno nuevo solo: EstacionMM5:~$ cat NP_780854.txt NP_780940.txt NP_781135.txt > salida.txt Añadir al final de un archivo existente el contenido de otro: EstacionMM5:~$ cat NP_780854.txt >> salida.txt Mostrar el archivo en páginas EstacionMM5:~$ cat NP_780854.txt | more Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) NP_780854 Q8TDN4 KLLP EEEE [RK].L.{0,1}[FYLIVMP] Cyclin_N NP_780854 Q9BTV7 KLLP EEEE [RK].L.{0,1}[FYLIVMP] Cyclin_N NP_780854 P78396 KLLP EEEE [RK].L.{0,1}[FYLIVMP] Cyclin_N NP_780854 P24863 KLLP EEEE [RK].L.{0,1}[FYLIVMP] Cyclin_N NP_780854 P24385 KLLP EEEE [RK].L.{0,1}[FYLIVMP] Cyclin_N NP_780854 P30279 KLLP EEEE [RK].L.{0,1}[FYLIVMP] Cyclin_N --More-- El comando “more” es igual al comando “cat”, solo que muestra el resultado en páginas, puede ser utilizado en conjunto con otros comandos: Ejemplos: EstacionMM5:~$ ls | more EstacionMM5:~$ cat matrixG27_cipro.txt | more Para copiar archivos se emplea el comando “cp” $ cp [opciones] [archivo1] [archivo2] $ cp [opciones] [archivo] [directorio] Opción Descripción -i Pregunta por confirmación de copiado antes de sobreescribir un archivo existente. -p Preservar la fecha y los permisos del archivo a copiar -r Copiado recursivo del contenido de un directorio La primera forma copia un archivo con otro nombre, la segunda forma copia un archivo a un directorio. EstacionMM5:~$ cp matrixG27_cipro.txt miarch2.txt EstacionMM5:~$ cp matrixG27_cipro.txt Escritorio/ Para mover o renombrar archivos y directorios se emplea el comando “mv” Ejemplos: $ mv [opciones] fuente destino Opción Descripción -i Pregunta por confirmación antes de sobreescribir el destino. -f Forzar para que se ejecute el comando. Cambiar el nombre a un archivo: EstacionMM5:~$ mv matrixG27_cipro.txt matrix2.txt Cambiar de lugar un archivo: EstacionMM5:~$ mv matrixG27_cipro.txt Escritorio/ El comando “rm” se utiliza para borrar uno o varios archivos. Se debe tener cuidado ya que al ejecutar este comando no es posible recuperarlo. $ rm [opciones] archivo(s) Opción Descripción -f Forzar el comando para borrar archivos. -i Pregunta por confirmación antes de borrar los archivos. -r Borra directorios con su contenido Borrar archivos y directorios: EstacionMM5:~$ rm NP_780854.txt NP_780369.txt EstacionMM5:~$ rm -r temp/ El comando “rmdir” funciona igual que el comando “rm” la diferencia es que sirve para borrar directorios vacíos. $ rmdir directorio(s) Ejemplo: EstacionMM5:~$ rmdir temp/ Para movernos entre directorios se emplea el comando “cd” $ cd directorio Ejemplo: EstacionMM5:~$ cd Escritorio Para saber en qué directorio estamos trabajando mediante el comando “pwd” nos mostrará toda la ruta. $ pwd Ejemplo: EstacionMM5:~$ pwd /home/usuario/Escritorio/Pruebas/ Un comando bastante útil para ahorrarnos tiempo ya sea para movernos rápidamente a un directorio o para ejecutar un programa que se encuentra en un lugar diferente al nuestro se emplea el comando “ln” el cual crea un enlace simbólico hacia ese archivo o directorio. $ln [opciones] archivo1 archivo2 $ln [opciones] directorio1 directorio2 Opción Descripción -f Forzar la ejecucion del comando -n No sobreescribir archivos existentes -s Crea enlace simbólico a un archivo o directorio Ejemplos: EstacionMM5:~$ ln -s /usr/lib/jvm/jdk1.7.0/bin/javac javac javac -> /usr/lib/jvm/jdk1.7.0/bin/javac* EstacionMM5:~$ ln -s bio-l/figuras fig fig -> bio-l/figuras/ La creación de directorios es realizada mediante el comando “mkdir”. Se puede incluso crear una jerarquía de subdirectorios con una sola instrucción. $ mkdir directorio $ mkdir -p directorio1/directorio2/directorio3 Ejemplos: EstacionMM5:~$ mkdir pruebas EstacionMM5:~$ mkdir -p datos/micro/nada El comando “chmod” se emplea para los permisos de ejecución, escritura y lectura de archivos. $ chmod [opciones]modo archivo Opción Descripción -f No muestra mensajes de error en pantalla si falló al ejecutarse el comando -R Aplica el cambio recursivamente Código Descripción u Usuario g Grupo o Otro a Todos Operador Descripción + Anade permiso - Remueve permiso = Asigna permiso Permiso Descripción r Lectura w Escritura x Ejecución s Asigna identificador de usuario o grupo Código Descripción 4 Lectura 2 Escritura 1 Ejecución EstacionMM5:~$: chmod +wrx netbeans-7.0.1-ml-javase-linux.sh EstacionMM5:~$: chmod 241 netbeans-7.0.1-ml-javase-linux.sh rwxrwxrwx 1 root root 31 2011-08-09 10:21 netbeans-7.0.1-ml-javase-linux.sh Linux también cuenta con un comando para hacer una conexión remota. Por seguridad se emplea un modo seguro “ssh” $ ssh usuario host EstacionMM5:~$ ssh [email protected] La transferencia de archivos en linux entre computadoras se puede realizar mediante el comando “scp”. $ scp archivo host Ejemplo: EstacionMM5:~$ scp netbeans.rar [email protected]: Supongamos que por alguna razón un programa se quedó congelado y no responde, por lo que para poder detener dicho programa necesitamos saber qué proceso es el que se está ejecutando, pasa saber esto se emplea el comando “ps”. $ ps [opciones] Opción Descripción -a Lista los procesos no asociados a la consola actual -e Lista todos los procesos -f Crea una lista completa Ejemplos: EstacionMM5:~$ ps -a PID TTY 11010 pts/0 TIME CMD 00:00:00 ps EstacionMM5:~$ ps -e PID TTY TIME CMD 1? 00:00:01 init 2? 00:00:00 kthreadd 3? 00:00:00 migration/0 EstacionMM5:~$ ps -f UID curso PID PPID C STIME TTY TIME CMD 9874 9871 0 12:52 pts/0 00:00:00 bash curso 10962 9874 0 14:55 pts/0 00:00:00 ps -f Una vez que sabemos cuál es el número del proceso del programa que está ejecutándose, procedemos a eliminarlo mediante el comando “kill” $ kill [opciones] proceso Ejemplo: EstacionMM5:~$ kill 26492 EstacionMM5:~$ kill -9 26492 Linux permite la compresión de archivos y un formato muy difundido es la compresión tar.gz y para realizar este tipo de compresión es con el comando “tar” $ tar [opciones] archivos Opción Descripción -c Crear un nuevo archivo -v Lista los archivos que serán empaquetados -f Guarda los archivos en el paquete -x Extrae los archivos que fueron empaquetados en un archivo tar Ejemplos: Para crear un archivo comprimido en tar.gz EstacionMM5:~$ tar -cvf yersiniaouterFasta.tar.gz yersiniaouterFasta/ Para descomprimir un archivo en tar.gz EstacionMM5:~$ tar -xvf yersiniaouterFasta.tar.gz Habrá ocasiones en la que necesitaremos saber cierta información de nuestro sistema operativo en este caso de Bio-Linux y mediante el comando “uname” obtendremos esa información. $ uname [opciones] Opción Descripción -r Nos mostrará la versión del Kernel de nuestro sistema operativo -m Nos mostrará la arquitectura de nuestra computadora (32 o 64) -s Nos mostrará el nombre del sistema operativo -v Nos mostrará la versión del sistema operativo Ejemplos: EstacionMM5:~$ uname -r 2.6.32-33-generic EstacionMM5:~$ uname -m x86_64 EstacionMM5:~$ uname -s Linux EstacionMM5:~$ uname -v #71-Ubuntu SMP Wed Jul 20 17:27:30 UTC 2011 Manejo de archivos de texto con comandos En muchas ocasiones nos topamos con archivos de texto que contienen mucha información y de la cual necesitamos extraer solo de algún tipo en especial. Podríamos emplear los programas de oficina pero muchas veces esto hace que sea tedioso o que por el tamaño de los archivos sea imposible abrirlos con esas herramientas. Por suerte esto lo podemos hacer mediante el uso de ciertos comandos o conjunto de comandos. Unos de los más importantes comandos es el “cat” que ya se mencionó anteriormente, sin embargo, este comando puede ser potenciado si se emplea en conjunto con otros comandos. Comando “sort”. Este comando se emplea para ordenar en forma alfabética las líneas de uno o varios archivos. $ sort [opciones] archivos Opción Descripción -u Ordena y elimina líneas idénticas -r Ordena en forma inversa -n Ordena por forma numérica -f Ignora mayúsculas/minúsculas Ejemplos: Ordena todos los archivos que comiencen con NP EstacionMM5:~$ sort NP* NP_783074 Q9UQ26 VFFV BEEE .[VYF].[VIL] PDZ NP_783075 Q9Y2H9 VFFV BEEE .[VYF].[VIL] PDZ NP_783076 Q9Y3R0 VFFV BEEE .[VYF].[VIL] PDZ Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Ordena y elimina las líneas repetidas EstacionMM5:~$ sort -u NP* NP_783074 Q9UQ26 VFFV BEEE .[VYF].[VIL] PDZ NP_783075 Q9Y2H9 VFFV BEEE .[VYF].[VIL] PDZ NP_783076 Q9Y3R0 VFFV BEEE .[VYF].[VIL] PDZ Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Invierte el orden de la salida EstacionMM5:~$ sort -r NP* Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) NP_783074 Q9UQ26 VFFV BEEE .[VYF].[VIL] PDZ NP_783075 Q9Y2H9 VFFV BEEE .[VYF].[VIL] PDZ NP_783076 Q9Y3R0 VFFV BEEE .[VYF].[VIL] PDZ Otro comando que se utiliza en el mismo sentido que “sort” es el comando “uniq” incluso se emplean los tres para obtener un filtrado de uno o varios archivos. $ uniq [opciones] archivos Opción Descripción -n Ignora las primeras n campos de una linea (separados por espacios o tabs) +n Ignora los primero n caracteres de un campo -c Muestra una línea por vez -d Muestra las líneas duplicadas -u Elimina líneas identicas Ejemplos: Este conjunto de comandos en esa forma se le conoce como concatenación de comandos del sistema. EstacionMM5:~$ cat NP* | sort | uniq -2 NP_782883 Q9H8W5 STHTS EEEBE [ST]..[ST][ST] NP_782883 Q9H987 KFII NP_783074 A1A586 VFFV BEEE .[VYF].[VIL] PDZ Filamin EEEE .[VYF].[VIL] PDZ Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) Hay ocasiones en los que el archivo del cual debemos extraer cierta información es enorme y no sabemos con exactitud si lo que buscamos se encuentra o si la cantidad de datos que cumplan nuestra búsqueda sea significativa. Para buscar rápidamente en nuestro archivo emplearemos el comando “grep”. $ grep [opciones] expresión-regular archivos Opción Descripción -i Ignora mayúsculas/minúsculas -n Muestra la línea donde se encuentra lo que buscamos y el número de línea -c Ejemplos: Muestra el número total de líneas que encontró EstacionMM5:~$ grep 'B2ZZ83' NP_782116.txt NP_782116 B2ZZ83 TNSSS EEEEE [ST]..[ST][ST] Filamin NP_782116 B2ZZ83 TTKSS BEBEE [ST]..[ST][ST] Filamin NP_782116 B2ZZ83 SRISS EBBEE [ST]..[ST][ST] Filamin EstacionMM5:~$ grep -n 'P46013' NP_782315.txt 31:NP_782315 P46013 TASA EEEE T..[ILA] EstacionMM5:~$ cat NP* | sort | grep -n 'Q12959' 189:NP_780938 Q12959 TFNI EEEB .[VYF].[VIL] PDZ 557:NP_781297 Q12959 KYYI EEEE .[VYF].[VIL] PDZ 846:NP_781971 Q12959 MYYI EEEE .[VYF].[VIL] PDZ 1292:NP_782883 Q12959 KFII 1524:NP_783074 Q12959 VFFV BEEE .[VYF].[VIL] PDZ EEEE .[VYF].[VIL] PDZ Otro comando que se emplea en conjunto con otros es el comando “wc”. Este comando se le conoce como el contador de palabras o “word count” en inglés. $ wc [opciones] archivos Opción Descripción -l Muestra el total de líneas que contiene un archivo o el total del conjunto de varios archivos -w Muestra el total de palabras que contiene un archivo o el total del conjunto de varios archivos Ejemplos: EstacionMM5:~$ cat NP_782116.txt | wc -l 52 EstacionMM5:~$ cat NP_782116.txt | wc -w 312 En Linux existen dos comandos para ver el inicio y el final de un archivo. La diferencia es que podemos seleccionar cuantas líneas queremos ver del inicio y cuantas del final. Los comandos que nos permiten hacer esto son el comando “tail” y “head”. $ tail -[n] archivo $head -[n] archivo Ejemplos: EstacionMM5:~$ head -3 NP_781821.txt Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) NP_781821 P31946 HSISNE EEBEEB [RHK][STALV].[ST].[PESRDIF] 14-3-3 NP_781821 P62258 HSISNE EEBEEB [RHK][STALV].[ST].[PESRDIF] 14-3-3 EstacionMM5:~$ tail -3 NP_781821.txt NP_781821 B7Z5U6 RRHK EEEB [KR][HR].[KR] SIR2 NP_781821 B7WNN4 RRHK EEEB [KR][HR].[KR] SIR2 NP_781821 B5MCS1 RRHK EEEB [KR][HR].[KR] SIR2 Dominio(ProtB) El comando “cut” cortar un archivo en columnas y nos permite definir un delimitador para realizar el corte. $ cut [opciones] archivos Opción Descripción -f Corta la columna (el tab es reconocido como delimitador por defecto) -d Especifica el tipo de limitador para cortar por columnas Ejmeplos: EstacionMM5:~$ cut -f5 NP_781821.txt Motivo(Patron) [RHK][STALV].[ST].[PESRDIF] [RHK][STALV].[ST].[PESRDIF] [KR][HR].[KR] [KR][HR].[KR] EstacionMM5:~$ cut -f5,3,6 NP_781821.txt Motivo(ProtA) Motivo(Patron) Dominio(ProtB) HSISNE [RHK][STALV].[ST].[PESRDIF] 14-3-3 HSISNE [RHK][STALV].[ST].[PESRDIF] 14-3-3 RRHK [KR][HR].[KR] SIR2 RRHK [KR][HR].[KR] SIR2 EstacionMM5:~$ cut -d'[' -f5 NP_781821.txt Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) PESRDIF] 14-3-3 PESRDIF] 14-3-3 PESRDIF] 14-3-3 PESRDIF] 14-3-3 El comando “paste” se utiliza para unir varios archivos en uno solo, se puede emplear en conjunto con el comando cut. $ paste [opción] archivos Por regla general el delimitador de unión es un tab, sin embargo, es posible definir otro. EstacionMM5:~$ paste -d';' NP_781320.txt NP_781329.txt > sal Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB);Proteina_A Proteina_B Motivo(ProtA) Accesibilidad Motivo(Patron) Dominio(ProtB) NP_781320 P21333 TNNSS BEEEE [ST]..[ST][ST] Filamin;NP_781329 P21333 SVDSS EBBEE [ST]..[ST][ST] Filamin NP_781320 O75369 TNNSS BEEEE [ST]..[ST][ST] Filamin;NP_781329 O75369 SVDSS EBBEE [ST]..[ST][ST] Filamin NP_781320 Q14315 TNNSS BEEEE [ST]..[ST][ST] Filamin;NP_781329 Q14315 SVDSS EBBEE [ST]..[ST][ST] Filamin Finalmente, un comando que nos resulta muy útil es “man” que no es más que un manual de cómo utilizar los comandos del sistema operativo. $ man nombre_comando