TUTORIAL: Uso de la Consola Linux (incluye acordeón)


Hablando de los 3 grandes de UNIX: Windows, Linux y MacOS, Hoy en día ya nadie usa la consola en su Sistema, Todos Disponemos de herramientas y métodos gráficos potentes para hacer las cosas de manera rápida y sencilla, sin embargo, es importante tener en cuenta que la consola o terminal es una herramienta muy poderosa y eficiente al momento de hacer varias cosas, y por consiguiente, debemos entender cómo usarla.

Actualmente, el uso de la consola se ve rescatado mayormente por algunos usuarios de Linux, que la preferimos al momento de hacer algunas cosas por su rapidez y eficiencia, además de la facilidad de uso. Abajo vendrían los usuarios de Mac que aún la utilizan algunas veces para modificar ciertas cosas en su entorno y hasta abajo tendríamos a los usuarios Windows que rara vez la usan, más que nada sólamente cuando tienen que trabajar con un lenguaje de programación como Java, Python, RubyOnRails entre otros...

Usar la consola es tan simple como aprender el lenguaje de Unix (por llamarlo de alguna manera) Mejor conocido como Bash entre los Linuxeros. Aprender a hablarle a la máquina por medio de la consola nos da la habilidad de entendernos mejor con nuestro sistema, llevando a cabo acciones que queremos en el momento que las queremos sin dar tantas vueltas... Hablar Bash para tener una comunicación básica usuario-máquina es bastante sencillo, no importa en qué plataforma estés. En este tutorial hablaremos sobre el uso de la consola en Linux:

NOTA: Para no escribir las rutas, siempre puedes arrastrar los archivos y/o carpetas en cuestión a tu terminal, así aparecerán las rutas de dichos archivos escritas sin que tú tengas que hacerlo, sólo cuida los espacios según la sintaxis del comando.

cd: Te permite navegar en la consola hasta X directorio y/o ruta de tu sistema. Esto sirve por ejemplo cuando tienes que hacer que la consola ejecute una acción dentro de determinada carpeta o usando los contenidos de la misma, ejemplo:

cd ruta/a/carpeta

Te llevará a "carpeta". Realmente útil cuando descargas el código fuente de algo en Linux y quieres instalarlo en base a los Makefiles o archivos de instalación que se te facilitan en el comprimido, de igual manera, realmente útil cuando por ejemplo, en Windows usas Google App Engine sin el asistente gráfico, entre otras cosas.

cp: Te permite copiar X archivo o carpeta en otro lugar, Ejemplo:

cp ruta/a/carpeta/archivo2 /ruta/a/carpeta3

Copiaría "archivo2" de "carpeta" en "carpeta3".

mv: Mismo uso que cp pero en lugar de crear una copia, MUEVE el archivo o carpeta que le indiquemos del origen al destino quitándolo del primero.

ls: Te muestra una lista de los archivos y subdirectorios contenidos en una carpeta, Ejemplo:

ls ruta/a/carpeta2

Te mostrará el contenido de "carpeta2"

rm -rf: Éste es un comando que hay que usar con cuidado. Lo llamo "El Shredder" jaja, Sirve para eliminar un archivo o carpeta POR COMPLETO, de nuestro sistema, se debe de ejecutar de preferencia como Administrador (Root en Linux), y es para eliminar archivos y/o directorios que no se dejan eliminar. (Yo lo uso prácticamente para eliminar todo lo que sé que no me sirve) Ejemplo:

1. rm -rf ruta/a/carpeta
2. rm -rf ruta/a/carpeta/archivo1

Donde el primer comando borraría "carpeta" del sistema y el segundo borraría el archivo "archivo1" contenido dentro de "carpeta". Hablemos de contenido y cómo manejarlo:

* (Comodín): Si tenemos un directorio en el cual queremos trabajar con su contenido más no con el directorio en sí, (es decir, por ejemplo borrar todos los archivos de un directorio sin eliminarlo, copiar y/o mover todo su contenido de un lado a otro sin el directorio mismo) Simplemente usamos "*", Ejemplo:

1. cd ruta/a/carpetacontenido
2. cp * ruta/a/carpetadestino

Aquí primero nos dirigimos a la carpeta de la cuál queríamos copiar su contenido solamente y luego, por medio del comodín, (*) Le pedimos a la consola que copiara TODO el Contenido de "carpetacontenido" a "carpetadestino". Si "carpetacontenido" tuviese subdirectorios (es decir, más carpetas adentro, en el segundo comando utilizaríamos:

cp -R * ruta/a/carpetadestino

para cumplir nuestro objetivo de copiar sólo el contenido de una carpeta en otra sin copiar la primera carpeta. Lo mismo aplica al eliminar y hacer otro tipo de operaciones, lo importante es que entendieras más o menos cómo se usa el asterisco o comodín.

mkdir: Crea una carpeta o directorio dentro de la ruta que le especifiquemos. Un ejemplo de uso fácil sería:

mkdir ruta/destino/carpetacreada

Esto crearía "carpetacreada" en el destino que especifiqué, puedo usar cd para irme a dicho destino y luego solamente hacer mkdir carpetacreada para no tener que escribir la ruta, de todos modos el resultado final es el mismo.

--help (Parámetros): Los parámetros son la manera en que queremos que se ejecuten los comandos o algunas adiciones a lo que queremos que hagan. No hablaré mucho de ellos, si eres un usuario promedio el único que quizá requiera tu atención es "--help" (Todos los parámetros comienzan con un "--") Con el de help, la consola te dará una breve reseña de cómo usar el comando, por ejemplo, digamos que yo quiero saber cómo puedo usar el comando ssh:

ssh --help

Con eso la consola me explicaría en breve cómo se usa y qué opciones tiene. Bastante útil cuando tienes que trabajar en consola y apenas estás empezando.

&& (Uniones): Usar uniones es útil cuando tenemos que ejecutar una secuencia de comandos que a lo mejor tardarán mucho entre uno y otro, en ese caso usamos las uniones para que la consola haga todo en automático. Usando &&, La consola ejecutará el primer comando y si no devuelve un error y/o no hay problemas, enseguida ejecutará el segundo, Ejemplo:

comando1 && comando2

Sé que el ejemplo es algo tonto, pero ya que lo tengas que usar en algún momento entenderás cómo aplica.

killall: Mata un proceso (Es como la manera portátil de usar el administrador de tareas en Windows y/o el Monitor del sistema en Linux) Sobretodo sirve para cerrar programas que tienen un comportamiento errático, un ejemplo práctico de uso sería cuando abrimos Firefox y el navegador no inicia, entonces queremos abrirlo de nuevo para que aparezca la ventana correspondiente pero nos suelta el error de que un proceso de firefox ya se ha iniciado y que por lo tanto no podemos iniciar otro, en ese caso utilizaríamos:

killall firefox

Eso mataría el proceso de Firefox que inició sin ventana de navegación y nos permitiría abrir otro sin ningún problema, recuerda que se debe ejecutar como el usuario Root para que funcione como debe.

; (Separaciones): Sirven para ejecutar listas de comandos independientemente del output del predecesor, Ejemplo:

 comando1; comando2; comando3

Esto sirve sobretodo cuando queremos correr una serie de comandos donde sabemos que quizá algunos suelten error pero ésto no afecte el resultado final que queremos lograr, aplica sobretodo en instalaciones de paquetes y gestión de software, sin embargo, para instalación de paquetes hay algo más fácil y lo veremos abajo.

'' (Líneas de comando): Las líneas de comando nos permiten ejecutar comandos largos sin que se corten, a través de un comando predefinido, un ejemplo de uso práctico sería para la gestión de grandes cantidades de software a través de consola, supongamos que yo quiero instalar varios paquetes de software en mi Fedora Linux:

su -c 'yum -y install paquete1 paquete2 paquete3 paquete4 paquete5'

Ésto me instalaría varios paquetes en mi sistema sin cortarse la operación entre uno y otro, la lista puede ser tan larga como uno quiera, podemos incluir parámetros y demás cosas, pero es importante recordar que sólo metamos 1 sólo comando largo entre las comillas según se necesite. Aquí por ejemplo, le pedimos a la consola que iniciara una sesión de Root y una vez en modo superusuario instalara los 5 paquetes sin confirmar pero nada más.

-y (Variables): Las variables son determinadas opciones que le damos a la consola para que haga su trabajo, son "presets" de lo que queremos y funcionan más o menos como los parámetros (sólo que éstas inician con un "-") No es necesaria mucha teoría acerca de ésto, si eres un usuario promedio, basta con que sepas que por ejemplo "-y" hará que tu comando se ejecute sin pedir confirmaciones, respondiendo Sí a Todo, ejemplo:

sudo apt-get -y install paquete

Éso instalaría "paquete" en una distribución basada en Ubuntu/Debian sin preguntar si estás deacuerdo en instalar paquetes extras y/o dependencias, entre otras cosas, hará todo en automático para instalar el paquete que pides y ya.

sudo/su - (Root): Éstos dos comandos que podrían entenderse como uno solo, sirven para ejecutar acciones en la consola como administrador y/o superusuario, es decir, como el usuario Root. Dependiendo de cómo esté configurada tu distro y las tareas que vayas a realizar con dichos privilegios, conviene que uses uno u otro (Ten en cuenta que actuar como Root te permite hacer TODO, así que ten cuidado con lo que haces, podrías comprometer la integridad de tu sistema) Ejemplos de uso:

- Si tienes que correr una secuencia de comandos en consola como el usuario Root, entonces usa su - y ENTER, la consola pedirá una contraseña e inmediatamente después, tras ponerla, iniciará una sesión como el usuario Root, esto quiere decir que todo lo que hagas en la consola a partir de entonces se ejecutará con sus privilegios y no con los tuyos.

- Si tienes que usar pocos comandos o privilegios combinados, (Siempre que te encuentres en el "sudoers file") puedes usar sudo antes de cada comando que necesites como superusuario y nada más, de manera que al terminar, la consola seguirá ejecutando los siguientes con tus privilegios a menos que añadas sudo al principio, Ejemplo:

1. cd ruta/a/paqueterpm
2. cp paqueterpm /ruta/destino
3. cd destino
4. sudo rpm -ivh paqueterpm

Éso dirigiría la consola a la carpeta contenedora de un paquete binario RPM (para instalación de software en distribuciones basadas en dicha fuente) que descargaste de X lugar, copiaría ése paquete en otra carpeta, se dirigiría a dicha carpeta destino y finalmente instalaría el paquete como usuario Root (De otra manera no se podría)

rpm -ivh/dpkg -i (Instalación de Binarios): En Linux, los equivalentes a los "exe" en Windows y los "dmg" en Mac, son los RPM y los DEB dependiendo de tu distribución (Si está basada en Debian y Similares es DEB y si está basada en Red Hat y amigos son los RPM) Generalmente es más fácil instalar el software en Linux mediante consola si está en tus repositorios, pero si no, entonces tendrías que usar un paquete binario que descargues de algún lado, y si bien, dichos paquetes se pueden instalar con un doble click, también se puede hacer por consola, Ejemplos:

1. rpm -ivh ruta/paquete/rpm
2. dpkg -i ruta/paquete/deb

Tras un Enter, ambos comandos instalarían el binario en cuestión en tu distro según sea el caso (NOTA: Éstos dos comandos se deben ejecutar como Root o no funcionarán para nada)

wget (Gestor de Descarga por Consola): Creo que el paréntesis es más explícito que nada no? Bueno. Éste comando se utiliza para descargar cosas mediante la consola y las pondrá en la ruta que esté activa en la sesión de la misma. Se utiliza sobretodo para descargar scripts, archivos de texto, archivos de repositorio y porqué no? también paquetes binarios con los que más tarde trabajaremos en la consola inmediatamente después de su descarga, Ejemplo:

1. cd ruta/al/destino
2. wget http://dirección/al/archivo

Ésto colocaría en "destino" el archivo que queramos descargar.

curl: Lo mismo que wget pero da más información sobre nuestra descarga.

tee: Usar ésto te permitirá copiar el output de un comando en un archivo, útil para cuando requieres asistencia y te piden dar la salida de X comando, veamos cómo se usa:

1. cd ruta/al/destino
2. comando | tee output.txt

Aquí primero nos dirigimos a donde queremos que se guarde el archivo resultante y luego pedimos que la salida de "comando" se copiara en "output.txt" (La consola genera el archivo por sí sola)

find: Encuentra archivos en tu Sistema. Su modo de uso más práctico se nota en el siguiente ejemplo:

 sudo find / -name archivo

Con ésto le estaríamos pidiendo a la consola que busque en TODO EL EQUIPO a "achivo", nos devolverá la ruta donde se encuentra. (Debe ejecutarse como Root o de otra manera no podrá buscar en Todo el Sistema)

ssh: Te conecta a un servidor ssh en el cual tengas acceso, el modo de uso más simple está resumido en el siguiente ejemplo:

ssh accountname@fedorapeople.org

Éso me conectaría al servidor de fedorapeople con mi cuenta de usuario.

shutdown: Programa el apagado de tu equipo mediante la consola. Ejemplo de uso práctico:

shutdown -h hh:mm mensaje

Éso apagará el equipo a determinada hora y mostrará el mensaje que tu quieras cuando lo haga, recuerda que debes ejecutarlo como el usuario Root. (Cambia "mensaje" por lo que quieras)

Siendo prácticos, ésos serían todos los comandos básicos para el uso de la Terminal Linux, Cualquier usuario promedio debería tenerlos a la mano para realizar algunas tareas del diario rápidamente usando su terminal. Proseguiré enseñándoles algunos trucos un tanto más específicos que mantengo guardados en mi "Code Glossary":

- Vaciar Papelera desde Consola:

sudo rm -rf /home/user/.Trash/*

(Recuerda cambiar "user" por tu nombre de usuario)

- Convertir videos entre diversos formatos con Mencoder:

Veamos cómo cambiar un video de formato ".ogv" a ".avi":

mencoder out.ogv -o video.avi -ovc lavc -oac mp3lame

Aquí convertiríamos el video "out" que está en formato "ogv" a "avi" poniéndole "video" como nombre al resultado final y usando como códec de audio al formato "mp3". (Recuerda instalar primero el paquete "mencoder")

- Montar USB desde Consola:

fdisk -lu
mount -t vfat ruta/dispositivo /mnt

- Desmontarla:

cd /mnt
umount ruta/dispositivo

(La Gestión de medios extraíbles como USB's mediante consola se debe realizar como el usuario Root, no lo olvides)

- Instalar/Desinstalar Programas en Linux (Varias Distribuciones):


Y aquí termina nuestro Tutorial de Uso de la Consola Linux, esperamos que les haya sido de utilidad y CLARO! Hay un pequeño acordeón/chuleta para que te lleves todos lados esta útil lista de comandos y para que sirven, Descárgalo Aquí.