Hola a todos de nuevo…foto de Eloy Mier Pérez

La línea de comandos no ha sido pensada para los sabelotodo de Linux. En realidad es una herramienta impresionante sin ningún tipo de limitación funcional. Esto pretende ser un pequeño manual de cómo funciona, y de cómo poder hacer todo lo que se te pase por la cabeza con ella.

Nota: Este artículo esta pensado para gente que o bien es nueva en la línea de comandos o bien para aquellos que solo cuentan con nociones básicas sobre la misma. En el caso de que el lector ya sea un usuario medianamente avanzado en cuanto al uso de la línea de comandos, lo único que podrás hacer con este artículo es enviarlo a algún amigo que este empezando y hablarle de las bondades del uso de la misma.

¿Que es la línea de comandos?

El interfaz de línea de comandos, en algunas ocasiones denominado CLI, es una herramienta en la que puedes teclear comandos de texto para realizar tareas especificas – en contraste con las operaciones realizables con el ratón de movimiento y selección. Debido a que puedes controlar directamente el PC simplemente tecleando comandos, muchas tareas pueden realizarse más rápidamente, y alguna de ellas puede automatizase con comandos especiales que las agrupan y ejecutan la misma tarea repetidas veces en muchos ficheros – ahorrándote mucho tiempo en el proceso.

La aplicación o interfaz de usuario que acepta tus comandos de respuesta y muestra la información en la pantalla se llama SHELL, del que existen numerosas variantes sobre las que puedes seleccionar la que mas te guste. El Shell mas común actualmente es el llamado Bash, que además se corresponde con el por defecto en las máquinas Linux y Mac en el terminal.

Por defecto, los sistemas Windows solo incluyen una patética aplicación para la línea de comandos, que no tiene absolutamente nada que ver con la potencia que proporciona Bash, por lo tanto y para el propósito de este articulo te voy a recomendar que uses una herramienta de código libre llamada Cygwin como tu herramienta de línea de comandos para Windows, debido a que es bastante mas potente que la que Windows incorpora.

Uso básico de la línea de comandos

Para comenzar con la línea de comandos necesitarás abrir una ventana de terminal para comenzar a introducir comandos. Aquí tienes una lista de los comandos básicos que puedes comenzar a usar, organizados por el tipo de actividad que quieras efectuar.

Cuando ejecutes la aplicación de terminal el prompt del sistema se encontrará situado en alguna carpeta concreta del disco duro de tu máquina. Puedes navegar a lo largo de las carpetas, realizar operaciones sobre los ficheros dentro de las carpetas o realizar otro tipo de actividades.

Listando ficheros

Comencemos, como primer punto, obteniendo un listado de los ficheros que se encuentran dentro del directorio actual. Para efectuar esta tarea vas a necesitar el comando ls. Se pueden pasar un gran número de parámetros al comando bien para mostrar detalles adicionales o bien para modificar el orden de ordenación del listado. Por ejemplo si añades al final del comando –l obtendrás un listado detallado de ficheros; -t ordenara los ficheros por tiempo; -s ordenara por tamaño; y –r indicará ordenación inversa. También puedes usar una combinación de opciones; como por ejemplo la siguiente, que mostrará todos los ficheros ordenados por tamaño con el fichero más grande al final del listado y todos en formato de detalle:

ls -lSr

Si usas la opción –a, podrás ver los ficheros ocultos, y además un par de elementos adicionales en el listado «.» y «..» en el comienzo. Estos elementos representan el directorio actual “.” y el padre “..”.

Cambio de directorios

Puedes moverte entre directorios usando el comando cd. Haciendo uso de lo que acabamos de ver sobre el directorio padre “..”, podemos usar el siguiente comando para movernos al directorio directamente superior del actual:

cd ..

Puedes navegar con rutas relativas o absolutas. Por ejemplo, el comando que acabamos de ver navega usando un camino relativo -a partir del directorio actual subir un nivel. Si estás situado en /ruta/uno/ y simplemente quieres navegar a un directorio llamado stuff que está dentro del indicado, puedes simplemente indicar el comando:

cd stuff

Puedes navegar usando una ruta absoluta. De nuevo, si esta en /ruta/uno/ y quieres ir a /otra/ruta/, simplemente puedes indicar:

cd /otra/ruta

Para cambiar de forma rápida al directorio de trabajo anterior, debes usar el guión -. Por ejemplo, si estábamos trabajando en el directorio /primera/ruta/aaa/ y cambiamos a /etc/ para realizar algún ajuste en la configuración de la máquina, posiblemente no te apetezca picarte de nuevo la ruta al directorio anterior, simplemente usa el comando siguiente para volver a él:

cd –

Creación y borrado de directorios

Para crear un nuevo directorio, debes usar simplemente el comando mkdir <directorio>. Para borrar un directorio se usa el comando rmdir <directorio> —siempre que el directorio este vacío. Si existen ficheros dentro del directorio, tendrás que borrar primero esos ficheros para poder borrar el directorio, o bien usar el comando

rm –R <directorio>

Creación y borrado de ficheros

Puedes usar el comando touch <fichero> para crear un fichero vacio, y usar el comando rm <fichero>para borrar el fichero:

rm fichero

Puede borrar rápidamente todos los ficheros en un directorio usando el * (asterisco) como carácter comodín –este es otro ejemplo de utilidad que te hará la vida mas fácil cuando uses la línea de comandos. Por ejemplo, si te encuentras en un directorio y quieres borrar todos los ficheros del mismo puedes usar el comando siguiente:

rm *

Si lo que quieres es borrar una lista de ficheros y directorios, incluyendo todos los ficheros de los propios subdirectorios y sin la necesidad de que el sistema te pida confirmación por cada uno de ellos puedes usar el modificador –f para forzar el borrado y el modificador –r para hacerlo recursivo. El siguiente comando borrara todas las instancias de fichero que coincidan con el patrón indicado partiendo del directorio actual y hacia abajo:

rm –rf fichero.*

Edición de ficheros de texto plano

El comando a usar para la edición de ficheros difiere de la plataforma que estés usando y de la aplicación de tus preferencias. En el caso de Linux puedes usar el editor nano para rápidamente editar ficheros, que posiblemente sea de las más sencillas de usar para personas que comienzan.

nano /ruta/a/fichero

A parte de esta, el editor vim siempre estará disponible en todos los sistemas y puedes invocarlo mediante el comando vi <fichero>.

Visualizando contenidos de ficheros

Puedes visualizar directamente los contenidos de un fichero con el comando cat, pero posiblemente los resultados se volcaran rápidamente en la pantalla, no pudiendo ver casi nada, posiblemente sea mejor usar los comandos more o less. Por ejemplo:

more <fichero>

Este comando mostrara los contenidos del fichero en la pantalla y le pedirá al usuario una pulsación de teclado para hacer un scroll en el fichero.

Redirección

Todas las aplicaciones de línea de comando por defecto leen de la entrada estándar y escriben en la salida estándar, para cambiar este comportamiento puedes usar los operadores > o | para redirigir la salida se un comando a otro, lo que permite encadenar comandos para componer otros más potentes.

Por ejemplo, si quieres hacer un ls –l para visualizar una lista de ficheros pero además quieres que se pueda hacer un scroll en la pantalla, puedes montar un tubería con la salida del comando ls –l a la entrada del comando more usando el operador |:

ls –l | more

Si quisiésemos guardar el listado directamente en un fichero en vez de que se muestre por la pantalla, podríamos usar el operador >:

ls -l > filename.list

También podríamos usar el comando cat para mostrar los contenido del fichero recién creado, haciendo una tubería al comando grep (mas detalle delante), y por ultimo redirigir la salida a otro fichero:

cat filename.list | grep keyword > filefound.list

Ejecutando un script en el directorio actual

Si tenemos una aplicación o un script de shell en el directorio actual, no puedes escribir simplemente el nombre del mismo, pulsar enter y esperar que la cosa funcione. Para hacer que funcione necesitas añadir “./” al principio de la línea. ¿Por qué? Pues es muy sencillo, porque en el shell Bash, el directorio actual, o “.”, no está incluido dentro del path del sistema. Por lo tanto necesitaremos escribir:

./script.sh

Usando la historia

Puedes usar el comando history para mostrar los comandos usados recientemente, también puedes usar la fecha arriba/abajo para recorrerlos. El atajo de teclado Ctrl+R te posiciona en el modo búsqueda donde puedes, simplemente picando los primeros caracteres del comando, buscar en el historial reciente.

Bucle en un conjunto de ficheros

Si lo que buscas es recorrer todos los ficheros en un bucle y para cada uno de ellos realizar una acción; puedes usar el comando for para iterar sobre ellos. Por ejemplo, para recorrer todos los ficheros con extensión .txt en el directorio actual y visualizarlos en la consola, puedes usar el comando siguiente:

for f in *.txt;do echo $f;done

Búsquedas

Puedes usar el comando find para hacer búsquedas de ficheros en el sistema. Como ejemplo, si queremos buscar en el sistema todos los ficheros que contengan “.txt” en el nombre y que además hayan sido modificados en los últimos 5 días, podemos usar un comando como:

find . –name «*.txt» –mtime 5

Buscando texto en ficheros

El comando grep se usa para encontrar rápidamente texto dentro de los ficheros, incluso de forma recursiva. Por ejemplo, si quisiésemos buscar en todos los ficheros del directorio actual y subdirectorios el texto «hola mundo», podríamos hacer lo siguiente:

grep –ir «hola mundo» *

Renombrado de ficheros en lotes

puedes usar el comando de rename para rápidamente renombrar ficheros usando una expresión regular. Por ejemplo, si quisiésemos renombrar todos los ficheros que contienen el texto “foo” para que pasen a contener el texto “bar” en su lugar, podríamos hacer lo siguiente:

rename –v ‘s/foo/bar/g’ *

Atajos de teclado bash

Existen multitud de de atajos de teclado que se pueden usar en el shell bash. Aquí dejo indicados los primeros para comenzar:

  • Ctrl + U: Limpia la línea desde la posición actual del cursor hacia el comienzo de la misma.

  • Ctrl + A: Mueve el cursor al comienzo de la línea.

  • Ctrl + E: Mueve el cursor al final de la línea.

  • Ctrl + R: Te permite buscar sobre comandos anteriores.

Personalización de tu línea de comandos

No hay necesidad de trabajar en una línea de comandos aburrida existiendo multitud de truquillos para personalizarla, como por ejemplo aplicación de colores, cambio de las fuentes, hacer uso de alias para simplificar la entrada de comandos, etc. En este artículo no voy a entrar a dar más detalle sobre este asunto entre otras cosas por que me llevaría unas cuantas páginas más y no es objetivo del presente texto.

Como referencias al respecto podéis consultar las siguientes entradas publicadas en este mismo blog, aparte de multitud de información existente en Inet.

Alias

Los alias te liberan una enorme cantidad de tiempo, transforman complicados comandos en otros verdaderamente simples, también puedes establecer los parámetros por defecto de los comandos para liberarte de tener que picarlos de forma continua. Por ejemplo, si deseas hacer un alias para un comando que instale los paquetes de Ubuntu es tan sencillo y rápido como sudo apt-get install packagename, puedes hacer algo similar a esto:

alias agi=’sudo apt-get install’

Este alias hace lo que estábamos buscando, ahora ya solo tenemos que teclear agi paquete en el shell para instalar cualquier paquete con solo unas pocas pulsaciones de tecla. Como ya se ha comentado antes, también puedes usar alias para establecer parámetros por defecto en los comandos, como ejemplo, si quisiésemos que los listados de directorio siempre consten en formato largo podemos definir el alias siguiente:

alias ls=’ls –l’

Existen alias muy útiles que puedes usar para personalizar tu sistema. Los alias mas comunes los puedes consultar en la siguiente dirección lista de los 10 alias mas usados.

Control del sistema desde el shell

El terminal posee una cantidad muy importante de herramientas interesantes para manipular y controlar procesos y estadísticas del sistema. Puedes usar el comando ps para ver una lista de procesos de sistema del siguiente modo:

ps aux

Puedes usar el comando kill <pid> para matar cualquier proceso. También puedes usar la herramienta top para obtener una lista de procesos más gráfica y a partir de ella usar la tecla K para matar el proceso que desees.

Comments (1)

rebufo

Mar 18, 2011 at 12:06 AM

Qué gran labor estás haciendo. Siendo usuario habitual, aunque no experto, de la línea de comandos, mañana mismo pruebo los atajos de teclado, hace tiempo que los voy necesitando, pero sin demasiado tiempo para buscarlos por ahí. Un saludo.

You must be logged in to post a comment.