Introducción a Linux. I.

Anuncio
Introducción a Linux. I.
1. ¿por qué Unix en bioinformática?
o Razones históricas
Unix es un SO académico
las herramientas centrales – FASTA, BLAST,
CLUSTALW, MAPMAKER – están escritas para Unix
la web está escrita para Unix
el manejo de las bases de datos más “pesadas” empezó
bajo Unix
o Razones prácticas
Unix tiene un modelo I/O simple
Unix posee buenas herramientas de programación
tiene una aproximación “building block” a la
programación
no requiere de interfaces gráficas para los usuario
o Características claves
multitarea
se pueden correr múltiples programas
simultáneamente
multiusuario
múltiples usuarios pueden ingresar al mismo
tiempo
“network-ready”
fue concebido para el trabajo en redes, por lo que
maneja a los usuarios remotos de igual modo que a
los locales
o Variantes de Unix
Comerciales
Solaris, SCO UNIX, Tru64 Unix....
Open source (libre)
FreeBSD, Linux
2. entonces Linux...
Linux es un sistema operativo (un conjunto de instrucciones que nos
permiten realizar tareas en nuestro ordenador) iniciado por Linus
Trovalds en 1991. Sus caracterísitcas más notables son:
o
proviene de Unix (otro sistema operativo), y por ello es potente,
seguro y estable (resultando un sistema operativo ideal para
o
o
servidores pero también excelente como sistema de oficina o
escritorio)
por esta misma razón, es un sistema multiusuario real y
multitarea, y funciona de manera muy productiva en redes
es parte del proyecto GNU, lo que significa que es libre (aunque
no necesariamente gratuito) y se puede modificar su código
fuente, tanto para adaptarlo a tus propias necesidades como para
contribuir en su continuo desarrollo
Tiempo después, con el fin de adaptar el sistema operativo y facilitar su
instalación, nacieron las compañías distribuidoras de Linux. Si bien
pueden cobrar por ofrecer sus productos en CD o algún otro soporte,
deben poner su código a disposición del público en la medida en que
han utilizado software GNU (bajo licencia GPL).
o
Mandrake, RedHat/Fedora, Debian, SuSE
Las diferentes distribuciones difieren en los scripts de instalación,
paquetes, manejo del escritorio... No existe una mejor que las demás
sino alguna que se adapta mejor a tus necesidades.
3. algunos links de utilidad
o proyecto GNU: http://www.gnu.org
o sitio principal: http://www.linux.org
o texto más completo: RUTE Linux Tutorial and Exposition
4. archivos y sistema de archivos
o nombres de archivos
“case sensitive”, distinguen mayúsculas de minúsculas
• e.g. Rhizobium, RHIZOBIUM, rhizobium,
RHIZObium... son archivos diferentes y por tanto
pueden estar en la misma ubicación
no es necesario que tengan una extensión, aunque suele
existir a modo orientativo; asignar la misma extensión a
los archivos de un mismo tipo puede resultar útil para
agruparlos fácilmente
los nombres pueden llegar a ser muy largos
• caracteres recomendados: A-Z, a-z, 0-9, el punto
(.), el guión (-) y el guión bajo (_)
•
o
no se permiten nombres con: espacios (se suelen
sustituir por guión bajo), acentos y otros signos de
puntuación (excepto el punto), ni la ñ
sistema de archivos – directorios
en Linux (como en cualquier Unix) no existe el concepto
de “unidad” para cada unidad física del disco o partición
como en Windows
el equivalente a una “carpeta” es el directorio, donde se
ubican los archivos
todos los discos duros o de red se montan bajo un sistema
de directorios en árbol
• /
es la raíz del sistema de directorios
• /etc
contiene los archivos de
configuración de la mayoría de los programas
• /home
contiene los archivos personales de
los usuarios
• /bin
contiene comandos básicos y
muchos programas
• /tmp
ficheros temporales o de recursos
de programas
• /usr
programas y librerías instalados con
la distribución
• /usr/local
programas y librerías instalados por
el admiistrador
• /lib
librerías varias y módulos del
kernel
5. usuarios y permisos
Linux es un sistema operativo multiusuario. Cada usuario tiene su
directorio en /home/usuario. Por defecto, sólo puede escribir, modificar
y borrar archivos dentro de ese directorio. Ningún otro usuario podrá
acceder a los archivos de su directorio, ni siquiera puede ver cuáles son.
Además, todos los programas recuerdan las preferencias de cada
usuario.
La excepción es el root, o administrador del sistema. Es el usuario que
tiene acceso a todos los directorios y archivos, así como a la
configuración del sistema. Es el que puede hacer todo con la máquina,
incluso “romperla”.
Todos y cada uno de los archivos y directorios del árbol jerárquico
tienen permisos. Estos permisos indican, para cada usuario del sistema,
si puede ejecutarlo, si puede ver su contenido o si puede borrarlo o
modificarlo. Del mismo modo, cada elemento del sistema de archivos
tiene un dueño. Por defecto, este dueño del elemento (tanto archivo
como directorio) tiene acceso total a él y puede realizar todas las
acciones posibles permitidas.
o
o
todos los archivos de las carpetas de sistema y configuración
suelen tener a root como propietario
los de la carpeta personal de cada usuario tienen a ese usuario
como propietario, y el resto de los usuarios normales no tienen
ningún permiso sobre estos elementos
Si bien los permisos parecen algo extraños, después de un rato aprendes
a leerlos. La primer columna indica el “flag” y se relaciona con el tipo
de archivo. Luego vienen tres grupos de tres columnas, donde el primer
grupo indica los permisos del propietario del fichero, el segundo los
permisos del “grupo” de usuarios al que pertenece el propietario y el
último grupo de columnas refiere a los permisos que tienen todos los
otros usuarios (algo así como owner – group - world). Los permisos
para leer, escribir y ejecutar se indican como r, w y x respectivamente.
Cuando se refieren a un directorio, r significa que puedes listar su
contenido, w que puedes crear y borrar archivos en él, mientras que x
indica que puedes “meterte” (cd) en ese directorio.
Más sobre usuarios, grupos y permisos en el archivo
PermisosLinux.pdf que se encuentra en la página
6. terminal o shell
Las versiones actuales de Linux utilizan entornos gráficos similares a
las interfaces de Microsoft Windows o Macintosh.
No obstante, la manera más habitual de administrar una máquina Linux
es desde una terminal o intérprete de comandos, que es en modo texto y
generalmente presenta un PROMPT.
o
o
Un PROMPT es lo que el shell escribe automáticamente en cada
línea, habilitándonos a que le demos instrucciones
las instrucciones se dan como una línea de comandos, opciones y
argumentos y finalmente un INTRO para que sea recibido por la
máquina y ejecutado
o
existen diferentes tipos de shell, con nombres
como bash, sh, csh, tcsh... cada una con sus particularidades
PROMPT
Hay diferentes visualizaciones posibles:
o
o
o
o
tlaloc>
natalia@tlaloc 1:12PM
natalia@tlaloc Bioinformatics/Vol_12 $
[natalia@tlaloc Vol_12] #
El prompt indica que la terminal está pronta para aceptar un comando.
Mientras un comando de ejecución larga esté corriendo, el prompt no
va a reaparecer hasta que este finalice y el sistema quede pronto para el
siguiente pedido.
Línea de comandos:
Mientras no se presione INTRO, te puedes mover sobre la línea de
comandos y editarla usando el teclado.
o
o
o
o
o
o
suprimir, backspace, flechas izquierda y derecha
control-A: inicio de la línea
control-E: final de la línea
control-K: borra desde la posición del cursor hasta el fin de la
línea
flechas arriba y abajo: permite moverte entre las líneas de
comandos utilizadas anteriormente (historial); en general se
editan y vuelven a utilizar
TAB: permite completar nombres de archivos, directorios,
comandos que conoce la máquina; además de agilizar la
escritura, ayuda a evitar errores de tipeo, entre otros
Existen diferentes tipos de comandos, algunos como ls devuelven
rápidamente una salida en la pantalla (en este caso una lista de los
archivos existentes) y liberan el prompt, mientras que otros
como clustalx abren una nueva interfaz, dejando inhabilitado el prompt
hasta salir del programa ClustalX.
Wildcards:
o
o
o
o
o
o
o
o
*
se refiere a entre 0 y más caracteres (nº indeterminado)
e.g.
*.txt se refiere a todos los archivos de
extensión txt
e.g.
gen*.txt incluye genomics_course.txt y
también genes.txt
?
se refiere a un único caracter
e.g.
genIg?.txt incluye genIgG.txt y genIgM.txt
[0-9]* se refiere a cualquier combinación de números
[a-d]* se refiere a cualquier combinación de a, b c y d
[^a-d]* se refiere a cualquier combinación de caracteres excepto
los especificados
[ad] se refiere a la letra a ó d, una sola de ellas
[ad]* se refiere a cualquier combinación de los caracteres a y/o
d
[A-Za-z] se refiere a cualquier par de letras, siempre y cuando la
primera sea en mayúscula y la segunda minúscula
7. logging
Cuando ingreses como usuario a la máquina (va a ser necesario ingresar
una contraseña) vas a estar en un lugar del sistema conocido como “the
home directory”. Aquí podrás libremente crear y eliminar archivos y
directorios (cosa que no podrás hacer en cualquier parte del sistema).
El path (una variable que indica la ruta de directorios) en este caso es
/home/nombreusuario. Como es un poco tedioso de escribir, el shell te
permite abreviarlo a ~.
Una vez finalizadas tus tareas, cierras la sesión en la terminal usando el
comando exit.
8. algunos comandos básicos de la terminal BASH
El comando cd
Es un comando que permite cambiar nuestro directorio de trabajo
(“change directory”). Cuando trabajas con un archivo debes indicar el
path en el que se encuentra. Alternativamente, puedes cambiarte a su
directorio (usando cd) y por lo tanto ya no va a ser necesario indicar el
path.
Para ir a un nuevo directorio puedes usar una referencia absoluta o una
relativa. Usas una referencia abosluta si estando en /home/natalia te
cambias al directorio /home/natalia/leptosiras/secuencias. Como en
realidad ya estás “parado” en /home/natalia/, puedes ir directamente a
leptospiras/secuencias (usando sólo una referencia relativa).
De mucha utilidad, son dos complementos de la referencia relativa, el
punto (.) que indica el directorio actual y los dos puntos (..) que indican
el directorio inmediatamente superior. Mientras .. es muy usado para
moverse entre los directorios, . se utiliza más en referencia a archivos
ejecutables.
Una vez que te loggees en la máquina, descarga de la página del curso
el fichero TallerBioinfo al escritorio de tu máquina y luego ubícate en
el directorio en el que se encuentra el archivo Monica.txt. Para
construir el path puedes ayudarte viendo el navegador gráfico primero.
[usuario@maquina ~] $ cd Desktop/TallerBioinfo/Linux/
¿qué otros archivos se encuentran en el directorio?
[usuario@maquina Linux] $ ls
¿cuántos directorios tienen a TallerBioinfo como su directorio superior?
[usuario@maquina Linux] $ cd ..
[usuario@maquina TallerBioinfo] $ ls
o también puedes hacer (más rápido):
[usuario@maquina Linux] $ ls ..
El comando ls
Este comando lista la información de los archivos y directorios
contenidos en el directorio indicado (por defecto el actual). Tiene
diferentes opciones, como ser -1 (muestra un solo fichero por línea de
salida), -l (la salida tiene un formato largo, indicándose dueño,
permisos, tamaño, fecha de modificación) y -R (lista subdirectorios
recursivamente). Para saber sobre otras opciones, tu puedes recurrir a la
ayuda de este comando, usando la opción -–help.
El comando help
Este comando, usado bajo la forma comando --help, despliega
información acerca del comando requerido. Indica cuáles son las
opciones y argumentos asociados a cada comando.
Prueba de obtener ayuda sobre el comando ls.
[usuario@maquina Linux] $ ls --help
Intenta obtener una lista de los ficheros contenidos en el Desktop.
Prueba con diferentes opciones del comando ls. Recuerda que puedes
ubicarte en el directorio Desktop, pero también puedes lograr la lista
desde dónde te encuentres en este momento. Importante, recuerda
ayudarte con el tabulador para completar las rutas.
Un camino: [usuario@maquina Linux] $ ls -R ~/Desktop/
Otro: [usuario@maquina Linux] $ cd ~/Desktop/
[usuario@maquina Desktop] $ ls -R
Las diferentes opciones pueden utilizarse juntas (al menos en el caso
del comando ls). Prueba de realizar ls -Rl y ls -lR. ¿Los outputs son
iguales? ¿Qué permisos tienes sobre cada fichero?
El comando mkdir
Este comando sirve para crear directorios dentro del espacio de la
máquina donde tienes permiso para hacerlo (usualmente en
/home/usuario). Puedes señalar la ubicación del nuevo directorio con un
path absoluto o relativo.
Queremos crear los directorios pruebas y Pruebas dentro del directorio
nuevo mis_pruebas.
[usuario@maquina Desktop] $ mkdir mis_pruebas
[usuario@maquina Desktop] $ cd mis_pruebas
una opción: [usuario@maquina mis_pruebas] $ mkdir pruebas
otra: [usuario@maquina Desktop] $ mkdir mis_pruebas/Pruebas
Los comandos mv y cp
Con el comando mv puedes cambiar archivos y directorios de lugar. La
sintaxis de estos comandos es: mv/cp fichero_origen fichero_destino.
Como otras veces, puedes usar referencias absolutas o relativas.
Prueba copiar Monica.txt hasta la carpeta Pruebas. Una alternativa es,
estando en TallerBioinfo:
[usuario@maquina TallerBioinfo] $ cp ./Linux/Monica.txt
../mis_pruebas/Pruebas
Intenta alguna otra alternativa y verifica con ls que efectivamente se
hayan copiado al directorio indicado.
Si observas atentamente, el comando mv (y también cp) puede
utilizarse para renombrar archivos. Sólo es necesario indicar un nuevo
nombre para ese archivo en el destino.
[usuario@maquina Desktop] $ mv mis_pruebas Mispruebas
Intenta un cambio de nombre usando cp.
Los comandos rmdir y rm
El comando rmdir permite borrar directorios vacíos. En caso contrario
sale una advertencia. El comando rm permite borrar uno o varios
archivos. La opción -R hace que el comando opere con recursividad,
esto es, que se vaya adentrando nivel por nivel y borrando todo lo que
encuentra. La opción -i hace la eliminación interactiva (pide
confirmación antes de proseguir). Muy importante, trabajando desde
una terminal, los ficheros una vez eliminados, son prácticamente
imposibles de recuperar.
Además, recuerda que puedes utilizar los wildcards para borrar
múltiples ficheros al unísono o alguno cuyo nombre no recuerdas
exactamente.
Genera una copia del directorio Mispruebas y su contenido, utilizando
un nuevo nombre, por ejemplo Mis_Pruebas. Además genera nuevas
copias del archivo Monica.txt, con los nombres Monica2.txt, Juan.txt,
Monica_Juan.txt, MonicaJuan, Juan2. Ahora:
[usuario@maquina Desktop] $ cd Mis_Pruebas/Pruebas
[usuario@maquina Pruebas] $ ls
[usuario@maquina Pruebas] $ rm *.txt
[usuario@maquina Pruebas] $ ls
¿cuáles archivos se borraron? ¿cuántos restan en el directorio? Ahora
vuelve al desktop y borra toda la carpeta Mis_Pruebas. Primero intenta:
[usuario@maquina Desktop] $ rm Mis_Pruebas
[usuario@maquina Desktop] $ rmdir Mis_Pruebas
¿qué ocurrió? Ahora prueba:
[usuario@maquina Desktop] $ rm -Ri Mis_Pruebas
¿Te sientes confuso? Prueba ver que hacen los comandos whoami (Who
am I?), pwd (“print working directory” o Where am I?). Y si estás
perdido del todo puedes usar el comando hostname para averiguar What
am I?
Descargar