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

Documentos relacionados