Comandos que te serán de utilidad si estás empezando con Linux

Comandos más útiles si eres nuevo en Linux

¿Eres nuevo en Linux y te encuentras perdido sin saber qué hacer? ¿Te gustaría controlar tu Sistema Operativo más allá de lo que las aplicaciones te permiten? ¿Te da miedo utilizar la consola porque crees que puedes romper algo?

No te preocupes, no vas a romper nada, al menos con lo que yo te voy a poner aquí, siempre y cuando lo uses como es debido, es decir, sabiendo lo que haces.

Al iniciarse en Linux, sobre todo viniendo de Windows, a todos nos ha pasado que nos encontramos perdidos, no sabemos qué hacer, ni dónde están las cosas. Un error muy común es intentar hacer las cosas igual que en Windows y no, en Linux las cosas no se hacen como en Windows, puedes hacer lo mismo o más, pero la mayoría de las veces de forma "diferente".

Perderle el miedo a utilizar la consola es un paso adelante enorme, quizá no seas consciente cuándo lo hagas, y quizá no le encuentres la utilidad hasta que lo hagas, pero después no te probablemente no querrás separarte de tú querida "Terminal".

¿Qué tiene de bueno la "Terminal"?

Pues muchas cosas, pero básicamente, que te permite realizar múltiples tareas desde un mismo lugar, todo lo que se te ocurra lo podrás hacer desde ella, pero oye, mejor en su justa medida, habrá cosas que las hagas desde la consola y otras utilizando los programas oportunos, todo tiene su utilidad y la comodidad de cada situación la encontrarás con el paso del tiempo.

Antes de empezar déjame contarte un detalle importante. Los programas que sueles utilizar cómo por ejemplo el administrador de archivos ejecutan comandos por detrás sin que tú lo veas, de forma transparente para ti. Si tú le dices al administrador de archivos que te muestre la carpeta "Documentos", simplemente le das dos click encima y él te muestra el contenido, pero ejecutando una serie de procedimientos por detrás; pues utilizando la consola es lo mismo, tú usarás ciertos programas para realizar distintas tareas, sólo que en vez de hacer dos click, escribirás qué es lo que quieres hacer y cómo quieres que se muestre, tan sencillo. Los comandos que ejecutas en la consola no dejan de ser programas como otro cualquiera.

Comentar también que si no sabes qué hace un comando (programa) ni cuáles son sus opciones, todos los comandos tienen un manual en el que se explica detalladamente qué es lo que hace, y cuáles son las opciones (conocidas como parámetros) que le puedes pasar para poner condiciones al programa. Para verlo simplemente tienes que escribir "man PROGRAMA" dónde programa es el nombre del programa/comando del que quieres ver el manual. Por ejemplo:

man ls

Los comandos aquí expuestos son muchos y con muchas combinaciones, no te agobies, no tienes que sabértelos, puedes guardar o apuntar esta página como referencia para cuándo la necesites consultar. Simplemente usa los comandos que te sean más útiles, y verás como poco a poco te vas haciendo a ellos y vas aprendiendo más sobre la marcha, sin darte cuenta pronto te sabrás de memoria un montón de comandos que te facilitarán el día a día, sin ningún esfuerzo extra.

Dicho esto, veamos cuáles son los comandos más habituales y de más utilidad para un usuario normal en GNU/Linux, sea cual sea la distribución.

~

Esto más que un comando es un "atajo", al introducir este símbolo (con las teclas Alt+ñ en teclados con distribución española) nos estaremos refiriendo al directorio principal del usuario ("/home/usuario"). Como es habitual añadir, modificar o eliminar elementos en el directorio del usuario, que para eso está, pues nos sirve de atajo para ahorrarnos unas cuantas letras.

Tratamiento de archivos y carpetas

cd

Como la página de manual de "cd" bien dice "change the working directory", "cambia el directorio actual" en castellano. Así que mediante este comando podemos movernos entre directorios, por ejemplo escribiendo:

cd ~

Accederemos a la carpeta del usuario, o si escribimos:

cd ~/Documentos/Libros

Entraremos a la carpeta "Libros" dentro de la carpeta "Documentos" que está en el directorio principal del usuario. Lo que equivaldría a hacer:

cd /home/usuario/Documentos/Libros

Creo que aquí se ve bien la utilidad de usar "~".

ls

"ls" es un comando que sirve para mostrar el contenido del directorio en el que nos encontramos, u otros, dependiendo de los parámetros que le indiquemos:

ls

Lista simplemente el contenido del directorio actual, mientras que:

ls ~/Documentos/Libros

Nos mostraría el contenido de la carpeta "Libros", sin tener que estar dentro de ella. Se pueden poner condiciones, por ejemplo:

ls -la ~/Documentos/Libros

Mostraría lo mismo que antes, sólo que esta vez, en vez de mostrar simplemente el nombre de los elementos que hay dentro de la carpeta, nos mostraría uno por uno, los permisos del fichero, el propietario del mismo, el grupo al que pertenece el fichero,  el tamaño, cuándo ha sido creado y el nombre del mismo. La diferencia entre uno y otro:

ls ls -la

mkdir

Con este comando puedes crear un nuevo directorio, su uso es muy simple:

mkdir DirectorioNuevo

Así se crearía una nueva carpeta con nombre "DirectorioNuevo" allá dónde te encuentres, si quieres crear el mismo directorio en tu carpeta de usuario pondrías:

mkdir ~/DirectorioNuevo

cp

Sí, así es, viene de "copy" y sirve para copiar ficheros, carpetas y demás. Su uso es también muy sencillo, y probablemente lo más habitual sea que sólo lo uses de dos formas:

cp ~/Documentos/Libros/Libro1 ~/Textos

De esta forma copiarás el "Libro1" a la carpeta "Textos" con el nombre original que tenía en la carpeta "Libros", si quisiéramos cambiar el nombre del fichero directamente cuando se copie, haríamos:

cp ~/Documentos/Libros/Libro1 ~/Textos/NuevoLibro

Copiaría el "Libro1" poniéndole de nombre "NuevoLibro" en la carpeta "Textos"

Esto para ficheros, si quisieras copiar un directorio completo:

cp -R ~/Documentos/Libros ~/Textos

Ojo, la "R" mayúscula, si la pusieras en minúscula significaría otra cosa (que en este caso no tiene utilidad ninguna).

El resultado de esto sería una nueva carpeta "Libros" dentro del directorio "Textos" con todo el contenido que "Libros" tuviera.

mv

Con esto moveríamos la carpeta o fichero indicado a dónde quisiéramos, también sirve para renombrar un fichero, ya que puedes "moverlo" al mismo directorio pero con otro nombre:

mv Libro1 LibroInformatica

mv

Como quedamos, cambiaría el nombre de "Libro1" por "LibroInformatica", pero si quisiéramos moverlo a otro directorio ejecutaríamos:

mv Libro1 ~/Documentos

Así moveríamos "Libro1" a la carpeta "Documentos" dentro del directorio principal del usuario.

rm

Sirve para eliminar ficheros o carpetas, aunque para eliminar carpetas también hay un comando específico, que veremos a continuación. Para eliminar un fichero basta con ejecutar:

rm Libro1

Si quisiéramos eliminar un directorio entero añadiríamos la opción "-R":

rm -R ~/Basura

rmdir

Este comando es específico para directorios y sólo funcionará con directorios, siguiendo el ejemplo anterior:

rmdir ~/Basura

Haría lo mismo, eliminar la carpeta con nombre "Basura" que se encuentra en la carpeta del usuario actual

find

Como su nombre bien indica sirve para localizar un fichero/carpeta en el sistema de ficheros, por ejemplo:

find ~/Documentos -name Libro1

Buscaría dentro de la carpeta "Documentos" el fichero con nombre "Libro1". Si existe nos lo muestra, sino, no muestra nada.

Mencionar que este comando puede llegar a ser bastante lento, ya que busca uno por uno, carpeta por carpeta, fichero por fichero si existen coincidencias, por lo que si la carpeta en la que quieres realizar la búsqueda contiene muchos elementos se hace muy largo. Además si debes poner el nombre tal cuál del fichero, si por ejemplo en vez de "Libro1" pusieras "Libro" el comando find no encontraría ninguna coincidencia.

Pero la potencia de este comando es que permite buscar por muchas más cosas, más allá del nombre del fichero, por ejemplo podríamos buscar los ficheros que pertenecen al usuario "bob" de la forma siguiente:

find /home -user bob

También se puede buscar por permisos y muchas más cosas, tienes toda la documentación en el manual, ejecutando "man find".

A mi, personalmente, me gusta más utilizar "locate", pero este no viene por defecto en todas las distribuciones Linux, lo bueno que tiene "locate" frente a "find" es que utiliza una base de datos como índice en la que realiza las búsquedas, por tanto su rapidez es infinitamente mayor a la de "find", además no tienes que poner el nombre exacto del fichero a buscar, sino que te mostrará las coincidencias con tu búsqueda, tiene una "desventaja" y es que hay que actualizar la base de datos cuando se vaya a realizar la búsqueda ya que puede que se hayan agregado nuevos ficheros y locate no los añade automáticamente a su base de datos, para ello usaríamos el comando "updatedb", que también puede demorarse bastante si no la hemos actualizado en mucho tiempo, pero nos ahorra el tiempo de espera a la hora de la búsqueda.

| ("pipe" – tubería)

Esto tampoco es un comando, tampoco es un atajo de teclado, es una tubería ("pipe" en inglés) y sirve para combinar unos comandos con otros, y también es de gran utilidad, veremos más adelante como podemos utilizarlo.

cat

Podremos mostrar el contenido de un fichero de texto sin tener que abrirlo, sólo para ver el contenido. Que conste que el fichero ha de ser de texto, no sirve, lógicamente, con ficheros binarios ni de otro tipo.

cat ~/Textos/ListaDeLaCompra.txt

Nos mostraría el contenido del fichero "ListaDeLaCompra.txt", el problema es que lo muestra todo de golpe, y si el fichero es muy largo tan sólo veremos el final del mismo, por tanto podría combinarse con el siguiente comando mediante una tubería.

more

Si la longitud de la salida de los datos por pantalla es muy grande, podemos utilizar este comando para que vaya mostrando bloque a bloque, se suele usar en combinación con otros comandos, aunque puede usarse sólo:

more ~/FicheroLargo.txt

more

Mostraría el contenido de "FicheroLargo.txt" agrupándolo por bloques, de forma que podamos presionando la barra espaciadora ir saltando de bloque a bloque por todo el contenido del fichero hasta llegar al final. Otra forma de hacer lo mismo sería ejecutar:

cat ~/FicheroLargo.txt|more

Puede aplicarse a casi cualquier salida de datos, por ejemplo si al mostrar el contenido de una carpeta vemos que hay tantos ficheros que se salen de la pantalla podemos ejecutar:

ls ~/Documentos|more

Esto haría que la salida de datos se mostrase por bloques, para poder ir viendo poco a poco todo el contenido de la lista si es muy largo.

less

Lo mismo que "more", muestra el contenido de un fichero de texto o una salida de datos de forma páginada, sólo que mientras "more" sólo permite moverse hacia adelante, "less" permite moverse hacia adelante o hacia atrás.

ls ~|less

Mostraría el contenido del directorio del usuario de forma paginada pero, como hemos comentado, permitiendo moverse por las páginas en ambos sentidos.

head ó tail

En ocasiones nos interesará conocer sólo el principio o el final de un fichero o una salida de datos, es entonces cuando "head" o "tail" nos serán de utilidad.

head ~/Documentos/Libros/Libro1

Nos mostraría el principio de "Libro1". De otra forma:

cat ~/Documentos/Libros/Libro1|head

Mientras que, por el contrario:

cat ~/Documentos/Libros/Libro1|tail

Nos mostrará el final del "Libro1"

Si quisiéramos ver las primeras dos líneas de un fichero haríamos:

head -n 2 ~/Documentos/Libros/Libro1

grep

Este comando, de forma básica permite filtrar el contenido de un fichero según un patrón indicado, es decir, nos mostrará aquellas líneas de un fichero que coincidan con el patrón indicado, por ejemplo:

grep amarillo ~/Documentos/Libros/Libro1

grep

Mostraría todas aquellas líneas de "Libro1" que contengan la palabra "amarillo". Una única línea en el ejemplo.

Pero la gran potencia de grep se produce al combinarlo con otros comandos mediante tuberías "|"

Imaginemos que queremos listar el contenido de la carpeta imágenes pero viendo únicamente las imágenes cuyo nombre contiene la palabra "Comunion", podríamos ejecutar:

ls ~/Imagenes|grep Comunion

Pero es que es más, podemos combinar hasta tres comandos mediante tuberías:

cat ~/Textos/*.txt|grep azul|more

El comando anterior mostraría todas las líneas que contuvieran la palabra "azul" de todos los ficheros de la carpeta "Textos" mostrados por bloques, ya que si son muchas, pueden salirse de la pantalla.

Como vemos las posibilidades son muy amplias, continuemos viendo otros comandos.

> ó >>

Tampoco son comandos, pero nos serán de bastante utilidad en algunas ocasiones. Ambos sirven para añadir textos a otros ficheros, con la única diferencia que ">>" añade el texto indicado al final del fichero, mientras que ">" sobreescribe el fichero entero con el texto indicado. Por ejemplo:

ls ~/Documentos > ContenidoDocumentos.txt

Crearía un nuevo fichero de texto llamado "ContenidoDocumentos.txt" con la lista de nombres de los ficheros y carpetas que se encuentren dentro de "Documentos". Si quisiéramos añadir también los nombres de los libros que se encuentran dentro de la carpeta "Libros" dentro de "Documentos" al final del fichero anterior ejecutaríamos:

ls ~/Documentos/Libros >> ContenidoDocumentos.txt

">" y ">>"

echo

"echo" lo que hace es mostrar por pantalla el texto que le indiquemos. Quizá así, simplemente, no sea de mucha utilidad pero si como en ocasiones anteriores, lo combinamos con otros comandos podemos sacarle bastante provecho.

Por ejemplo supongamos que me encuentro con una página muy interesante que quiero apuntar, que se llama TecnoGame y su dirección es www.tecnogame.org, podría con una simple línea crear un fichero de texto con la URL de la página, para tenerlo almacenado:

echo "www.tecnogame.org" > ~/TecnoGame.txt

Por tanto, crearía un fichero llamado "TecnoGame.txt" en la carpeta del usuario, cuyo contenido sería "www.tecnogame.org", como vemos, sin tener que estar abriendo editores de texto ni nada de nada, con una simple línea tenemos el fichero guardado con el contenido deseado.

vi

Esto es un potente editor de textos en línea de comandos, no te dejes engañar, que el hecho de que sea por medio de línea de comandos no quiere decir que su funcionalidad sea limitada, es más puedes hacer muchas más cosas que con otros editores de textos con interfaz gráfica. Tanto es así, que mucha gente que se dedica a la programación usa este editor para modificar sus ficheros, ya que sus posibilidades son múltiples.

Tanto, que su curva de aprendizaje es muy elevada, puedes buscar por la red si te interesa como utilizar este editor de archivos, aquí sólo veremos como ejecutarlo:

vi ~/Textos/Texto1.txt

Se abrirá el editor "vi" con el fichero "Texto1.txt" para su edición.

Fechas

date

Nos muestra la fecha actual del sistema, esto en un principio puede parecer un poco inútil, pero puede darnos datos que necesitemos conocer en cierto momento, por ejemplo si quisiéramos saber qué día fue el 1 de enero de 1995 ejecutaríamos:

date -d 01/01/1995

date

cal

Por defecto nos muestra el calendario del mes del año actual, pero puede mostrarnos un calendario del año completo, ejecutando:

cal -y

O incluso el calendario de un año en cuestión ejecutando:

cal -y 1995

Usuarios

who

Nos muestra los usuarios que han iniciado sesión en el sistema ya sea de forma remota o en local, ya que como sabemos Linux es un sistema operativo multiusuario. Su uso sería tan simple como ejecutar:

who

Para que nos mostrase los usuarios con sesión iniciada en el sistema, pueden añadírsele ciertas opciones para modificar la salida, puedes consultar el manual para ver todas las opciones ("man who")

whoami

Este comando es parecido al anterior, sólo que nos dirá el usuario con el que estamos trabajando. Literalmente le estamos preguntando al sistema ¿Quién soy? No tiene más opciones, y no sirve para nada más que eso, pero a pesar de su falta de opciones, puede que en ocasiones nos interese saber con qué usuario estamos trabajando, para ello ejecutamos:

whoami

whoami

Procesos

ps

Muestra la lista de procesos en ejecución. Nos será de utilidad para ver qué programas y procesos se están ejecutando en el sistema. Tiene multitud de opciones las cuáles mostrarán una serie de datos u otros según se los solicitemos. Yo personalmente suelo utilizar:

ps auxw

Esto en resumen, muestra todos los procesos en ejecución de todos los usuarios.

Pero como probablemente la lista de procesos sea bastante amplia, suelo combinarla con un grep, para saber si está en ejecución cierto proceso que me interesa:

ps auxw|grep nautilus

Esto me devolverá todos los detalles del proceso "Nautilus". 

De ellos me interesa uno, que utilizaremos en los dos siguientes comandos y es el PID, "identificador del proceso" que es un identificador (numérico) único que Linux asigna a cada proceso y que lo identifica de forma inequívoca.

ps

En la imagen podemos ver dos procesos, pero sólo uno corresponde a "Nautilus" y es el primero, ya que el segundo es el proceso de aplicar el "grep".

Así que nos quedamos con el PID, que es el número que está al lado del nombre del usuario que ha ejecutado ese proceso, en este caso 5240

kill/killall

Para "matar" procesos, no hay nada más visual que la propia palabra, pero si vienes de Windows estarás más familiarizado con la palabra "Finalizar", es lo mismo. Con estos comandos finalizarás/matarás un proceso que esté activo, sirve para esas ocasiones en que un programa no responde y quieres forzar su detención.

Hay una pequeña diferencia entre ambos comandos, "kill" debe ir acompañado del ID del proceso, el que recogimos en el punto anterior, mientras que "killall" ha de ir acompañado del nombre exacto del programa/proceso. Por ejemplo:

kill -9 PID

kill

Mata el proceso con el identificador "PID", en este caso Nautilus. Mientras que:

killall nautilus

Hace lo mismo sólo que sin necesidad de saber el ID del proceso/programa, sólo con su nombre.

Hay que tener cuidado con el comando "killall" ya que en algunos sistemas Unix/Linux este comando sirve para finalizar todos los procesos.

top

Aquí podremos ver ordenados de mayor a menor consumo los procesos "activos" en el sistema, puede equipararse con el "Administrador de tareas" de Windows, aunque por línea de comandos:

top

Muestra también el consumo de memoria, CPU y demás datos relativos a la carga del sistema

Memoria RAM

free

De esta forma veremos la memoria RAM libre en el sistema de forma detallada, para ello basta con ejecutar:

free

Espacio de almacenamiento

df

Por defecto nos muestra el tamaño disponible, usado y puntos de montaje de los discos duros conectados al sistema, pero si queremos hacer que los datos sean legibles para un humano, debemos ejecutar:

df -h

De esta forma adaptará los resultados para que sean entendibles fácilmente, por ejemplo, poniendo los tamaños en Gigabytes, Kilobytes, etc.

Dispositivos

lspci

Muestra los dispositivos que están conectados a nuestro equipo mediante el puerto PCI, sólo hay que ejecutar:

lspci

lsusb

Hace lo mismo que el comando anterior sólo que éste muestra los conectados por USB y para ejecutarlo bastará con hacer:

lsusb

mount ó umount

Sirven para montar o desmontar dispositivos de almacenamiento respectivamente. Hay que ser consciente que Linux no reconoce por defecto todos los tipos de sistemas de ficheros que existen, para algunos habrá que instalar cosas a mayores como por ejemplo para el sistema NTFS de Windows, pero siempre que el sistema de ficheros sea reconocido por Linux por defecto podremos montarlo con estos comandos sin mucha dificultad, para ello:

mount /dev/sda1 /mnt/Pendrive

Una vez hayamos terminado de copiar cosas en él dispositivo en cuestión, tendremos que desmontarlo ("Extraer de forma segura" en Windows) para no tener pérdidas de datos, para ello tenemos dos opciones:

umount /dev/sda1

O indicando su punto de montaje:

umount /mnt/Pendrive

Tanto "mount" como "umount" requieren de permisos de super usuario (administrador)

Redes

ifconfig

Básicamente sirve para ver la configuración de red de nuestro equipo, si ejecutamos:

ifconfig

Nos mostrará los dispositivos de red conectados al equipo y sus características, pero si queremos ver la dirección IP que tiene asociado cada uno de ellos tendremos que añadir la opción "-a":

ifconfig -a

ifconfig

Instalación de programas

Una de las cosas que más frustran al llegar a Linux desde Windows es el no saber cómo se instalan los programas, a pesar de haber en casi todas las distribuciones un programa que sirve para buscar e instalar cosas en nuestro Linux de forma gráfica y fácil, cuando uno llega no conoce su existencia y puede que no dé con él. Por ello quiero poner aquí cómo instalar programas desde la línea de comandos en las distribuciones más comunes para usuarios que están empezando a usar Linux.

Lo primero que has de saber es en qué está basada tu distribución, pueden darse varios casos:

  • Basadas en Debian: Ubuntu y derivados, Linux Mint, Raspbian, Knoppix, Kali Linux, etc
  • Basadas en Red Hat (RPM): CentOS, Fedora, Mageia, Mandriva, openSUSE, etc.

Una vez sepas en cuál está basada tu distribución, para gestionar los programas desde la línea de comandos has de hacer:

Basadas en Debian

Para buscar paquetes (programas):

apt-cache search nautilus

Para instalar paquetes:

apt-get install nautilus

Para desinstalar paquetes:

apt-get remove nautilus

Basadas en Red Hat (RPM)

Para buscar paquetes:

yum search nautilus

Para instalarlos:

yum install nautilus

Para desinstalarlos:

yum remove nautilus

Tanto para instalar como para eliminar se pueden añadir más programas separados por un espacio, para instalar o eliminar varios de una única vez

Estas son las opciones más comunes, luego hay otras más avanzadas.

Estos son los comandos que yo considero pueden ayudar bastante a un recién iniciado en Linux, como sabrás o te imaginarás hay muchos más, muchísimos, para hacer cualquier cosa. Pero eso lo descubrirás con el paso del tiempo.

Espero que te haya sido de utilidad. Si tienes alguna duda o sugerencia puedes dejar un comentario en la parte de abajo.

Relacionado: