Linux_Unix.pdf
Document Details
Uploaded by Deleted User
Universidad de Chile
2024
Tags
Related
- Desislav Andreev, Stanimir Lukanov - C++ Programming for Linux Systems_ Create robust enterprise software for Linux and Unix-based operating systems-Packt Publishing (2023)-1-364-375.pdf
- Guía de Estudio_ Introducción al Sistema Operativo UNIX_Linux.pdf
- Guide to UNIX Using Linux PDF
- Basic Linux Commands PDF
- Hệ Điều Hành Windows Và Linux/Unix 2022 (Trang 3) PDF
- Hệ điều hành Windows và Linux_Unix PDF
Full Transcript
12-08-24 Bioinformática: Shell de Linux/Unix Dr. Víctor Castro Fernández [email protected] Agosto 2024 Laboratorio de Bioquímica y Biología Molecular Departamento de Biología...
12-08-24 Bioinformática: Shell de Linux/Unix Dr. Víctor Castro Fernández [email protected] Agosto 2024 Laboratorio de Bioquímica y Biología Molecular Departamento de Biología Facultad de Ciencias Universidad de Chile 1 2 1 12-08-24 3 Unix y Linux Dos de los sistemas Unix más populares en la actualidad son Mac OS X y Linux. Linux es una familia de sistemas operativos de tipo Unix que utilizan el kernel Linux. Ubuntu es una distribución Linux mantenida por la empresa Canonical. Está orientada a usuarios de escritorio y sus puntos fuertes son su facilidad de uso y de instalación. Ubuntu está basada en una distribución mantenida por la comunidad de usuarios llamada Debian. El principal objetivo de Debian es crear un sistema operativo robusto que incluya la mayor proporción posible de programas libres. 4 2 12-08-24 Entornos gráficos en Linux Hay varios entornos de escritorio para elegir. Experiencia instuitiva. Permite navegar por el sistema de ficheros. Lanzar aplicaciones utilizando el mouse. Administrar el SO 5 La Shell the UNIX La Shell es un interprete de comandos. Es simplemente un modo alternativo de controlar un ordenador (basado en una interfaz de texto). Por ejemplo, pedir que nos de una lista de los archivos presentes en un directorio à podemos abrir un navegador de archivos o podemos escribir en la shell: ls folder_name Ninguna de las dos formas de comunicarse con el ordenador es mejor que la otra aunque en ciertas ocasiones puede resultar más conveniente utilizar una u otra https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 6 3 12-08-24 La Shell the UNIX Las ventajas de la línea de comandos son: Flexibilidad. Pequeñas herramientas que podemos combinar según nuestras necesidades. Reproducibilidad. Los procesos o algoritmos son muy fáciles de documentar (ej. guardar como script). Fiabilidad. programas básicos de Unix creados en los años 70, probados por innumerables usuarios y se han convertido en piezas de código extraordinariamente confiables. Necesidad. Hay aplicaciones que sólo pueden utilizarse por línea de comandos. Velocidad. Programas que funcionan en línea de comandos suelen ser extraordinariamente livianos y rápidos. (Las interfaces gráficas consumen más recursos) https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 7 Ejecutando un comando de la Shell Abrir terminal: Se abrirá con un mensaje similar a: usuario $ Le podemos pedir que liste los ficheros en el directorio àls (LiSt): Pedir al programa ls una lista de ficheros más detallada --> ls -l Pedirles que nos muestre las opciones de un comando ‘–help’ o ‘-h’ Otro modo, documentación más detallada, manual del programa: comando man (MANual): man ls https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 8 4 12-08-24 El sistema de ficheros (Shell) En cualquier ordenador, archivos almacenados à forman el sistema de ficheros à relación jerárquica: Victor/documentos Victor/datos En Unix todos los directorios cuelgan de un único directorio raíz (root), incluso aunque haya distintos discos duros en el ordenador. El símbolo del directorio raíz es la barra “/”. En el directorio raíz hay diversos directorios que, en la mayoría de los casos, sólo deberían interesarnos si estamos administrando el ordenador. Los usuarios normalmente sólo escriben dentro de un directorio de su propiedad, localizado dentro de /home (denominado como su nombre de usuario). $ ls /home user1 user2 user3 https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 9 Nombres de directorios y archivos Lo mejor sería seguir unas cuantas reglas al nombrar un archivo: Añadir una extensión para recordarnos el tipo de archivo, por ejemplo.txt para los archivos de texto. No utilizar en los nombres: espacios, caracteres no alfanuméricos, ni caracteres no ingleses como letras acentuadas o eñes(ñ). En Unix las mayúsculas y las minúsculas no son lo mismo. Los ficheros “documento.txt”, “Documento.txt” y “DOCUMENTO.TXT” son tres ficheros distintos. https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 10 5 12-08-24 Nombres de directorios y archivos Otra convención utilizada en los sistema Unix es la de ocultar los archivos cuyos nombres comienzan por punto ”.”. Por ejemplo, el archivo “.oculto” no aparecerá normalmente cuando pedimos el listado de un directorio. $ ls Esto se utiliza normalmente para guardar archivos de configuración que no suelen ser utilizados directamente por los usuarios. Para listar todos los archivos (all), ya sean éstos ocultos o no, se puede ejecutar: $ ls -a Códigos bastante útiles: ".." indica el directorio padre del directorio actual * "." indica el directorio actual * "~" representa el directorio del usuario 11 Comandos básicos para directorios: pwd (Print Working Directory) Comando que nos informa sobre el directorio de trabajo actual: $ pwd /home/victor cd (Change Directory) Modificar el directorio de trabajo “moviéndonos” a otro directorio. $ cd documentos $ pwd /home/victor/documentos El comando cd acepta además de nombres de directorios algunos otros parámetros: $ cd.. Ir al directorio padre del actual. $ cd Ir al directorio HOME del usuario. $ cd - Ir al anterior directorio de trabajo 12 6 12-08-24 Permisos Ver los permisos asociados a los ficheros utilizando el comando ls con la opción -l (Long): ficheros listados àusuario victor àgrupo staff. Permisos del usuario, los miembros del grupo y el resto de usuarios están resumidos en las primeras letras de cada línea: Los permisos pueden ser modificados con la orden chmod. https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 13 drwxr-x--- La primera letra indica el tipo de fichero listado: (d) directorio, (-) fichero u otro tipo especial. 9 letras, en grupos de tres àpermisos para el usuario, para el grupo y para el resto de usuarios. Cada grupo de tres letras indica los permisos de: lectura (Read), escritura (Write) y ejecución (eXecute). drwxr-x--- : directorioà el usuario tiene permiso de lectura, escritura y ejecución (rwx), grupo permiso de lectura y ejecución (r-x), no puede modificar el directorio. El resto de usuarios no tienen ningún permiso (---). Dar permisos de ejecución a un fichero: $ sudo chmod +x nombre_del_fichero https://bioinf.comav.upv.es/courses/linux/unix/shell.html# 14 7 12-08-24 Moviendo, renombrando y copiando ficheros Los ficheros se copian con el comando cp (CoPy): $ cp data.txt /Documentos/data.bak.txt Copia y renombra el archivo data.txt al directorio /Documentos/ Se mueven y renombran con el mv (MoVe): $ mv data.txt /Documentos/experimento_1.txt Para crear un nuevo directorio podemos utilizar la orden mkdir (MaKeDIRectory): $ mkdir exp_1 Los ficheros se eliminan con la orden rm (ReMove): $ rm data.bak.txt cp y rm no funcionarán bien con los directorios, hay que copiar o borrar todos sus contenidos recursivamente: $ cp -r exp_1/ exp_1_bak/ $ rm -r exp_1_bak/ 15 WildCards (comodin): * Podemos referirnos a todos los archivos que acaban en txt utilizando un asterisco: $ mv *txt exp_1/ El asterisco sustituye a cualquier texto, por lo que al escribir *txt incluimos a cualquier fichero que tenga un nombre cualquiera, pero que termine con las letras txt. Podríamos por ejemplo referirnos a los ficheros del experimento 1a: $ ls *1a* exp_1a.jpg Cuidado!!!! $ rm -r * Borraría todos los ficheros y directorios del actual directorio de trabajo. 16 8 12-08-24 Estándar de jerarquía del sistema de archivos en UNIX Todos los archivos y directorios aparecen bajo el directorio raíz (/) Existen tres jerarquías en las que se distribuyen los archivos y directorios: /, jerarquía primaria. Archivos esenciales para el sistema, como por ejemplo los comandos: cp, ls o mkdir. Ej. /bin/cp /usr/, jerarquía secundaria: mayoría de aplicaciones del sistema. LibreOffice o el entorno de usuario Gnome. /usr/local/, jerarquía terciaria: mayoría de aplicaciones que instalamos sin la mediación de la distribución. /media/*: puntos de montaje para dispositivos removibles (CD-ROM, llaves USB, etc.); /mnt/: punto de montaje temporal; 17 ¿Dónde están los ejecutables(programas)? Variable $PATH Cuando ejecutamos un comando, la shell busca el fichero ejecutable correspondiente en una lista de directorios. La lista de directorios se denomina variable de entorno $PATH. Podemos imprimir esta lista utilizado el comando echo: ~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games En el ejemplo, la Shell buscará primero en el directorio /usr/local/sbinà después enà /usr/local/bin ….à /usr/games Si el comando no se encuentra la shell devolverá un error: ~$ hola No se ha encontrado la orden «hola», quizás quiso decir: La orden «cola» del paquete «git-cola» (universe) hola: orden no encontrada 18 9 12-08-24 Instalando software En los sistemas Linux las distribuciones se encargan de preparar una gran cantidad de software para ser instalado. Packages manager o Software center (ubuntu). Con un solo click los programas quedan instalados e integrados en nuestro sistema. Por desgracia, la cantidad de software incluido en las distribuciones no es infinito. Hay otros muchos que no se incluyen y que tendremos que gestionar nosotros mismos. 19 Instalando programas compilados Podemos instalar los programas que administremos sin la ayuda de la distribución en /usr/local Los ficheros normalmente son: Programa-linux-x86_64 (programa compilado para arquitectura 64 bit) Programa-linux-i386 (programa compilado para arquitectura 32 bit) Programa-Src (código fuente listo para compilar) La forma más sencilla de instalar el programa precompilado es mover el directorio completo a /usr/local/programa/ , con permisos de super-usuario “sudo”. $ sudo mv programa/ /usr/local/ Añadir los directorios en los que hay ejecutables a nuestro $PATH, (sudo) export PATH=$PATH:/usr/local/programa/: Añadir en el fichero.bashrc situado en nuestra $HOME. $ sudo gedit $HOME/.bashrc 20 10 12-08-24 Instalando un programa desde el código fuente Ficheros comprimidos ej.* tar.gz. Una vez descomprimido normalmente encontraremos un fichero INSTALL o README debemos leerlos antes de continuar. Habitualmente hay un shell script ejecutable llamado configure. El procedimiento a seguir : 1. $./configure 2. $ make 3. $ make install (sudo make install si se intala en /usr/local/) make install copia el binario a algún directorio del $PATH, normalmente a /usr/local/bin. Para poder compilar los programas necesitamos tener instaladas una serie de aplicaciones: $ sudo apt install build-essential apt, programa de shell equivalente al software center. 21 Comandos generales: Guardar salidas de las ordenes Si ejecutamos el comando ls se imprime un listado en la pantalla. Este flujo de información puede ser redirigido para que no se imprima y se pierda sino que se guarde en un fichero: $ ls > listado.txt $ ls listado.txt 22 11 12-08-24 Procesamiento de ficheros de texto cat, head y tail Archivos binarios ≠ Archivos de texto Imprimir el archivo en la terminal: $ cat filename.csv (lento) Para hacernos una idea del inicio del archivo sin bloquear la terminal: $ head filename.csv Imprimir solo el final de los archivos : $ tail filename.csv Tanto a head como a tail podemos pedirles que impriman el número de líneas que nosotros deseemos: $ head –n 100 filename.csv 23 grep (Generalized Regular Expression Parser) Toma un fichero de entrada (o el standard input) y filtra las líneas que contienen el patrón de búsqueda que le hemos dado. Ej. Tenemos un archivo (sidechainPDB.csv) de la salida de un programa que cuantifica la superficie expuesta al solvente de los aminoacidos en una estructura de proteína. $ grep “CYS” sidechainPDB.csv 24 12 12-08-24 Pipes Podemos unir el flujo de salida de un programa con el de entrada de otro utilizando un pipe(tubería). El símbolo para el pipe es ”|”. Imaginemos que queremos hacer una búsqueda limitada a las primeras cien líneas del fichero sidechainPDB.csv: $ head -n 100 sidechainPDB.csv | grep “ALA” 25 wc (Word Count) Sirve para contar líneas, palabras y caracteres. Podemos enlazarlo con el grep y contar cuantas lineas con ALA hay en el fichero sidechainPDB.csv Lineas(-l) palabras(-w) bytes(-c) 26 13 12-08-24 awk Programa útil para trabajar con columnas Ej. extraer las 2 primeras columnas de una tabla: Ej: $ awk '{print $1, $2}' fichero Mostrar solo la columna 4 y 5 de la salida de “grep” utilizando un pipe: 27 Sed stream editor (reemplazar) sed toma las líneas de una en una, les aplica la transformación que le indiquemos y devuelve las líneas modificadas. Si queremos cambiar de las mayusculas de “CYS” a “cys”: sed “s/patrón_a_substituir/nuevo_patrón/” sed "s/CYS/cys/g" Con la g (generalizar) le indicamos a sed que no queremos que substituya sólo la primera aparición del patrón, sino todos los que encuentre. 28 14 12-08-24 sort Si deseamos ordenar alfabéticamente o por número (-n) un fichero de texto. $ sort -k num_columna fichero #alfabet $ sort -nk num_columna fichero #num 29 Administración Básica Procesos Cada proceso que se inicia es identificado con un número de identificación único conocido como Process ID (PID), que es siempre un número natural. Herramienta: top Una alternativa más moderna, que no es instalada por defecto, es htop. 30 15 12-08-24 kill El comando kill a pesar de su nombre, no sólo sirve para matar o terminar procesos sino también para enviar señales a los procesos. $ kill Señal PID Es posible enviar una señal de STOP al proceso. Para reanudar su ejecución podemos enviar la señal CONTinuar. $ Kill -l (lista de todas las señales) El modo más convencional de matar un proceso es intentar primero que muera ordenadamente con un -15 y sino lo conseguimos, podemos eliminar el proceso con un -9: $ kill -15 4719 $ kill -9 4719 31 https://bioinf.comav.upv.es/courses/linux/unix/intr oduccion.html 32 16