LINUX (o GNU/LINUX, más correctamente) es un Sistema Operativo, así como lo son Mac OS o Windows. Por ende, Linux es el software necesario para que la computadora pueda ejecutar programas como: editores de texto, navegadores de Internet, etc. Linux puede usarse mediante un interfaz gráfico al igual que Windows o Mac OS, pero también puede usarse mediante línea de comandos como DOS. Windows es un sistema operativo claramente orientado a un uso de escritorio, a diferencia de Linux donde la mayor parte de las tareas de configuración y administración deben hacerse a través de una consola o terminal. Por ello, aunque Windows viene con una versión de MS-DOS, las posibilidades de esta son muy limitadas.
MobaXterm es una terminal para Windows con comandos de Linux. Es totalmente gratuita y de uso doméstico.
Figura 1:
Visualización de MobaXterm
MobaXterm es una herramienta para que los usuarios de Windows puedan realizar determinadas funciones de Linux como el uso de los comandos más habituales para controlar el sistema operativo desde el teclado y conectarse a servidores de Linux para trabajar.
Descargar MobaXterm, diríjase a la siguiente dirección web https://mobaxterm.mobatek.net/download.html y descargue la versión Home Edition – Free (Installer edition). Les descargará una carpeta zip que contiene un archivo instalador que deben ejecutar siguiendo las siguientes indicaciones:
190.64.49.20
estudiantes
22222
Figura 2: Instructivo de Instalación y acceso a
MobaXterm
Luego de ingresar el host y especificar el nombre de usuario dar OK
Linux tiene su origen en Unix (otro sistema operativo).
Un comando (command) es una instrucción u orden que el usuario proporciona a un sistema informático, desde la línea de comandos (command line) (shell2, en el caso de Linux es habitualmente Bash). Puede ser interno (built-in) o externo (archivo ejecutable). Suele admitir parámetros o argumentos de entrada, lo que permite modificar su comportamiento. A partir de un conjunto de comandos podemos crear herramientas informáticas y ejecutar diferentes tareas. Algunos ejemplos en donde las usaríamos son: - Archivos que son muy grandes para abrir en la PC utilizando un editor de texto o Excel. -Manipulación de datos repetidamente o datos que necesiten cambios que manualmente sea muy laborioso y nos llevaría mucho tiempo de realizar. -Cualquier análisis que un programa diseñado con interfaz gráfica no lo realice.
Los comandos pueden ser ejecutados por sí mismo o se pueden agregar argumentos (opciones) adicionales para hacer que produzcan diferentes resultados. La sintaxis típica de un comando puede lucir más o menos así:
comando [-argumentos] [-argumento] [--argumentos] [archivo]
Ejemplos
ls
Lista los archivos del directorio de
trabajo
ls -l
La opción/argumento –l
Lista los
archivos del directorio de trabajo, en un formato donde incluye más
información
ls -l --human-readable
La opción/argumento
–-human-readable
lista los archivos del directorio de
trabajo en un formato más entendible para nosotros. Se puede utilizar
versión abreviada: ll
.
cat [nombrearchivo]
Muestra contenidos del archivo,
con el número de líneas que posee.
cat -n [nombrearchivo]
Muestra contenidos del
archivo, con el número de líneas que posee.
1.Compare la salida en pantalla de los siguientes comandos y argumentos:
ls -l --human-readable
ll
2.Explore el comando anterior ls
dentro de la
terminal.
ll
El disco de tu computadora en el cual corre LINUX es llamado /
(slash) o raíz ( root, en inglés). Es el sitio donde
están guardados todos los archivos del sistema. Una de las carpetas por
debajo de root es home. Por lo tanto, empezando desde
la raíz (/), el camino ( path, en inglés) hasta el
home es: /home
(/ + home). Es importante utilizar
el camino a la hora de utilizar o localizar archivos y carpetas.
Por ejemplo, si estamos en /home/prueba
para crear un
archivo de texto podríamos hacer lo siguiente:
touch prueba.txt
nano prueba.txt
o
touch /home/prueba/prueba.txt
Sin embargo, si estamos en la carpeta prueba
pero
queremos crear un archivo llamado prueba.txt
en
home
tenemos que indicar el camino:
touch /home/prueba.txt
Ruta absoluta
touch ../prueba.txt
Ruta relativa
Además de home
hay muchos otros directorios/carpetas que
nos permiten configurar y controlar LINUX (Tabla 1).
Tabla 1: Estructura de Linux
Directorio | Descripción |
---|---|
/ |
Directorio raíz |
/bin |
Programas |
/dev |
Archivos de Hardware |
/etc |
Archivos de configuración de sistema |
/home |
Directorio principal del usuario |
/media /mnt |
Drivers y discos removible |
/proc |
Procesos en ejecución |
/tmp /var |
Archivos temporales |
/usr |
Programas instalados por el usuario |
Para saber dónde estamos parados dentro de LINUX podemos en la
terminal escribir el comando pwd
.
pwd
Estamos escribiendo una orden (comando) en la terminal que va a ser
interpretada (por Bash) y ejecutada al presionar enter. El comando
pwd
es el que se utiliza para poder saber cual es el
directorio actual (su nombre proviene de: Print Working
Directory). El comando pwd
es un ejemplo de
comando construido internamente (built-in) en el
sistema operativo, el cual no tuvimos que instalar previa instalación
del OS.
Para poder cambiar de directorios desde la terminal es necesario
utilizar el comando cd
(built-in). Este comando
(cd
, Change Directory) nos va a
permitir movernos dentro de la estructura de sistema de LINUX. Algunos
consejos útiles:
cd
En este caso el string ..
nos permite movernos una
carpeta “arriba” en la estructura de LINUX. Por ejemplo si estamos en un
camino que sea /home/carpeta1/carpeta2
y queremos volver a
carpeta1 podríamos utilizar cd ..
o
cd /home/carpeta1
(sería la dirección completa). Si
utilizamos un .
en lugar de ..
estamos
indicando el directorio actual. Existen formas rápidas de ir al
directorio home
, por ejemplo
cd
o
cd ~
Para movernos dentro de directorios es importante saber que la terminal de LINUX posee una función de autocompletado que ejecutada al apretar la tecla Tab. Si hay más de una opción de autocompletado, se imprime en pantalla las diferentes opciones disponibles.
Figura
3: Estructura jerárquica en LINUX
Para saber que archivos/carpetas están presentes dentro de una
carpeta dada uno puede utilizar el comando ls
(su nombre
proviene de listar).
ls
Para visualizar los parámetros que se pueden utilizar junto a
cualquier comando built-in se puede utilizar el comando
man
antes de la instrucción de interés.
man ls
Para obtener ayuda también se puede utilizar el argumento
help
(ls --help
o more -h
;
depende del comando a usar la forma de implementarlo. Otra opción es
utilizar el comando info
.
info ls
Salida de opciones del comando ls
:
-u
+ -lt
: ordenar por tiempo de acceso
y mostrar;
l
: mostrar el tiempo de acceso y ordenar por
nombre.-U
: no ordenar; listar las entradas en el orden del
directorio.
v
: ordenar por versión (útil para archivos con
números en sus nombres).
-w
, --width = COLS
: suponer un ancho
de pantalla de COLS columnas en lugar del valor actual.
-x
: listar las entradas en filas en lugar de en
columnas.
-X
: ordenar alfabéticamente por la extensión de los
archivos.
-l
: mostrar un archivo por línea.
whoami
para ver que
usuario soy en el sistema:whoami
who
date
:date
mkdir
(make directory:mkdir [nombre de la carpeta a crear]
mkdir prueba
ls
En este caso creamos una carpeta llamada prueba en el directorio de trabajo.
rm
(remove), cuidado con
su uso!:rm [nombre del archivo que deseen eliminar]
rmdir [nombre del directorio/carpeta que deseen eliminar]
cp [nombre del archivo que deseen copiar] [destino donde desean copiar el archivo]
- Supongamos que tenemos un archivo llamado `prueba.txt` (lo podemos crear utilizando el comando `touch` seguido por el nombre del archivo. Ejemplo: `touch prueba.txt`) y si lo queremos copiar y asignar un nuevo nombre, por ejemplo `prueba2.txt`:
cp prueba.txt prueba2.txt
mv
(move):mv prueba2.txt temporal.txt
Ahora el archivo prueba2.txt se llama temporal.txt
mv
es útil también para cambiar la
localización de los archivos. Por ejemplo, para cambiar la localización
del archivo temporal.txt
del directorio de trabajo al
home
, se utiliza:mv temporal.txt /home
Pruebe los comandos anteriores y vea su ayuda con el argumento
help
y utilizando info
y man
.
Nosotros trabajaremos remotamente en un servidor de LINUX. Esto quiere decir que utilizaremos nuestra computadora como base para enviar ordenes (comandos) para que las realice el servidor. Al setear el servidor en MobaXterm nos permite logearnos rápidamente sin tener que hacer los pasos que describimos a continuación. En LINUX la sintaxis es sencilla, en una terminal se escribirá:
ssh nombre_usuario:contraseña@maquina_a_la_cual_nos_conectaremos
o alternativamente
ssh nombre_usuario@maquina_a_la_cual_nos_conectaremos
(en este caso, la maquina nos pedirá que ingresemos la contraseña)
-p
:ssh -p22 nombre_usuario@maquina_a_la_cual_nos_conectaremos
-Y
:ssh -Y nombre_usuario@maquina_a_la_cual_nos_conectaremos
Vale aclarar que en lugar de indicarle el nombre del host podemos indicarle el IP.
Para conectarse al servidor Torito:
ssh -p 22222 estudiantes@190.64.49.20
Para transferir archivos entre una maquina local y servidor se
utiliza el comando scp
( secure copy )
scp remote_user@remote_host:/camino/al/archivo/remoto /camino/al/archivo/local
( copia en remoto y pega en local)
Y vice versa:
scp /camino/al/archivo/local remote_user@remote_host:/camino/al/archivo/remoto
LINUX utiliza permisos de archivos para prevenir el borrado
accidental de archivos o para impedir la manipulación de ciertos
archivos por otros usuarios. Cada archivo y directorio está asociado con
tres tipos de permisos: user,
group, y others.
Para ver los permisos de los archivos en un directorio se utiliza el
comando ya visto ls
pero con el parámetro
-l
.
ls -l
Un ejemplo de salida es:
drwxr-xr-x 2 juan usuarios 4096 Agosto 20 16:40 genomica
-rw-r--r-- 1 juan usuarios 0 Agosto 20 16:45 fasta
En este caso el user es juan
y el
group es usuarios
(creado por el administrador de
sistemas). El siguiente número luego de usuarios indica el peso del
archivo.
La primer columna es la información asociada (tipo y permisos) al
archivo/directorio. En el primer ejemplo vemos un directorio de nombre
genómica. Sabemos que es un directorio ya que la primer columna comienza
con d
indicando que es un
directorio. Por otro lado, la primer columna
de fasta comienza con un -
, lo que indica que es un
archivo. Los primeros tres caracteres luego de
la primer letra, indican los permisos del usuario
(juan): rwx
, donde: - r
: permiso de lectura;
el archivo se puede leer, en el caso de una carpeta su contenido se
puede listar. - w
: permiso de escritura; el archivo o
carpeta puede ser modificado - x
: permiso de ejecución; el
archivo puede ser ejecutado ó en el caso del directorio, este se puede
fijar como el directorio de trabajo.
Es importante aclarar que el orden del tipo de permiso siempre se
mantiene, y en el caso de que un usuario/grupo/otros no tenga un tipo de
permisos se indican con un -
. Los segundos tres caracteres
indican el grupo y los últimos tres indican los permisos del resto de
los usuarios fuera del grupo que integra juan.
1. ¿Qué permisos tiene sobre el archivo fasta el grupo usuario?
2. ¿Qué parámetros por defecto se otorgan al crear un archivo?
3. ¿Y una carpeta?
4. ¿Cuál es la diferencia?
Para cambiar los permisos de un archivo/carpeta se utiliza el comando
chmod. Por ejemplo, en orden de cambiar los permisos del archivo fasta
en orden de que solo el dueño del archivo (juan) pueda leerlo se utiliza
el siguiente comando: - chmod go-r fasta
(donde
go
indican los niveles en los cuales quiero cambiar el
permiso (go= group y others), mientras que el
–
indica sacar, y r
indica permiso de
lectura). Para agregarle el permiso lectura solo al nivel grupo:
-chmod g+r fasta
(donde g
indica el nivel
(g = group), mientras que el +
indica
agregar, y r
indica permiso de lectura) Para agregarle el
permiso lectura solo a todo nivel: - chmod a+r fasta
(a
significa todos los usuarios (juan, usuarios, y
otros)).
Crear una carpeta de nombre prueba, cambiar el permiso para que el
grupo solo pueda leerla, luego agregar el permiso de escritura. Crear un
archivo dentro de prueba llamado prueba.txt
y luego elimina
la carpeta y su contenido. Pista: para remover
una carpeta y todo su contenido se utiliza el parámetro
-r
.
Muchos comandos que se utilizan en bioinformática devuelven
información a la terminal en forma textual. Muchas veces esa información
es de vital importancia y nos gustaría conservarla. Para redirigir la
información textual a un archivo hay que utilizar el carácter
>
. La sintaxis sería la siguiente:
man echo > manual_echo.txt
(recordar que los espacios separan archivos por lo que es conveniente
utilizar otro caracter es sustitución) - Si se utiliza
>>
en lugar de >
en vez de reescribir
un archivo se añade al archivo original.
1. Explore los comandos more
,
less
, tail
y head
. ¿Para
qué sirven?
Utilice estos comandos para explorar el
archivo manual_echo.txt
2. ¿Cuál es la utilidad del comando echo?
3. ¿Cuál es la última línea de este archivo?
Con los pipes, representado por el carácter |
,
es posible mandar el output de un programa a otro programa para
que lo utilice como input. Por ejemplo, en el siguiente
comando:
cat /etc/services | sort | tail -n 10
En el ejemplo de arriba utiliza el comando cat
(concatenar) para extraer la información del
archivo services dentro de la carpeta etc. Esa información es luego
tomada por el comando sort
que las ordena
alfanuméricamente. Finalmente, la información ordenada es tomada por el
programa tail
, el cual nos muestra las últimas 10 líneas de
la información.
cat
es un comando muy útil para
concatenar archivos, por ejemplo:
echo “Hola” > A.txt
echo “Mundo” > B.txt
cat A.txt B.txt > C.txt
less C.txt
Hola
Mundo
rm A.txt B.txt
En este ejemplo se concatena la palabra Hola del archivo
A.txt
con la palabra Mundo del B.txt
y se guardan en un nuevo archivo llamado C.txt
. En el
manejo de datos bioinformáticos es una práctica común concatenar
archivos.
El comando wc
( word
count_) se utiliza para contar palabras, caracteres y líneas de
un archivo.
1. ¿Cuántas líneas posee el archivo /etc/services?
2. ¿Cuántas líneas por defecto muestra el comando
head
?
.tar
y .zip
Muchas veces queremos comprimir archivos o grupos de archivos para ahorrar espacio en nuestro disco duro (o en el servidor). Es una práctica frecuente en bioinformática ya que se suele trabajar con datasets muy grandes. Los archivos .tar son muy similares a los archivos .zip, y se usan frecuentemente en LINUX. Sin embargo, el archivo .tar no es un archivo comprimido por sí mismo, sino más bien que es un tipo de archivo contenedor.
Para explorar estos comandos vamos a crear un archivo:
wget www.google.com.uy -O google.html
Con wget
estamos pidiendo a LINUX que
nos descargue cierta información alojada en una dirección web. El
-O
es el parámetro que indica que el output se
guardado en google.html
.
.zip
que
contenga google.html
utilizamos el comando zip
y luego eliminaremos el archivo no comprimido:zip -r google.zip google.html
rm google.html
La opción -r
no es necesaria, pero si lo es en caso de
querer comprimir un directorio, ya que -r
es un acrónimo de
recursivo.
.tar
:tar -cvf google.tar google.html
La opción -c
le inidica al tar que tiene que crear un
archivo (y no extraerlo), la opción -v
le indica que tiene
que mostrar mensajes de progreso y error y la opción -f
indica que el nombre del archivo a crear va a ser dado
(google.tar
). Para extraerlo se sustituye la c
por una x
:
tar -xvf google.tar
.tar
que a su vez este comprimido
se utiliza la opción -z
:tar -cvzf google.tar.zip google.html
tar -xvzf google.tar.zip
Para visualizar archivos zipeados podemos utilizar
los comandos zcat
, zless
o
zmore
.
El carácter *
es muy utilizando para indicar cualquier
texto. Supongamos que queremos mover todos los archivos
.fasta
de una carpeta a otra:
mkdir seq_fas
touch a.fasta
touch b.fasta
touch c.fasta
mv *.fasta seq_fas
En este caso creamos una carpeta denominada seq_fas
en
la cual vamos a guardar los archivos .fasta
creados.
Borrar la carpeta seq_fas y todo su contenido.
Un comando muy útil para buscar contenidos dentro de un archivo de
texto es el comando grep
. Grep puede ser
utilizado para buscar un texto específico dentro de uno o más archivos.
Es importante notar que hay caracteres especiales que no se pueden
utilizar literalmente a menos que se indique. Por ejemplo,
grep *
no es igual a grep “*”
, en el segundo
caso va a buscar todas las líneas que posean el carácter *
.
Otros ejemplos son: [; >; ^; {;.; etc. No entraremos en detalles de
la sintaxis particular, pero lo pueden buscar bajo el nombre de
expresiones regulares.
Algunos parámetros útiles de grep
: -
-c
: cuenta las líneas en las que aparece el texto
especificado. - -v
: imprime en pantalla toda las líneas en
la cual no aparece el texto especificado. - -o
: imprime en
pantalla todas las ocurrencias del texto especificado - -i
:
ignora mayúsculas/minúsculas
.gff
(archivo típico de anotación):
grep “Helix” P68871.gff
(me devuelve todas las líneas
en que la palabra helix aparece)grep –v “Helix” P68871.gff
(devuelve todas las líneas
en que la palabra helix no aparece)grep -c “Helix” P68871.gff
(cuenta todas las líneas en
que las cuales la palabra hélix aparece)grep –vc “Helix” P68871.gff
(cuenta todas las líneas en
que la palabra helix no aparece)grep -o “Helix” P68871.gff
(devuelve todas las
ocurrencias de la palabra helix en líneas separadas)grep –oci “helix” P68871.gff
(cuenta las ocurrencias de
la palabra helix sin importar si aparece en mayúscula o minúscula)Hay muchos editores de texto ya sean gráficos como gedit o en terminal como nano. Nano es de alguna manera difícil de usar ya que para todos los comandos se tienen atajos de teclado, pero conociéndolos se puede modificar texto fácilmente. Es muy útil cuando queremos hacer pequeños cambios o cuando estamos trabajando en un servidor que no nos permite visualizar gráficos. A la hora de usar nano es recomendable que leas la lista de comandos a utilizar. En la siguiente imagen pueden visualizar estos comandos:
uniq
cut
find
locate
awk
sed
wget
) el siguiente archivo
fasta:a. ¿Qué permisos tiene?
b. ¿Cuantas veces aparece la secuencia GGCCA? ¿En cuantas líneas?
c. ¿Cuantos genes hay?
d. ¿Cuál es el último gen? ¿Y el primero?
a. ¿Cuantos genes hay?
b. ¿Cuantas veces aparece la secuencia GGCCA?
c. ¿Cuantas veces aparece la secuencia GGCCA en el primer gen?
a. ¿Cuánto pesa el archivo?
b. ¿Como cambiaría los permisos para que sólo usted pueda modificar ese archivo?
~~~~~~~~~~~~~~~~~~
1Kernel: en informática, un núcleo o kernel es un software que constituye una parte fundamental del sistema operativo, y se define como la parte que se ejecuta en modo privilegiado (conocido también como modo núcleo). Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo.
2Shell: en informática, el shell o intérprete de órdenes o intérprete de comandos es el programa informático que provee una interfaz de usuario para acceder a los servicios del sistema operativo. En nuestro caso utilizaremos del tipo texto, CLI (command line interface).