La Terminal de Linux (I). Como Utilizar la Línea de Comandos Muy buenas lector, si eres usuario de alguna distribución GNU/Linux y quieres profundizar mas en el uso del sistema, una de las cosas que debes aprender si o sí es a manejarte bien con la terminal o interfaz de línea de comandos. Si quieres conocer a nivel más teórico los diferentes conceptos relativos a la terminal, te recomiendo la lectura de la pagina que te acabo de enlazar. Si quieres pasar más al nivel practico, con este primer post estreno una serie de guías dedicadas a profundizar en el uso de la consola y a explorar todas las posibilidades punto por punto. En este caso me voy a centrar en los fundamentos básicos de su uso y en algunos comandos básicos con los que puedes empezar a familiarizarte con ella. Al final tienes enlazados el resto de artículos de la serie. REPORT THIS AD Tabla de contenidos: 1. Como acceder a la consola 2. Sudo y Su. Ejecutar comandos como Superusuario 1. Sudo 2. 3. 3. 1. 2. 3. 4. 5. 6. 7. 8. 9. 4. Su Prompt de usuario y superusuario Algunos comandos para empezar con buen pie Man Uname Who History Clear Ping Date Curl wttr.in Exit Esto continua: aquí tienes el resto de posts de esta serie Como Acceder a la Consola Hay básicamente dos maneras de usar la terminal en GNU/Linux. Por un lado, puedes usar las interfaces TTY, mientras que por otro lado, están los emuladores o PTS, que permiten usar una interfaz de línea de comandos de manera virtual desde la propia interfaz gráfica de usuario. Para acceder a las diferentes sesiones TTY debes utilizar las combinaciones de teclado ‘CTRL+ALT+F1’, para la TTY1, hasta ‘CTRL+ALT+F7’. Para iniciar sesión deberás introducir tu nombre de usuario y contraseña, y a partir de ahí ya puedes empezar a interactuar con el interprete de comandos. Otra manera más práctica de utilizar la línea de comandos es, como digo al principio, mediante el emulador de terminal desde la propia sesión gráfica. En este caso, basta con acceder a tu aplicación de terminal favorita y listos. No es necesario que inicies sesión aquí, ya que ya reconoce el usuario con el que has iniciado la propia sesión gráfica. Sudo y Su. Ejecutar Comandos Como Otro Usuario Muchos comandos invocan acciones que solo pueden ser realizadas por el usuario root o superusuario. Esto significa que, si intentas instalar un paquete en tu sistema, y por ello haces un apt install <paquete>, desde la sesión de tu usuario normal no se te permitirá. Para ello, deberías primero hacer un log-in con el usuario root (en la consola) y posteriormente realizar esta acción desde este nivel de privilegios. Para agilizar esta tarea, dispones de herramientas como sudo o su, ambas similares a la práctica pero diferentes en su concepción. Sudo De sudo se podrían escribir líneas y líneas, pero para lo que es el propósito de este post, quédate con la idea de que, lo que hace, es ejecutar el comando que lo sigue utilizando, temporalmente, los privilegios de otro usuario. Este usuario, en la mayoría de usuarios suele ser el superusuario, pero se puede configurar para que sea cualquier otro. Hay distribuciones, sobretodos aquellas orientadas a usuarios con menos conocimientos técnicos (Ubuntu y gran parte de sus derivados directos son un claro ejemplo) que, por motivos de seguridad (o de simplicidad) optan por mantener la cuenta de superusuario deshabilitada. A cambio, utilizan sudo configurado de tal modo que el usuario estándar pueda utilizarlo para adquirir, temporalmente, los permisos de superusuario. Su uso consiste únicamente en ser introducido delante del comando en cuestión, para indicar que ese comando se va a ejecutar bajo los permisos de otro usuario (por defecto, root). $ sudo <comando> Su La utilidad su (de “switch user”) es algo diferente. Como su nombre indica, lo que permite es hacer un cambio de sesión de usuario, pero sin necesidad de cerrar la sesión del usuario actual. Se utiliza seguido del nombre de usuario con el que se quiere inicial sesión. Es muy común utilizarlo en aquellas distribuciones que prefieren mantener abierta la cuenta de superusuario para que cualquier usuario autorizado para usarlo (entendiéndose que conozca la contraseña) pueda hacer un salto de sesión y hacer un log-in como root. En este ultimo caso, la sintaxis es muy simple. Basta con teclear la palabra su, y automáticamente el sistema te pedirá las contraseña necesaria para hacer el cambio de sesión. $ su # El cambio de forma del promp es un claro indicativo que te puede servir para identificar rápidamente si estás en una sesión de usuario estándar o de root. Generalmente, se suelen dar esas dos situaciones entorno al uso de sudo y su: En las distribuciones que mantienen la cuenta de superusuario bloqueada (como es el caso de Ubuntu y sus multiples derivados), se utiliza “sudo” seguido de un determinado comando, con las credenciales del usuario actual (que se le permite una elevación temporal para ejecutar los comandos como root). En las distribuciones que hacen uso de la cuenta de root, como Debian o Fedora, se utiliza “su” para saltar de la cuenta de usuario normal a la cuenta de superusuario. Para hacer el salto, se requiere conocer la contraseña de root. Sin embargo, el uso de sudo y su se puede complementar perfectamente. De este modo, aun estando la cuenta de root operativa, se puede configurar sudo para que determinados usuarios puedan igualmente realizar una elevación de privilegios, si necesidad de que tengan que conocer las credenciales de root. Si quieres profundizar en todo esto, en este post explico con mucho más detalle como habilitar o deshabilitar el uso de root, así como configurar sudo para permitir o impedir que los usuarios puedan hacer uso de él para la elevación de privilegios. Prompt de Usuario y Superusuario Como podrás advertir, dependiendo del usuario que esté logueado en la sesión de la terminal, el prompt sera ligeramente distinto. De este modo, si te encuentras logueado como usuario estándar, el prompt sera similar a éste: user@computer:~$ Por el contrario, si haces un log-in como superusuario (a partir del comando sudo su), el prompt adoptará este formato: root@computer:/home/user# Ah, como curiosidad que seguramente te gustará saber, el prompt de bash es personalizable en color y estructura. Si tienes curiosidad en saber como, en este post lo tienes explicado en detalle. De hecho no es en absoluto mala idea que, por tal de distinguir mejor el prompt de los comandos en sí, establezcas que éste se muestre en un color diferente. Verás que mejora en gran medida el aspecto general de la consola. Dicho todo esto, y habiendo hecho una justa introducción, la mejor manera de acabar este primer post de la serie será con algunos ejemplos sencillos para empezar a practicar con los primeros comandos. Esto nos servirá para dar nuestro primer paso en el uso de la consola. Aprende tus Primeros Comandos Realmente existen infinidad de comandos, por lo que es importante centrarse en aquellos que te serán de mas utilidad dependiendo de tus tareas o necesidades. ComputerNewAge@computernewage Consulta la previsión meteorológica de tu zona a golpe de comando: :~$ curl wttr.in 6 5:09 - 12 jun. 2016 Información y privacidad de Twitter Ads Ver los otros Tweets de ComputerNewAge Antes de nada, no quiero dejarme de comentar como puedes acceder a la línea de comandos para empezar a jugar. Tienes básicamente dos opciones: Acceder a una de las terminales TTY, mediante las combinaciones de teclado ‘CTRL+ALT+F1’ hasta ‘CTRL+ALT+F7’, para acceder a cada una de las TTY. Abrir una ventana desde el propio entorno de escritorio, utilizando una de las multiples aplicaciones que hacen de emulador de terminal. Aquí tienes a numerosos ejemplos y cada entorno de escritorio ya viene de forma predeterminada con el suyo. Para nombrar algunos: GNOME Terminal, Konsole, Xterm, Yakuake, Guake, etc. Ahora ya si que puedes empezar tu mismo a practicar con tus primeros comandos. Para empezar a ser capaz de ejecutar acciones simples, puedes echar un rápido vistazo a los ejemplos que te propongo. Si no es tu primera vez, seguramente ya los conocerás. En este caso, no dejes de echar un vistazo al resto de posts de esta serie que enlazo al final. Man El comando man es una pagina de manual. Debe ir acompañado del nombre de un comando, y muestra en pantalla una completa guía sobre el uso del comando entrado. Aquí tienes la sintaxis básica, y a partir de ahí puedes ir probando ejemplos con varios comandos. $ man <nombre del comando> Esta es la sintaxis básica del comando, y a partir de ahí puedes desplegar el manual de casi cualquier comando que se te ocurre. $ man uname Imprime por pantalla el manual completo del comando uname, junto con todas sus opciones de uso. Uname El comando uname te da información del sistema operativo usado. Puede incluir diferentes opciones, algunas de las cuales son ‘-a’, ‘s’, ‘-p’, ‘–m’, y ‘-o’. Puedes probar de usar algunas de ellas y observar el output mostrado por pantalla. $ uname Formato simple del comando. Retorna solamente el nombre del sistema operativo, sin especificar mas detalles. $ uname -a Con esta opción, podrás visualizar el nombre del sistema operativo, junto con otros detalles básicos como la versión del kernel, la arquitectura del sistema (si es de 32 o 64 bits) o la fecha actual entre otros datos. Who El comando who muestra los usuarios logueados en el sistema. Si lo utilizas desde la aplicación de terminal del escritorio, mostrara que tu usuario está logueado en la sesión de terminal TTY7, correspondiente a la interfaz gráfica de usuario, y en una sesión PTS, que no es más que el emulador de terminal dentro de la propia interfaz gráfica. $ who Esta es la sintaxis básica de #who, y muestra un listado con los usuarios logueados en el sistema junto con la fecha y hora de logueo. $ who -b Con esta opción obtendrás la fecha y hora del último arranque realizado en el sistema. History El comando history te imprime por pantalla un listado de los últimos comandos que se han pasado por la terminal desde la cuenta del usuario actual. $ history Esta es la forma básica, y muestra un listado de todos los comandos introducidos por la terminal, uno a uno. $ history 10 Tienes también la opción de limitar el numero de resultados a visualizar. En este caso, tendrás un listado con los últimos 10 comandos introducidos. $ history | grep ls Como no, si deseas acotar más la búsqueda, también puedes establecer filtros por palabra contenida. En este caso, por ejemplo, se te imprimirá por pantalla un listado de todas las órdenes introducidas que contengan la palabra “ls”. $ history -c Si quieres borrar el historial de todos los comandos utilizados hasta el momento, puedes hacerlo con un history -c. Clear El comando clear limpia la pantalla de la terminal pero sin borrar el contenido. Básicamente hace un scroll hacía abajo. $ clear Ping Con la orden ping podrás conocer si un cliente o servidor bajo una determinada dirección IP está operativo o no. También te permite conocer la latencia entre tu máquina y la IP especificada. $ ping 192.168.1.1 En este ejemplo estamos comprobando la latencia entre nuestra máquina y el router de la red interna en la que estamos conectados (que típicamente se encuentra bajo la dirección IP 192.168.1.1). $ ping www.google.com También podemos comprobar si un determinado sitio web esta operativo o no a partir de su url. En este caso, comprobamos la latencia entre nuestra máquina y Google. Date El comando date informa sobre la fecha y hora del sistema. Es un comando puramente informativo, útil si te encuentras en un entorno sin interfaz gráfica. $ date Curl wttr.in Con esta simple sentencia podrás consultar la previsión meteorológica directamente desde la consola, a lo Geek. $ curl wttr.in Esta es el modo más fácil de utilizarlo. Te entrega directamente la previsión de tu zona geográfica para los próximos tres días. Aparte de esta opción básica, puedes personalizar la salida de muchas maneras. A continuación tienes un ejemplo. $ curl wttr.in/paris Para consultar la previsión de una zona en concreto, basta con añadir “/” al final seguido de la zona (como datos acepta ciudad, código de aeropuerto o nombre de dominio). Tienes una ayuda rápida aquí: http://wttr.in/:help. Exit El comando exit cierra la sesión de terminal actual del usuario logueado en ella. Si estas usando la terminal como superusuario, se cerrará la sesión y volverás a ser usuario estándar. $ exit Hasta aquí ya puedes empezar a practicar con algunos de los comandos más básicos. Alternativamente, con el comando ‘man‘ podrás hacer una ojeada a las distintas opciones que ofrecen los comandos tratados. Continua con el Resto de Posts de Esta Serie… Como he dicho al principio este es solo el primer post de una serie de artículos enfocados a sacar el máximo partido de la consola en Linux. Así que si quieres aprender más, mucho más, te iré dejando debajo los enlaces con los diferentes enlaces a medida que vaya completando los post. Espero que te sirva;) 1. 2. 3. 4. 5. 6. 7. 8. La terminal de Linux. Introducción Como gestionar ficheros y directorios desde la línea de comandos Como obtener información del sistema operativo Como abrir y escanear el contenido de un archivo Como listar y finalizar procesos activos Como comparar archivos de texto Como comprimir y descomprimir archivos Como iniciar, detener o reiniciar servicios Hay infinidad de cosas que se pueden realizar desde la terminal de Linux, así que en todos los posts de la serie trato de dar cabida al máximo de ellas, dentro de lo mejor que pueda y sepa. Y ya para acabar por hoy, si se te ocurren comandos útiles de los que hablar, la sección de comentarios de este primer post de la serie es el mejor sitio dónde hacerlo. Esto me puede dar ideas para otros artículos de la serie, o para completar los que llevo escritos hasta el momento. Y ya sin más, me despido con un fuerte saludo y esperando verte en los próximo post. GNU/Linux. La Terminal o Línea de Comandos Muy buenas lector. Esta página forma parte de la serie de introducción a Linux que te acabo de enlazado. En ella, pretendo abarcar todo lo que necesitas saber, tanto si acabas de aterrar, como si llevas poco tiempo pero deseas sumergirte de lleno en el sistema operativo del pinguino. Esta página esta dedicada a la terminal o línea de comandos, esa herramienta que, al llegar a Linux, siempre solemos mirar con algo de recelo, y/o procuramos evitar tener que utilizar. Pues bien, si estas líneas, muy pronto te darás cuenta de que, lejos de ser tu enemiga, es y será una gran aliada con la que se te abrirá un gran universo nuevo de posibilidades a la hora de administrar tu sistema. Créditos Imagen de Cabezera. World Penguin Day | Christopher Michel REPORT THIS AD Tabla de contenidos: 1. 2. 3. 4. 5. 6. 7. 8. Las interfaces de usuario La interfaz de línea de comandos o CLI La shell CLI o intérprete de comandos Bash Las terminales TTY Los emuladores de terminal Como utilizar la consola Esto continua Las Interfaces de Usuario Antes de nada, siempre es interesante contextualizar las cosas. En el caso que nos ocupa, es interesante conocer el concepto de interfaz de usuario, que no es otra cosa que el medio o método de interacción entre el usuario y la máquina. Se trata de un concepto general, que aplica a todos los sistemas informáticas que requieran de interacción humana. En el ámbito con que nos ocupa, podemos distinguir entre dos tipos de interfaces de usuario. Por un lado tenemos a la interfaz de línea de comandos o CLI, que es la que vamos a tratar a continuación, y por otro lado tenemos a la interfaz gráfica o GUI. En la imagen superior tienes una representación de cada una de ellas. Es importante destacar que cuando hablamos de CLI o GUI nos estamos refiriendo a métodos de interacción, no una herramienta o programa informática. De hecho, a la herramienta que posibilita cualquiera de estas formas de interacción se la suele conocer como shell. Una shell es una herramienta que acepta ordenes o instrucciones por parte del usuario y ejecuta operaciones. En Linux podemos interactuar con multitud de shells diferentes, tanto a nivel de interfaz de línea de comandos, como a nivel de interfaz gráfica. Hecho este breve paréntesis contextual, vamos a centrarnos en el caso que nos ocupa, que sería la interfaz de línea de comandos, y las diferentes herramientas o lenguajes que posibilitan esta función. La Interfaz de Línea de Comandos o CLI La interfaz de línea de comandos, o CLI, por sus siglas en inglés (command-line interface) es un método de comunicación entre usuario y maquina que acepta instrucciones del usuario a través de líneas de texto (siguiendo unas determinadas reglas de sintaxis que puedan ser interpretadas por el sistema operativo). Es el método que se utilizaba antes de la aparición de las interfaces gráficas o GUI, que sirvió para acercar la informática al gran público, al permitir una interacción del usuario con la maquina mucho más amigable o intuitiva (a costa, obviamente, de una mayor complejidad y consumo de recursos). Hoy día todos los sistemas operativos se presentan con su propia interfaz gráfica plenamente integrada con el resto del sistema, de modo que hablar de interfaz gráfica o interfaz de línea de comandos, para el común de los usuarios, no tiene cabida. Aun así, en el caso que nos ocupa, la línea de comandos es algo que está muy impregnado en la cultura linuxera. Y es que, en Linux, al igual que puedes optar por utilizar diferentes entornos de escritorio, también tienes la posibilidad de no disponer de ninguno, y operar directamente a través de la interfaz de línea de comandos (de hecho, algunas distribuciones, como la versión de Ubuntu para servidores, vienen de serie así). La Shell CLI o Intérprete de Comandos Como he comentado más arriba, a la herramienta que posibilita la función de interfaz de usuario se la denomina shell. Aplicado en el ámbito de la interfaz de línea de comandos, estaríamos hablando de una shell CLI o interprete de comandos. En Linux tenemos a multitud de shells o interpretes diferentes. El más conocido de todos probablemente es Bash, debido a que es el que suele venir por defecto en la gran mayoría de distribuciones GNU/Linux, pero también destacan otros como Bourne shell (sh), Korn shell (ksh) o C shell (csh). Bash Bash es una herramienta Open Source perteneciente al proyecto GNU, y que fue escrita por Brian Fox. Su nombre es el acrónimo de “Bourne-Again Shell”, en referencia a Bourne shell (sh), uno de los primeros interpretes de comandos de Unix. De hecho, Bash hereda muchas propiedades de otras shells como sh, csh o zsh. Actualmente es la interfaz de linea de comando predeterminada en la mayoría de distribuciones GNU/Linux asi como en macOS. Como ocurre con otras shells de Unix, además de interprete de comandos, Bash es también un lenguaje de scripting. Esto lo hace extremadamente potente para multitud de tareas relacionadas con la administración de sistemas, automatización de tareas, etc Aunque en su esencia es una Shell de Unix, puede ser portada fácilmente a entornos Windows. Pero en fin, sigamos con más conceptos, que la cosa se va poniendo interesante. Las Terminales TTY Las TTY son las diferentes ventanas de terminal que permiten interactuar con el sistema a través del interprete de comandos, fuera de la entorno gráfica (salvo una de ellas, que es la que suele estar reservada para la sesión gráfica). En la gran mayoría de distribuciones basadas en Debian, como Ubuntu o Linux Mint, existen un total de 7 pantallas TTY, las cuales pueden usarse simultáneamente. En el caso concreto de Debian, la TTY1 hasta la TTY6 son sesiones de interfaz de línea de comandos, mientras que la TTY7 es, de hecho, la interfaz gráfica de usuario. Aún así, el numero puede variar en función de la distribución Los Emuladores de Terminal Aparte de la interfaz de línea de comandos que nos ofrece la shell a través de las diferentes terminales TTY, en Linux los propios entornos de escritorio de Linux también permiten utilizar la terminal a través de los emuladores de terminal, o PTS. Un emulador de terminal es una aplicación que permite virtualizar un interprete de comandos pero dentro de la propia interfaz gráfica. La mayoría de entornos de escritorio en GNU/Linux incorporan su propio emulador de terminal. Tienen la ventaja de posibilitar la interacción a través de la línea de comandos, pero sin necesidad de salir del entorno gráfico. En la figura de abajo tienes un ejemplo de como se ve el emulador de Terminal de GNOME en Ubuntu. Existen muchos emuladores de terminal, aparte de los que suelen venir pre-instalados en los principales entornos de escritorio. Algunos de los más conocidos, a parte de los propios de GNOME y KDE, son Guake, Yakuake o Xterm. Como Utilizar la Consola En cualquier distribución GNU/Linux tienes básicamente dos maneras de usar la línea de comandos en GNU/Linux: operando directamente con la shell a través de las diferentes terminales TTY, o bien desde el entorno gráfico, utilizando un emulador de terminal (que puede ser el que venga con tu escritorio, o cualquier otro de tu preferencia). Para acceder a las diferentes sesiones TTY debes utilizar las combinaciones de teclado ‘CTRL+ALT+F1’, para la TTY1, hasta ‘CTRL+ALT+F7’. Para iniciar sesión deberás introducir tu nombre de usuario y contraseña, y a partir de ahí ya puedes empezar a interactuar con el interprete de comandos. Otra manera más práctica de utilizar la línea de comandos es, como digo al principio, mediante el emulador de terminal desde la propia sesión gráfica. En este caso, basta con acceder a tu aplicación de terminal favorita y listos. No es necesario que inicies sesión aquí, ya que ya reconoce el usuario con el que has iniciado la propia sesión gráfica. Hay infinidad de cosas que se pueden realizar desde la terminal de Linux, así que en todos los posts de la serie trato de dar cabida al máximo de ellas. Y es que, por muchas posibilidades que ofrezcan los escritorio más modernos con los que contamos en Linux, la terminal es una herramienta enormemente potente, y su conocimiento te brindará un gran abanico de posibilidades. A continuación te dejo con un listado de posts en los que podrás adentrarte más profundamente en el uso de la consola. 1. 2. 3. 4. 5. 6. 7. 8. Como utilizar la consola. Prirmeros pasos Como gestionar ficheros y directorios desde la línea de comandos Como obtener información del sistema operativo Como abrir y escanear el contenido de un archivo Como listar y finalizar procesos activos Como comparar archivos de texto y ver si son iguales Como comprimir y descomprimir archivos Como controlar el estado de servicios Esto Continua Como indico al principio, esta pagina forma parte de la serie de introducción a Linux y que sirve de punto de partida para todo el contenido relacionado con GNU/Linux que hay y habrá en el blog. A continuación iré enlazando el resto de paginas, a medida que las vaya teniendo preparadas. 1. 2. 3. 4. 5. 6. 7. Las distribuciones GNU/Linux El entorno gráfico El interprete de comandos Aplicaciones imprescindibles La gestión de paquetes Seguridad en GNU/Linux Opciones para probar e instalar GNU/Linux Espero que lo disfrutes:) La Terminal de Linux (II). Comandos para Manejar Archivos y Carpetas Muy buenas lector, en esta guía quiero centrarme en que aprendas todo lo necesario para manejar ficheros y carpetas en Linux a través de la línea de comandos. Si no tienes experiencia en el uso de la consola, una buena manera de empezar a entrar en materia es aprender a moverte por el sistema de archivos y a manejar archivos y carpetas desde la línea de comandos. Existen realmente muchísimos comandos en este sentido, de modo que lo mejor será dividirlos en tres grupos para tener un esquema mental y acordarnos mejor de todos ellos. Sin más, te dejo con el índice del post. Espero que lo disfrutes;) REPORT THIS AD Tabla de contenidos: 1. Desplazarte a través de los diferentes directorios 1. 2. 2. 1. 2. 3. 3. 1. 2. 3. 4. 5. 4. Pwd Cd Listar el contenido de un directorio, buscar archivos, etc. Ls Find Locate Crear, borrar y copiar ficheros y directorios Mkdir Rmdir Rm Cp Mv Más información Comandos para Desplazarte a Través de Directorios Empezando por el primero grupo, aquí verás todo lo necesario para aprender situarte en un punto de partida ya desplazarte o navegar a través de los diferentes directorios. Si tienes curiosidad, en este post tienes explicada la estructura de directorios de Linux al detalle. Y ya sin más, empecemos por el más sencillo de todos pero no por ello menos importante… AL FINAL DE ESTE CAP ESTA LA ESTRUCTURA Pwd El comando pwd te indica la ruta completa del directorio de trabajo en el que se encuentra tu usuario. Su función es meramente informativa, peor muy útil en ciertas ocasiones, como por ejemplo, conocer el nombre del directorio de trabajo actual. $ pwd Esta es la única sintaxis que realmente necesitas conocer de este comando. Como explico, te indica la ruta del directorio de trabajo en el que te encuentras logueado en la terminal. Eso significa que cualquier comando de Bash que tenga relación con la gestión de ficheros y directorios, se aplicará referenciado en ese directorio. Cd El comando cd te permite cambiar de directorio de trabajo. Sería el equivalente a ingresar o entrar en la carpeta pero desde la consola. Básicamente requiere indicar el nombre del directorio en el que deseas moverte. Acepta rutas absolutas y relativas. A continuación tienes algunos de los múltiples ejemplos de su uso: $ cd /home/usuario/Documentos El comando de arriba te llevará al directorio Documentos dentro de la carpeta personal del usuario usuario1. En este caso he utilizado una ruta absoluta, empezando por el directorio raíz /, e indicando el camino completo hasta situarme a Documentos $ cd Esta sentencia la puedes utilizar siempre que quieras volver a situarte al directorio principal de usuario, que en este caso seria en /home/usuario1. Muy interesante siempre que queramos volver al punto de partida (ojo, no confundir eso con ir al directorio raíz, que sería el directorio /) $ cd Documentos Igual que en el primer ejemplo, con esta sentencia (arriba) te situarás dentro del directorio Documentos, que debe estar dentro del directorio de trabajo actual. La diferencia es que en este caso, aprovechando que estoy dentro del directorio principal de usuario, he utilizando una ruta relativa sin necesidad de indicar el camino completo. $ cd .. Esta otra sentencia la puedes utilizar para saltar un directorio hacía atrás respecto del que te encuentres. De este modo, si te encuentras dentro del directorio /home/usuario1/Documentos, saltarás un nivel hacía arriba hasta situarte en /home/usuario1. $ cd ../.. Esta opción es similar a la anterior, pero ahora te permitirá saltar de golpe dos directorios hacia atrás. Por tanto, si estabas en /home/usuario1/Documentos, ahora saltarás a /home. Hasta aquí, tienes algunos usos simples para moverte a través de las diferentes carpetas. A continuación, y teniendo claro lo anterior, podemos pasar a aprender a listar archivos y directorios. Listar el Contenido de un Directorio, Buscar Archivos, etc. REPORT THIS AD Visto ya como moverte a través de carpetas, que mejor que continuar como poder listar el contenido de un directorio, encontrar o localizar archivos concretos por su nombre o su extensión, etc. Ls Con el comando ls podrás listar los diferentes archivos y directorios de la carpeta de trabajo en la que te encuentres. El comando acepta multitud de opciones, algunas de las cuales te mostraré a continuación. $ ls El de arriba es el uso más simple del comando ls. Si no le indicas ninguna opción, te enumerará todos los archivos y directorios que se encuentran en la carpeta de trabajo actual, sin tener en cuenta archivos ocultos. $ ls -a Con esta opción, el comando te mostrará, en forma de lista, todos el contenido que se encuentre dentro del directorio de trabajo, incluyendo, además, archivos y carpetas ocultos. $ ls -l Esta opción es similar al primer caso, pero muestra el contenido en forma de lista e incluye información referente a cada elemento. Se usa muchísimo y es especialmente útil a la hora de conocer el propietario y los permisos de cada fichero. Estas son sólo algunas de las muchísimas posibilidades de las que disponemos para nombrar o listar el contenido de un directorio, desde la terminal de Linux. Existen muchas opciones más, las cuales puedes explorar en todo momento haciendo uso del comando man ls. Find El comando find es muy similar en su función básica a ls, ya que de entrada sirve para listar todo el contenido de un directorio. La diferencia es que, aplicando filtros, te puede servir para buscar archivos de forma más precisa. $ find La sentencia más básica te listará todo el contenido del directorio de trabajo actual de forma recursiva. La diferencia respecto a ls es justamente que find no se limitara a mostrar los archivos y directorios de primer nivel, sino que también te mostrará el contenido de estos, y así recursivamente hasta recorrer todos los niveles hacía abajo. $ find ./Documentos Con esta opción, find te listará todos el contenido del directorio Documentos (dentro del directorio de trabajo actual) también de forma recursiva, recorriendo todos los niveles hacía abajo. $ find ./Documentos -name archivo.txt Si quieres empezar a establecer filtros por nombre, puedes añadir el parámetro -name. En este ejemplo, estamos intentando localizar un archivo concreto dentro de Documentos que su nombre corresponda a archivo.txt. $ find ./Documentos -name *.pdf Incluso puedes hacer filtros más concretos gracias al uso de comodines. En el caso de arriba, por ejemplo, estamos buscando en la carpeta Documentos todos los archivos que con la extensión .pdf, al igual que puedes hacerlo con cualquier otro tipo de extensión. Unix tool tip@UnixToolTip To do a search by file names using find, -name is case-sensitive and -iname is caseinsensitive. 32 11:40 - 19 ene. 2016 Información y privacidad de Twitter Ads 17 personas están hablando de esto Locate El comando locate es una alternativa útil a find la hora de localizar archivos o directorios que no recuerdas donde tienes. Aquí tiene algunos ejemplos que te pueden ser de gran utilidad: $ locate archivo1.txt En este caso tienes un claro ejemplo de como realizar una búsqueda simple del archivo archivo1.txt directamente por su nombre. Es útil solo si sabes el nombre exacto del elemento que estás buscando. Crear, Borrar, Copiar y Mover Archivos y Directorios En esta parte conocerás todos los comandos necesarios a la hora de realizar acciones tales como: crear un nuevo directorio, copiar un archivo y pegarlo en otra ubicación, mover ficheros de una ubicación en otra, etc. Esta es probablemente la parte del post de la que podrás sacar mas jugo, así que vayamos allá;) Mkdir El comando mkdir te permitirá crear un directorio con el nombre y la ruta que especifiques. Si no le indicas ninguna ruta, por defecto, te creará la carpeta dentro del directorio de trabajo en el que te encuentres. A continuación tienes algunos ejemplos sencillos. $ mkdir /home/usuario1/directorio1 En el caso de arria, mkdir te creará el directorio de nombre directorio1, en la ruta que le hayas especificado, en este caso dentro de la carpeta principal de usuario. $ mkdir directorio2 Con esta sintaxis, el comando te creará una carpeta de nombre directorio2 dentro del directorio de trabajo en la que te encuentres (recuerda utilizar pwd para saber donde estás). Estos son las dos principales maneras de crear carpetas en Linux desde la consola. Asimismo, si quieres profundizar más en el uso de este comando, puedas explorar otras muchas opciones a través del comando man mkdir. Como ves, crear una carpeta en Linux desde la consola, es igual de fácil que hacerlo desde el menú gráfico del navegador de archivos Rmdir El comando rmdir te permite eliminar el directorio que le especifiques. Para poder utilizar este comando, el directorio a borrar debe estar vacío. A continuación tienes un par de ejemplos. $ rmdir /home/usuario1/directorio1 En este caso, rmdir borrará el directorio de nombre directorio1, que se encuentra en la ruta especificada, en este caso dentro de la carpeta de usuario. $ rmdir directorio2 En este otro ejemplo, el rmdir eliminará el directorio de nombre directorio2, el cual debe encontrarse dentro de la carpeta en el que te encuentres. De lo contrario, indicará que el directorio no existe. Rm El comando rm te permite eliminar archivos sueltos y directorios que no se encuentren vacíos. A continuación tienes algunos de los usos principales del comando. $ rm /home/usuario1/archivo1.txt En este caso, rm te borrará el archivo de texto archivo1.txt, que se encuentra en la ruta especificada, para este caso dentro de la carpeta de usuario. $ rm -r /home/usuario1/directorio1 Con esta opción, rm borrará el directorio directorio1 de forma recursiva. Esto significa, incluyendo todos los archivos y subdirectorios que se encuentren dentro de él (pidiéndote, eso si, confirmación para cada archivo). rm -rf /home/usuario1/directorio1 Si te quieres saltar el paso de tener que confirmar archivo por archivo que realmente deseas borrarlo, con este comando borrarás todo el contenido del directorio sin advertencias. Eso si, mucho ojito con rm, puesto que dependiendo de como lo uses, puede dar cabida a situaciones como esta. Se trata de ser consciente de como funciona y de los parámetros que estas introduciendo en cada momento. Cp Usando el comando cp, seras capaz de copiar archivos y directorios, así como ubicarlos en otras rutas. A continuación, tienes un par de ejemplos de como se puede utilizar. $ cp archivo1.txt archivo2.txt Este es posiblemente el uso más simple de cp. Con esta forma, crearás una copia del archivo archivo1.txt la cual se guardará con el nombre archivo2.txt. En este caso, el archivo de partida debe encontrarse dentro del directorio de trabajo en el que estés. $ cp /home/usuario1/archivo1.txt /tmp/archivo2.txt Alternativamente, puedes especificar la ruta en la que se encuentra el archivo de partida, de nombre archivo1.txt, y la ruta del directorio dentro del cual quieres que se guarde la copia, en este caso dentro del directorio tmp. Como en todos los casos, puedes explorar muchas más opciones tecleando man cp en la consola. Y antes de acabar con cp, te dejo a continuación un par de truquillos que te pueden venir muy bien (esto ya como guindilla del pastel) Mv El comando mv te servirá para mover archivos desde la consola. Sería lo equivalente a arrastrar un archivo desde una ubicación a otra. La sintaxis es muy sencilla, solamente debes especificar la ubicación de inicio, incluyendo el nombre del archivo, y la ubicación de destino. También puedes modificar el nombre del archivo en su ubicación de destino. mv /home/usuario1/Descargas/archivo1.txt /home/usuario1/Documentos/archivo1.txt En este ejemplo de arriba estamos moviendo el archivo de nombre archivo1.txt desde la carpeta Descargas hacía la carpeta Documentos. Para ello hemos utilizado rutas absolutas. mv Descargas/archivo1.txt Documentos/archivo1.txt En este otro ejemplo he hecho exactamente lo mismo pero utilizando una ruta relativa, suponiendo que nos encontramos en la carpeta de usuario dentro de la Home. Aquí Puedes Consultar el resto de Artículos de esta Serie Este es nada menos que el segundo post de una serie de artículos dedicados al uso de la línea de comandos en Linux. Puedes echarle un ojo al primer artículo de la serie en el enlace que te acabo de dejar arriba. Si te animas a continuar, tienes el resto de posts de la serie enlazados justo debajo. Espero que los disfrutes;) 1. 2. 3. 4. 5. 6. 7. 8. Introducción al uso de la línea de comandos Manejar archivos y carpetas por consola Obtener información del sistema Escanear el contenido de un archivo de texto Cerrar o finalizar procesos Comparar archivos de texto Comprimir y descomprimir ficheros Comandos para iniciar o detener servicios Y ya para acabar, solo me queda decir que espero que hayas disfrutado la entrada, te haya sido útil, y ya sabes que como siempre me encantara leer tus dudas o sugerencias en la sección de comments debajo. Así que, ya sin más, me despido con un fuerte abrazo y esperando verte en el próximo post. Hasta la próxima;) El Árbol de Directorios de Linux. Conoce las Principales Carpetas Muy buenas lector, en el post de hoy conocerás en detalle la jerarquía de directorios de Linux y otros derivados de Unix, así que si eres un usuario relativamente nuevo, o si simplemente tienes curiosidad para indagar un poco más en como se estructuran los diferentes directorios en Linux y sus funciones, este es tu post. Como al final, entre tantas carpetas, me ha quedado el post un poco largo, lo he dividido principalmente en dos partes. En la primera conocerás qué es el Filesystem Hierarchy Standard, mientras que en la segunda parte es donde podrás consultar el listado con los diferentes directorios y conocer para que se utilizan cada uno. Sin alargarme más en la introducción, te dejo debajo con el índice. REPORT THIS AD Tabla de contenidos: 1. El Estándar de Jerarquía de Directorios o FHS 2. Principales directorios y sus funciones 1. Directorio raíz o / 2. Bin, Sbin 3. Boot 4. Dev 5. Etc 6. Home 7. Lib 8. Media 9. Opt 10. Proc 11. Root 12. Srv 13. Sys 14. Tmp 15. Usr 16. Var 3. Listar y visualizar las diferentes carpetas 4. Antes de acabar El Estándar de Jerarquía de Directorios o FHS La estructura de los directorios de Linux, así como su contenido y funciones, viene definida en el denominado Filesystem Hierarchy Standard o FHS por sus siglas en inglés, que en otras palabras viene a ser el estándar de jerarquía para los sistemas de archivos en sistemas Linux y otros derivados de UNIX. REPORT THIS AD El FHS nació en 1994 y es actualmente mantenida por la Linux Foundation. Aun siendo un estándar, hay casos de distribuciones GNU/Linux que directamente apuestan por él (Gobo Linux es un ejemplo de ello). Otras, por contra, si que hacen un esfuerzo en adaptarse en lo máximo posible a él, pero suelen desviarse en algunas áreas. Como puedes ver en la siguiente imagen, todo el árbol de parte de una raíz común denominada root y que se simboliza por una barra inclinada. Aún así, esto no significa que varios de ellos no puedan estar en particiones separadas del resto. De hecho, en muchas distros GNU/Linux es una práctica muy común el hecho ubicar ciertos directorios en particiones separadas del resto. Dicho esto, la FHS distingue entre lo que serían directorios estáticos, que son aquellos que contienen binarios, bibliotecas, documentación, etc., de los dinámicos, que son aquellos que requieren de acciones más a menudo, tales como copias de seguridad, etc. También podemos diferencias claramente lo que son los directorios compartibles, que significa que contienen ficheros que pueden utilizarse desde otros dispositivos, de los no compartibles, que solo pueden utilizarse desde el dispositivo en el que se encuentran. Principales Directorios y sus Funciones REPORT THIS AD Ahora que ya conoces el estándar de jerarquía de directorios utilizado en GNU/Linux, veamos un poco más en detalle cada unos de los directorios de forma concreta, empezando por el directorio raíz, que es desde donde nace el árbol. Directorio Raíz o / Toda la estructura de directorios en los sistemas basados en UNIX parte de un directorio raíz también llamado directorio root y que se simboliza por una barra inclinada o /. De este directorio, es desde donde nacen todo el resto de directorios, independientemente que estén almacenados físicamente en discos o unidades separadas. Cualquier dirección de archivo o carpeta en Linux empieza por el directorio raíz o /, seguido de todos los directorios y subdirectorios que que lo contienen, separados cada uno de ellos por /. A continuación conocerás con más en detalle a todos los directorios principales que parten del directorio raíz, junto con sus subdirectorios más importantes y los ficheros que suelen contener. Bin, Sbin El directorio /bin es un directorio estático y es donde se almacenan todos los binarios necesarios para garantizar las funciones básicas a nivel de usuario. Solo almacena los ejecutables de usuario, ya que los binarios necesarios para tareas administrativas gestionadas por el usuario root o superusuario del sistema se encuentran en el directorio /sbin. Incluye también los binarios que permiten la ejecución de varias utilidades estándar de la terminal de Linux, concretamente cat, cd, cp, echo, grep, gzip, kill, ls, mv, rm, ping, su, ps, tar y vi. El directorio /sbin hace lo mismo pero para los binarios relativos tareas propias del sistema operativo, y que solamente pueden ser gestionadas por el usuario root, tales como el arranque, tareas de restauración, reparación, etc. Boot Es un directorio estático e incluye todos los ejecutables y archivos que son necesarios en el proceso de arranque del sistema, y que deberán ser utilizados antes que que el kernel empiece a dar las órdenes de ejecución de los diferentes módulos del sistema. Es también donde se encuentra el gestor de arranque GRUB. En algunas distribuciones, es común que ese directorio se almacene en su propia partición separada del resto. Esto suele darse sobretodo en el caso de de que utilicen LVM por defecto, ya que tradicionalmente el gestor de arranque GRUB (en versiones anteriores a la 2) no podía arrancar desde LVM, por lo que se requería que estuviera en una partición separada. De hecho, si en una instalación normal de Ubuntu o Debian optas por utilizar LVM, verás que el instalador ya te genera un esquema de particiones con el directorio boot en una partición aparte. En estos casos, en el momento de instalar el sistema es importante prever bien el espacio que le vayas a dar a la partición, ya que a la larga, con la acumulación de diferentes actualizaciones del Kernel, es común que se quede sin espacio. Si esto sucede, puedes tener problemas a la hora de instalar futuras actualizaciones del núcleo, y debas hacer limpieza de versiones antiguas del kernel. Dev Este directorio incluye todos los dispositivos de almacenamiento, en forma de archivos, conectados al sistema, es decir, cualquier disco duro conectado, partición, memoria USB, o CDROM conectado al sistema y que el sistema pueda entender como un volumen lógico de almacenamiento. Siendo esto así, verás que la ruta en la que se encuentra cualquier volumen (partición o dispositivo externo) conectado al sistema siempre empieza por /dev. Este es el directorio que contiene, por decirlo de algún modo, la información de cada uno de los volúmenes, a diferencia del directorio /media, que verás más adelante, que lo que contiene son solo los puntos de montaje, pero no la información real de estos volúmenes. Para ver esto en la práctica, si abres una ventana de terminal y ejecutas el comando sudo fdisk -l, verás la estructura de particiones de tu sistema. En una instalación típica de cualquier distro GNU/Linux suele ser la siguiente: /dev/sda1 - Partición principal /dev/sda2 - Partición extendida /dev/sda5 - Partición Swap La partición sda1 suele ser la partición principal, Obviamente si has editado manualmente el esquema de particiones, en tu caso será diferente, esto es solo un ejemplo típico para ayudar a explicar la función del directorio /dev. Eso en cuanto a particiones. Si se trata de un dispositivo externo, el volumen estará igualmente dentro de /dev, pero en este caso varía el nombre que el sistema le asigna a dicho volumen. Generalmente la estructura suele ser la siguiente (si ejecutas nuevamente el comando sudo fdisk -l con un dispositivo externo conectado lo podrás comprobar tu mismo). /dev/sdb1 /dev/sdb2 /dev/sdb3 ... Etc Es el encargado de almacenar los archivos de configuración tanto a nivel de componentes del sistema operativo en sí, como de los programas y aplicaciones instaladas a posteriori. Es un directorio que debería contener únicamente ficheros de configuración, y no debería contener binarios. Home Es el directorio de los usuarios estándar, y por lo tanto, el destinado a almacenar todos los archivos del usuario, como documentos, fotos, vídeos, música, plantillas, etc. También incluye archivos temporales de aplicaciones ejecutadas en modo usuario, que sirven para guardar las configuraciones de programas, etc. Dentro /home hay los directorios personales de todos los usuarios, nombrados según el nombre de usuario utilizado. Así por ejemplo, si en un sistema pongamos que hay dos usuarios denominados User1 y User2, la estructura será así: /home/User1 /home/User2 Cada directorio de usuario contiene asimismo diferentes carpetas para ayudarlo a clasificar la información. Estas generalmente son: /Documentos, /Imágenes, /Música, /Plantillas y /Vídeos /, así como otros archivos y carpetas ocultas, que son las encargados de guardar la información de configuraciones de las aplicaciones del usuario. Para visualizar los ficheros ocultos dentro del directorio individual de cada usuario, puedes hacerlo rápidamente mediante la combinación de comandos CTRL + F. Por cierto, y muy importante, todas los archivos y carpetas ocultas en Linux empiezan por un punto, seguido del nombre de la carpeta. En muchas distribuciones es una práctica recomendada el hecho de ubicar el directorio /home es una partición separada del resto, por tal de facilitar que, en caso de reinstalar el sistema operativo, puedas mantener intacta la partición de la /home, y de este modo mantener todos los archivos personales. Lib Incluye las bibliotecas esenciales que son necesarios para que se puedan ejecutar correctamente todos los binarios que se encuentran en los directorios /bin y /sbin, así como los módulos del propio kernel. En los sistemas operativos de 64 bits, además de /lib existe otro directorio denominado /lib64, referida a las bibliotecas para aplicaciones de 64 bits. Media Representa el punto de montaje de todos los volúmenes lógicos que se montan temporalmente, ya sean unidades externas USB, otras particiones de disco, etc. En la mayoría de distribuciones GNU/Linux, desde hace ya algún tiempo, cada vez que se monta una unidad externa, partición, etc., esta se monta dentro del directorio /media y a su vez dentro de un directorio especifico dependiendo del usuario del sistema que monta el volumen. De este modo, si en un sistema hay varios usuarios, pongamos User1 y User2, los puntos de montaje de los volúmenes que montan cada uno de ellos se mostraran en directorios separados tal como así: /media/User1 /media/User2 Antiguamente se solía utilizar el directorio mnt para estas funciones, pero actualmente, la mayoría de distribuciones hacen uso de media. Opt En cierto modo vendría a ser como una extensión del directorio /usr, pero en este caso van todos aquellos archivos de solo lectura que son parte de programas auto-contenidos y que, por lo tanto, no siguen los estándares de almacenar los diferentes archivos dentro de los diferentes subdirectorios de /usr (que sería lo recomendable) Haciendo una analogía con Windows, vendría a ser algo como el directorio de “Archivos y Programas”, pero en este caso, como hemos dicho, para determinados programas que ya vienen auto-contenidos. Proc Este directorio contiene información de los procesos y aplicaciones que se están ejecutando en un momento determinado en el sistema, pero realmente no guarda nada como tal, ya que lo que almacena son archivos virtuales, por lo que el contenido de este directorio es nulo. Básicamente son listas de eventos del sistema operativo que se generan en el momento de acceder a ellos, y que no existen dentro del directorio como tales. En este enlace de LinuxTotal tienes información más detallada sobre las particularidades de este directorio y todo el juego que le puedes sacar a la hora de obtener información muy diversa del sistema. Root Vendría a ser como el directorio /home del usuario root o superusuario del sistema. A diferencia de los otros usuarios, que se encuentran todos dentro de /home en sus respectivas subcarpetas, el directorio del usuario root está en su propia carpeta colgando directamente de la raíz del sistema. Srv Sirve para almacenar archivos y directorios relativos a servidores que puedas tener instalados dentro de tu sistema, ya sea un servidor web www, un servidor FTP, CVS, etc. Así, por ejemplo, en el caso de tener instalado un servidor web, sería buena idea tener el directorio web público dentro de /srv, tal como así: /srv/www Sys Al igual que /proc, contiene archivos virtuales que proveen información del kernel relativa a eventos del sistema operativo. Es en cierto modo una evolución de /proc, y a diferencia de este último, los archivos se distribuyen de forma jerárquica. Tmp Como ya da a entender su nombre, sirve para almacenar archivos temporales de todo tipo, ya sea de elementos del sistema, o también de diferentes aplicaciones a nivel de usuario como puedan ser Firefox o Chrome/Chromium. Es un directorio dispuesto para almacenar contenido de corta durada, de hecho en la gran mayoría de los casos se suele vaciar de forma automática en cada reinicio del sistema. Aun así, no debes borrar su contenido de forma manual, puesto que puede contener archivos necesarios para ciertos programas o procesos que estén ejecutándose. Las aplicaciones programadas para almacenar archivos en este directorio deben asumir que solo serán recuperables en la sesión actual. En este sentido, hay otro subdirectorio, /var/tmp, dispuesto igualmente para el almacenamiento de archivos temporales, pero cuyo contenido no se borra de forma automática tras el reinicio del sistema. Usr El directorio /usr viene de “User System Resources” y actualmente sirve para almacenar todos los archivos de solo lectura y relativos a las utilidades de usuario, incluyendo todo el software instalado a través de los gestores de paquetes de cada distribución. Contiene los siguientes subdirectorios: /usr/bin /usr/include /usr/lib /usr/local /usr/sbin /usr/share /usr/src Antiguamente /usr también contenía la carpeta particular de usuario, junto con todos sus documentos, vídeos, fotos, etc., pero más adelante se creó el directorio /home para este propósito, dejando /usr reservado para los ficheros relativos a programas. Var contiene varios archivos con información del sistema, como archivos de logs, emails de los usuarios del sistema, bases de datos, información almacenada en la caché, información relativa a los paquetes de aplicaciones almacenados en /opt, etc. En cierto modo se podría decir que actúa a modo de registro del sistema. Listar y Visualizar las Diferentes Carpetas Para poder visualizar u obtener un listado de todas las carpetas del sistema que cuelgan de la raíz, puedes hacerlo desde el mismo administrador de archivos, o bien desde la línea de comandos. REPORT THIS AD Desde el administrador de archivos, por defecto te encuentras siempre en tu carpeta principal de usuario dentro de la carpeta home. Para ver las carpetas del sistema debes dirigirte a la raíz, y verás todas las que cuelga de ella. También puedes obtener un listado completo de todos los directorios que cuelgan de la raíz desde el intérprete de comandos. Para ello, debes abrir primero una ventana de Terminal y situarte en el directorio raíz. El comando cd te servirá para situarte en el directorio raíz y con ls podrás visualizar todos los archivos y carpetas contenidos en él. $ cd / $ ls También puedes jugar un poco con el comando ls, añadiendo ciertos parámetros para obtener listados más detallados. Una opción muy útil, por ejemplo, es ls -l, con la que obtendrás los diferentes directorios en forma de lista, junto con los permisos de lectura, escritura y ejecución asociados a cada una de ellos. $ ls -l Si lo haces sobre el directorio el directorio raíz, verás que todos los directorios de primer nivel que cuelgan directamente de ahí pertenecen al usuario root. Por contra, si lo haces sobre tu directorio Home, todo lo que cuelga de ahí verás que pertenece a tu usuario. Antes de acabar… REPORT THIS AD Si has llegado hasta aquí y aun no tenias del todo claro como funcionaba el esquema de directorios en UNIX y Linux, espero que el post te haya sido de utilidad y que tengas mucho más claro como funciona y el significado de cada directorio. Conocer, aunque solo sea por encima, el significado de cada uno de los directorios en Linux te puede ayudar mucho a entender ciertos comandos o a realizar ciertos pasos que requieren acceder a un fichero dentro de un directorio. Como habrás visto, me he centrado en hacerlo lo máximo entendible posible pero sin entrar en grandes detalles técnicos, pero si quieres profundizar un poco más en los detalles, te recomiendo la lectura de estas guías de The Linux Documentation Project (en inglés). Y ya por último, si quieres comentar algo, ya sabes que como siempre me encantará leerte aquí debajo, así que ya sabes ;) La Terminal de Linux (III). Comandos para Obtener Información del Sistema En esta guía vamos a dar un repaso a algunos comandos que te permitirán obtener información del sistema operativo desde la línea de comandos, como los usuarios actualmente logueados, las sesiones de terminal abiertas, los procesos en ejecución, el hardware utilizado, etc. Como info adicional antes de empezar con el post, quiero comentarte que el artículo que estas a punto de leer forma parte de una serie temática de varios posts centrados en el uso de la consola en Linux. Debajo del post tienes listados el resto de artículos. Ahora si que sin más, voy a ir directamente al grano… REPORT THIS AD Tabla de contenidos: 1. 1. 2. 3. 4. 2. 1. 2. 3. 3. 1. 2. 3. 4. Información del sistema operativo Uname Who Whoami Ifconfig Información a nivel de hardware Dmidecode Cat/proc Lshw Información externa Date Cal Curl wttr.in Esto continua Información del Sistema Operativo Primero de todo me centrare en información general a nivel de software y del sistema operativo. Antes que nada, es importante que tengas en cuenta que muchos de estos comandos debas utilizarlos con permisos de superusuario (utilizando “sudo” en Ubuntu, o “su” en otras distros como Debian o Fedora). Vayamos allá. Uname El comando uname te mostrará por pantalla información del sistema operativo, como puede ser la plataforma, la versión del Kernel utilizada, o la arquitectura del sistema. El comando acepta diversas opciones, algunas de las cuales tienes a continuación. $ uname Con esta sintaxis, el comando te mostrará simplemente el nombre del Kernel utilizado, en este caso Linux. $ uname -o Utilizando esta opción, el comando te mostrará el nombre del sistema operativo, en este caso GNU/Linux. $ uname -a En este caso, a parte de indicar el nombre del Kernel y del sistema operativo, también te informará de la arquitectura del sistema, el nombre de host, el procesador, etc. $ uname -m Con esto podrás conocer si tu CPU tiene soporte para la virtualización, que deberás activar posteriormente desde la BIOS. Muy útil si trabajas si trabajas con máquinas virtuales. Who El comando who te listará los usuarios conectados en el sistema en tiempo real. Asimismo, te indicara la sesión en la que esta logueado cada usuario. $ who Con la sintaxis básica, el comando te informará solamente de los usuarios conectados y de la sesión de terminal TTY o PTS en la que está conectado cada usuario. $ who -a Con esta opción, el comando te informará de la fecha y hora del ultimo arranque del sistema por parte de algún usuario. $ who -H En este caso obtendrás una lista de los usuarios logueados, las sesiones de terminal a las que están conectados, y el registro de fecha y hora a la que se han conectado. Whoami El comando whoami muestra por pantalla el nombre del usuario que acaba de ejecutar el comando. $ whoami Ifconfig La sentencia ifconfig te servirá para ver todas las interfaces de red que tienes habilitadas en tu PC o dispositivo, junto con varios parámetros como el nombre de la interfaz red, la dirección MAC, la dirección IPv4 e IPv6, la máscara subred, y otros varios. $ ifconfig Esta es la opción básica, que básicamente te mostrará las interfaces activas. Generalmente serán la interfaz Ethernet si te conectas con cable (normalmente eth0), la interfaz WiFi si vas con wifi (wlan0), y la interfaz local o localhost, que es la que el sistema utiliza para conectarse consigo mismo (lo) $ifconfig -a Con esta opción podrás ver todas las interfaces de red disponibles en tu sistema, independientemente de que estén en uso o no, junto con sus parámetros básicos. $ifconfig eth0 Esta opción te permite acotar el resultado para mostrar la información de una interfaz determinada, en este caso la Ethernet. Información a Nivel de Hardware REPORT THIS AD Visto ya la información a nivel del sistema operativo, en el siguiente apartado verás como conseguir determinada información del hardware en el que se ejecuta tu sistema. Esto te será especialmente útil, sobretodo teniendo en cuenta que la información relativa al hardware que puedes obtener desde tu entorno de escritorio es bastante general y con muy poco grado de detalle. Dmidcode Con esta sentencia tendrás acceso a un enorme rango de información sobre el hardware del equipo, ya sea relativa al fabricante o ensamblador del dispositivo, fabricante de la placa base, de la CPU, y un larguísimo etcétera que puedes ir descubriendo probando con las diferentes opciones. $sudo dmidecode -s system-manufacturer Con esta opción podrás ver el fabricante del PC, ya sea Asus, HP, Dell, Lenovo, etc. $sudo dmidecode -s processor-manufacturer De forma similar, y como se intuye fácilmente, muestra el nombre del fabricante de la CPU, generalmente Intel o AMD. $sudo dmidecode -s Y por si quieres ver un listado completo de todos los posibles inputs que puedes introducir como opciones, este es tu comando Cat/proc El comando cat /proc/version te muestra información detallada de la versión del Kernel utilizada, incluyendo datos tales como la versión del compilador GCC, el nombre de la persona que compiló el Kernel, y la fecha de compilación. $ cat /proc/version El comando cat /proc/cpuinfo te facilitará información detallada de la CPU, considerando los diferentes núcleos, e incluyendo datos como el fabricante, el número de núcleo, la frecuencia de reloj, el tamaño de cache, etc. $ cat /proc/cpuinfo Lshw El comando lshw te mostrará una lista con todos los componentes de hardware detectados, junto con la información que se puede extraer, como el fabricante, la versión del firmware, etc. El comando permite categorizar la información en clases acepta multitud de opciones. $ sudo lshw En caso de que lo ejecutes así, el comando te imprimirá por pantalla una lista con todos los componentes de hardware y la información que se puede extraer de ellos. $ sudo lshw -short En este caso, te aparecerá un árbol con todos los dispositivos detectados y su ruta de hardware. Es una manera de obtener la información anterior de un modo mas simplificado. $ sudo lshw -c video Con esta opción, verás información relativa a los componentes de hardware detectados dentro de la clase ‘video’. Esto es, la tarjeta o tarjetas gráficas detectadas, etc. $ sudo lshw -c network De un modo similar, aquí verás información referente a los componentes de la clase ‘network’. En este caso, la tarjeta de red ethernet y el adaptador wireless. Estos son sólo algunas de las opciones que puedes utilizar para obtener información del sistema. El comando lshw es especialmente complejo, y he puesto solamente en un par de opciones de las muchísimas que ofrece. Si quieres aprender más sobre él, puedes encontrar más información tecleando man lshw en la terminal. Información Externa Como información externa me refiero a aquella información externa a tu sistema, como podría ser la fecha, hora, condiciones meteorológicas, etc. Date El comando date te imprimirá por pantalla la fecha actual del sistema operativo. Acepta algunas opciones, pero en general su uso es muy sencillo. $ date En su sintaxis más básica. Este es la sintaxis básica, el comando te imprimirá la fecha actual según el estándar CEST. $ date -u Con esta opción, podrás visualizar la fecha actual según el estándar universal o UTC. Cal El comando cal muestra el calendario de un mes o año especificados. Acepta diferentes opciones, algunas de las cuales son: $ cal Es la forma básica del comando, y por defecto te mostrará el calendario del mes actual. $ cal -y 2019 Con esta opción, el comando te mostrará el calendario completo del año entrado por pantalla, en este caso el 2019. Curl wttr.in Con esta simple sentencia podrás consultar la previsión meteorológica directamente desde la consola. Sería la forma geek de consultar el tiempo. curl wttr.in Esta es el modo más fácil de utilizarlo. Te entrega directamente la previsión de tu zona geográfica para los próximos tres días. Aparte de esta opción básica, puedes personalizar la salida de muchas maneras. A continuación tienes un ejemplo. curl wttr.in/paris Para consultar la previsión de una zona en concreto, basta con añadir “/” al final seguido de la zona (como datos acepta ciudad, código de aeropuerto o nombre de dominio). Tienes una ayuda rápida aquí: http://wttr.in/:help. Más Sobre el Uso de la Consola Como ya habrás visto al principio, esta guía forma parte de una serie temático de varios posts sobre el uso de la línea de comandos en Linux. Justo debajo te enlazo el resto de posts que componen esta series para que tu mismo visites los que consideras que sean de mayor interés. Ahí van: 1. 2. 3. 4. 5. 6. 7. 8. La terminal de Linux. Guía de introducción Manejar archivos y carpetas desde la terminal Consultar información del sistema Escanear el contenido de un archivo de texto Listar y finalizar procesos activos de tu sistema Comparar archivos de texto y listar diferencias Comprimir y descomprimir ficheros Iniciar, detener o reiniciar servicios Si conoces más comandos para obtener información del sistema, ya sea a nivel de hardware, de plataforma, sistema operativo, etc., ya sabes que como siempre me encantara leerte en la sección de comentarios de debajo. Ya sin más, me despido con un fuerte abrazo y esperando verte en el próximo post. Hasta la próxima;) La Terminal de Linux (IV). Comandos para Crear, Leer o Editar Archivos En esta parte verás de forma muy rápida y directa como crear y leer archivos de texto desde la línea de comandos, incluir lineas de texto en un archivo, o imprimir su contenido por pantalla para poder visualizarlo de antemano. Para ello, aprenderás a utilizar de forma comandos como touch, cat o more, y también a defenderte medianamente bien con Nano, un editor de archivos en modo texto, al igual que Gedit pero para ser usado desde la termina. Antes de empezar, decirte que este post forma parte de una serie de artículos enfocada a profundizar en el uso del intérprete de comandos de Linux. Al final del post tienes enlazados el resto de posts. Dicho esto, ¡vamos allá! REPORT THIS AD Tabla de contenidos: 1. 1. 2. 1. 2. 3. 3. 1. 2. 4. Como crear archivos de texto Touch Imprimir el contenido de un archivo Cat More Less Leer y editar archivos de texto Nano Vim Más información Como Crear Archivos de Texto Como en los casos anteriores, voy a mostrar un listado con algunos ejemplos de los comandos más utilizados a la hora de crear y leer ficheros de texto desde Bash. Empezaré por el caso de crear un fichero de texto vacío, para el cual utilizaré el comando touch. Touch El comando touch te va a permitir, entre otras cosas, crear un archivo de texto vacío (en formato .txt) al que, posteriormente, podrás agregarle el contenido que desees de forma manual, o mediante el uso de otros comandos que veremos. touch nombrearchivo Esta opción te generará un archivo de texto vacío de nombre nombrearchivo, en el directorio en el que te encuentres (por defecto el directorio del usuario con el que estás logueado en la terminal) touch nombrearchivo1 nombrearchivo2 nombrearchivo3 En este caso, el comando te generará tres archivos de texto vacíos, con los nombres nombrearchivo1, nombrearchivo2, y nombrearchivo3, y en el directorio de trabajo en el que te encuentres. Imprimir el Contenido de un Archivo de Texto REPORT THIS AD Siguiendo con el caso de visualizar el contenido de un fichero desde la misma consola, los comandos más útiles en este sentido son cat y more y less, cada uno con sus particularidades, como verás a continuación. Cat El comando cat es uno de los comandos más utilizados cuando se trata de manejar archivos de texto (en formato .txt) desde la terminal. Entre sus múltiples opciones, está la posibilidad de crear un archivo, imprimir por pantalla su contenido, etc. Veamos algunos ejemplos: Este comando te creará un archivo de texto vacío, de nombre nombrearchivo, y te permitirá teclear el contenido que desees introducirle. Una vez tecleado el contenido, puedes finalizar mediante la combinación CTRL+D. cat > nombrearchivo contenido línea 1 contenido línea 2 CTRL+D Esta orden te permitirá imprimir por pantalla todas las lineas de texto del archivo de texto de nombre nombrearchivo. El archivo indicado debe encontrarse en el directorio de trabajo actual. cat nombrearchivo Esto te imprimirá por pantalla, de forma conjunta, el contenido de los archivos indicados, en este caso nombrearchivo1 y nombrearchivo2. cat nombrearchivo1 nombrearchivo2 Este comando te imprimirá por pantalla el contenido del archivo de texto de nombre nombrearchivo, mostrándote, además, el número de línea al principio de cada línea de texto. cat -n nombrearchivo Muy similar al anterior, con la diferencia de que a la hora de numerar las líneas de nombrearchivo, solo se numeran aquellas que contienen texto, y se descartan las lineas en blanco. cat -b nombrearchivo Hay muchas más opciones, pero creo que con estas pocas ya ves más o menos por dónde va la cosa. Como suelo decir, si quieres profundizar más en el uso del comando lo más recomendable es ir a la misma página de manual tecleando man cat en la misma terminal. More El comando more es otro comando útil para imprimir por pantalla el contenido de un archivo de texto. Esencialmente es igual que el comando cat, con la diferencia de que el comando more pagina el contenido, y es más adecuado cuando para leer archivos largos. Veamos algunu ejemplo: Esto te permitirá imprimir por pantalla el contenido del archivo ‘nombrearchivo’, pero con el resultado paginado. Así, primero se mostraran las líneas que quepan en una pantalla sin hacer scroll. El resto serán accesibles mediante la tecla espacio. more nombrearchivo Less El comando less, al igual que los comandos cat y more,te permitirá leer el contenido de un archivo de texto. A diferencia de los otros dos, éste te mostrará el contenido en modo editor de texto, y para moverte por el contenido deberás utilizar combinaciones de teclado. Con esta opción podrás leer al contenido del archivo indicado, moviéndote por las distintas líneas a través del teclado. less nombrearchivo Una vez en modo texto, tienes varias opciones para desplazarte verticalmente a lo largo de las diferentes líneas. Una opción es haciendo scroll con el ratón, que si utilizas la aplicación de la terminal que vienen con el entorno de escritorio podrás hacer sin problema. Si no funciona esto, puedes utilizar los controles de desplazamiento del teclado. Al estar en modo lectura, deberían funcionar sin problema tanto si estás en el entorno de escritorio o en una sesión de terminal TTY. Otra opción es utilizar la tecla g y luego Enter. Esto avanzará, por defecto, una línea adelante, pero puedes avanzar cualquier número de líneas que deseas, introduciendo el número justo después de marcar la g. :1 Otra opción es utilizar la tecla espacio. Esto hará algo similar a un AvPag. Finalmente, para salir del modo lectura y volver a la terminal, tan solo debes marcar la tecla q. Leer y Editar Archivos de Texto Finalmente acabamos con Nano y Vim, dos potentes editor de textos en modo consola, muy conocidos entre los usuarios mas geeks. Empezaré por Nano, por ser más sencillo de utilizar y aprender, y acabaré con Vim, bastante más complejo al principio. Ambos son editores de texto por consola, pero sus puntos en común digamos que acaban aquí. Nano Nano es un editor de textos para la terminal, que más que para leer archivos sirve para modificarlos y editarlos, aunque para esta guía también nos vale perfectamente para abrir el archivo y visualizar su contenido desde la línea de comandos. A continuación tienes las principales opciones que ofrece, así que te animo a que vayas jugando con ellas para ir familiarizándote. Primero de todo, veamos como abrir el editor de textos Nano, algo que puedes hacer fácilmente con el siguiente comando. nano Una vez abierto, si te fijas en la parte inferior, verás que se muestra las diferentes combinaciones de teclas que necesitaras a la hora de trabajar con archivos. CTRL+R Combinación de teclas para indicarle un archivo de texto a Nano para que lo abra y muestre su contenido por la consola. CTRL+V Estando dentro de Nano y con el archivo abierto en la consola, esta combinación sirve para avanzar a la página siguiente. CTRL+Y De modo similar a la combinación anterior, esta sirve para retroceder a la página anterior. CTRL+W Esta combinación te servirá para introducir un carácter o grupo de caracteres y buscar en el texto cualquier letra o palabra que coincida con el parámetro de búsqueda. CTRL+X Para cerrar el archivo una vez lo hayas terminado de visualizar en la consola. Eso cerrará el editor de texto Nano, y volverá a aparecer el promp de Bash por consola. Estas son solo algunas combinaciones de teclado típicas, para poder moverte con soltura con Nano. A partir de ahí, si deseas profundizar con poco más con él, te dejo con el siguiente vídeo de introducción, para que Ahora que tienes una idea de como funciona Nano, si te ves con ganas, puedes echar un ojo a una alternativa que te ofrecerá un modo de uso totalmente distinto. Vim Vim es un editor de texto por consola muy potente y a la vez conocido entre los usuarios más geeks. A diferencia de Nano, que puede utilizarse con relativa facilidad y soltura desde el primer momento, con Vim la cosa cambia. Digamos que la curva de aprendizaje es mucho mayor. Para empezar, Vim no suele venid pre-instalado en la mayoría de distribuciones, pero si que debería estar disponible en los repositorios oficiales, por lo que podrás instalarlo a golpe de comando. En caso de que te encuentres en Ubuntu, Debian, o cualquier derivada, puedes hacerlo con el siguiente comando: sudo apt install vim Para abrir el editor Vim basta con abrir una ventana de terminal, y teclear el siguiente comando. vim Con esto verás un pequeño texto de presentación del proyecto. Estando ahí, puedes abrir el fichero de ayuda de Vim desde el propio editor. Basta con introducir esta pequeña sentencia, seguida de Intro. :help Vim requiere una curva de aprendizaje más lenta que otros editores de texto, y obviamente no se aprende con solo leer un post o ver un par de vídeos. Aún así, si deseas aprender a utilizarlo, te dejo con este vídeo introductorio de DistroTube (en inglés), para empezar con los primeros comandos. Este es un vídeo introductorio, pero probablemente en el mismo canal irán apareciendo más vídeos sobre Vim. Esto Continua Tampoco me quiero ir sin recordarte que este post forma parte de una serie de artículos enfocados a profundizar en el uso de la terminal. Si quieres seguir con el tema, te presento los enlaces hacía el resto de posts de esta serie: 1. 2. 3. 4. 5. 6. 7. 8. Como utilizar la línea de comandos. Primeros pasos Moverte a través de directorios, copiar y pegar archivos, etc Consultar información del sistema Crear, leer o editar archivos de texto Visualizar y finalizar procesos en ejecución Identificar diferencias entre dos archivos de texto Comprimir y descomprimir ficheros por consola Iniciar, detener o reiniciar servicios Si conoces más comandos para crear, leer o concatenar archivos de texto, no dudes en hacer tus propias aportaciones a través de los comentarios. La idea es que el post se pueda ir actualizando y completando con más información. Para terminar, si has encontrado útil el artículo, me servirá de gran ayuda si lo compartes en Twitter. Hasta la próxima;)