Visión de conjunto
La línea de comandos de Linux es una interfaz de texto con su ordenador. A menudo llamada shell, terminal, consola, intérprete u otros nombres, puede dar la impresión de ser compleja y desconcertante de utilizar. Sin embargo, la posibilidad de copiar y pegar comandos desde un sitio web, combinada con la potencia y la flexibilidad que ofrece la línea de comandos, significa que su uso es esencial.
Este tutorial le enseñará un poco de la historia de la línea de comandos y después le guiará a través de algunos ejercicios prácticos para que se familiarice con algunos comandos y conceptos básicos. No daremos por supuesto ningún conocimiento previo, pero al final esperamos que se sienta un poco más cómodo la próxima vez que se encuentre con instrucciones que empiezan por «Abra un terminal».
Escrito inicialmente por peppertop .
Lo que usted aprenderá
- Un poco de historia de la línea de comandos
- Cómo acceder a la línea de comandos desde su propio ordenador
- Cómo efectuar una manipulación básica de archivos
- Algunos otros comandos útiles
- Cómo encadenar los comandos para crear herramientas más potentes
- La mejor manera de utilizar los permisos de administrador
Lo que usted necesitará
- Un ordenador que ejecute Ubuntu u otra versión de Linux
Todo sistema Linux incluye una línea de comandos de un tipo u otro. Este tutorial incluye algunos pasos específicos para Ubuntu, pero la mayor parte del contenido debería funcionar sea cual sea su distribución Linux.
Apertura de un terminal
En un sistema con entorno de escritorio Ubuntu 18.04, puede encontrar un lanzador para el terminal haciendo clic en el elemento Actividades, arriba a la izquierda de la pantalla, y escribiendo después las primeras letras de «terminal», «comando», «intérprete» o «shell». Sí, los desarrolladores han configurado el lanzador con todos los sinónimos más habituales, de modo que no debería tener ningún problema para encontrarlo.

Las demás versiones de Linux, u otras versiones de Ubuntu, tendrán generalmente un lanzador de terminal situado en el mismo lugar que sus otros lanzadores de aplicaciones. Puede estar oculto en un submenú o quizá tenga que buscarlo en su lanzador, pero es probable que esté ahí en alguna parte.
Si no encuentra ningún lanzador, o si simplemente quiere una manera más rápida de mostrar el terminal, la mayoría de los sistemas Linux utilizan el mismo atajo de teclado por defecto para iniciarlo: Ctrl-Alt-T .
Sea cual sea la forma en que inicie su terminal, debería encontrarse con una ventana más bien sosa con algo de texto extraño en la parte superior, algo parecido a la imagen siguiente. Según su sistema Linux, los colores pueden no ser los mismos, y el texto dirá probablemente algo distinto, pero la disposición general de una ventana con una gran zona de texto (casi vacía) debería ser similar.
Lancemos nuestro primer comando. Haga clic con el ratón en la ventana para asegurarse de que es ahí donde van sus pulsaciones, después escriba el comando siguiente, todo en minúsculas , antes de pulsar la tecla Intro o Retorno para ejecutarlo.
pwd
Debería ver impresa una ruta de directorio (probablemente algo como /home/SU_USUARIO), y más arriba, otra copia de ese comando.
Cuando ejecuta un comando, toda salida que produzca se imprimirá generalmente directamente en el terminal, y aparecerá otro intérprete una vez terminado. Algunos comandos pueden generar mucho texto, otros funcionarán en silencio y no mostrarán nada en absoluto. No se inquiete si ejecuta un comando y aparece inmediatamente otro intérprete, porque eso significa generalmente que el comando ha tenido éxito. Si piensa en la lentitud de las conexiones de red de nuestros terminales de los años 1970, aquellos primeros programadores decidieron que, si todo iba bien, más valía ahorrar unos preciosos octetos de transferencia de datos no diciendo nada en absoluto.
La importancia de las mayúsculas Preste mucha atención a las mayúsculas cuando escriba en la línea de comandos. Escribir PWD en lugar de pwd producirá un error, pero a veces el uso incorrecto de mayúsculas puede hacer que un comando parezca ejecutarse sin hacer lo que usted esperaba. Examinaremos las mayúsculas un poco más adelante pero, por el momento, asegúrese simplemente de escribir todas las líneas siguientes exactamente tal como se muestran.
Un sentido de la orientación
Pasemos ahora al comando en sí. pwd es una abreviatura de « p rint w orking d irectory. Todo lo que hace es «imprimir» (mostrar) el directorio de trabajo actual del shell. Pero ¿qué es un directorio de trabajo ?
Un concepto importante que hay que comprender es que el shell tiene una noción de ubicación por defecto en la que tendrán lugar todas las operaciones sobre los archivos. Este es su directorio de trabajo. Si intenta crear nuevos archivos o directorios, mostrar archivos existentes o incluso eliminarlos, el shell supondrá que los busca en el directorio de trabajo actual, salvo que tome medidas para especificar lo contrario. Por tanto, es muy importante mantener una idea del directorio en el que se encuentra el shell en un momento dado; al fin y al cabo, eliminar archivos del directorio equivocado podría ser desastroso. En caso de duda, el comando pwd le dirá exactamente cuál es su directorio de trabajo actual.
Puede cambiar el directorio de trabajo con ayuda del comando cd, una abreviatura de
« c hange d irectory». Pruebe a escribir lo siguiente:
cd /
pwd
Observe que el separador de directorios es una barra oblicua («/»), no la barra invertida a la que puede estar acostumbrado por los sistemas Windows o DOS
Ahora su directorio de trabajo es «/». Si viene de un entorno Windows, probablemente esté acostumbrado a que cada unidad tenga su propia letra, siendo su disco duro principal generalmente «C:». Los sistemas de tipo Unix no dividen los discos así. En su lugar, tienen un único sistema de archivos unificado, y las unidades individuales pueden conectarse («montarse») en cualquier ubicación del sistema de archivos que tenga más sentido. El directorio «/», a menudo llamado directorio raíz (root), es la base de este sistema de archivos unificado. A partir de ahí, todo lo demás se ramifica para formar un árbol de directorios y subdirectorios.
Varias raíces Atención: aunque el directorio «/» se llame a veces directorio raíz , la palabra «root» tiene otro significado. root es también el nombre que se ha utilizado para el superusuario desde los inicios de Unix. El superusuario, como su nombre indica, tiene más poderes que un usuario normal, de modo que puede fácilmente causar estragos con un comando mal escrito. Examinaremos con más detalle la cuenta de superusuario en la sección 7. Por ahora, le basta con saber que la palabra «root» tiene varios significados en el mundo Linux, así que el contexto es importante.
Desde el directorio raíz, el comando siguiente le desplazará al directorio «home» (que es un subdirectorio inmediato de «/»):
cd home
pwd
Para subir al directorio padre, en este caso de vuelta a «/», utilice la sintaxis especial de dos puntos ( ..) al cambiar de directorio (observe el espacio entre cd y .., a diferencia de DOS, no puede escribir cd .. como un solo comando):
cd ..
pwd
Escribir cd solo es un atajo rápido para volver a su directorio personal:
cd
pwd
También puede utilizar .. varias veces si necesita desplazarse por varios niveles de directorios padre:
cd ../..
pwd
Rutas relativas y absolutas
La mayoría de los ejemplos que hemos examinado hasta ahora utilizan rutas relativas. Es decir, el lugar en el que acaba depende de su directorio de trabajo actual. Piense en intentar hacer cd a la carpeta «etc». Si ya está en el directorio raíz, funcionará bien:
cd /
pwd
cd etc
pwd
Pero ¿qué hacer si está en su directorio personal?
cd
pwd
cd etc
pwd
Verá un error que indica «No existe el archivo o el directorio» incluso antes de poder ejecutar el último pwd. Cambiar de directorio especificando el nombre del directorio o utilizando .. tendrá efectos distintos según el punto de partida. La ruta solo tiene sentido en relación con su directorio de trabajo.
Pero hemos visto dos comandos absolutos . Sea cual sea su directorio de trabajo actual, tendrán el mismo efecto. En el primero, ejecuta cd solo para acceder directamente a su directorio personal. En el segundo, ha utilizado cd / para cambiar al directorio raíz. De hecho, toda ruta que empieza por una barra oblicua es una ruta absoluta. Puede pensar en ello como decir «pase al directorio raíz y siga después el itinerario a partir de ahí». Esto nos da una manera mucho más sencilla de cambiar al directorio etc, sin importar dónde nos encontremos actualmente en el sistema de archivos:
cd
pwd
cd /etc
pwd
Esto nos da también otra manera de volver a su directorio personal, e incluso a las carpetas que contiene. Supongamos que desea acceder directamente a su carpeta «Escritorio» desde cualquier lugar del disco (observe la «D» mayúscula). En el comando siguiente, deberá sustituir USERNAME por su propio nombre de usuario; el comando whoami le recordará su nombre de usuario, por si no está seguro:
whoami
cd /home/USERNAME/Desktop
pwd
Existe otro atajo práctico que funciona como una ruta absoluta. Como ha visto, utilizar «/» al principio de su ruta significa «a partir del directorio raíz». El uso del carácter virgulilla («~») al principio de su ruta significa del mismo modo «a partir de mi directorio personal».
cd ~
pwd
¿Ha observado que el texto mostrado antes del intérprete de su comando cambia cuando se desplaza por el sistema de archivos? En un sistema Ubuntu, muestra su nombre de usuario, el nombre de red de su ordenador y el directorio de trabajo actual. Pero si se encuentra en algún lugar de su directorio personal, utilizará «~» como abreviatura.
Recapitulación -> Paseemos un poco por el sistema de archivos y no pierda de vista el intérprete mientras lo hace:
cd
cd /
cd ~
cd /etc
cd /var/log
cd ..
cd
Ya debe de estar bastante aburrido con el simple hecho de desplazarse por el sistema de archivos, pero una buena comprensión de las rutas absolutas y relativas será valiosísima cuando pasemos a la creación de nuevas carpetas y archivos.
4. Creación de carpetas y de archivos
En esta sección vamos a crear archivos reales con los que trabajar. Para evitar pisar accidentalmente alguno de sus archivos reales, vamos a empezar creando un nuevo directorio, bien alejado de su carpeta personal, que servirá de entorno más seguro en el que experimentar:
mkdir /tmp/tutorial
cd /tmp/tutorial
Observe el uso de una ruta absoluta, para asegurarnos de que creamos el directorio tutorial en / tmp . Sin la barra oblicua al principio, el comando mkdir intentaría encontrar un directorio tmp en el directorio de trabajo actual y después intentaría crear un directorio tutorial en suinterior. Si no encuentra un directorio tmp , el comando falla.
Por si no lo había adivinado, mkdir es la abreviatura de « m a k e dir ectory». Ahora que estamos seguros en nuestra zona de pruebas (compruébelo con pwd si no está seguro), creemos algunos subdirectorios:
mkdir dir1 dir2 dir3
Hay algo un poco distinto en este comando. Hasta ahora solo hemos visto comandos que funcionan solos (cd, pwd) o que llevan un único elemento después (cd /, cd ~). Pero esta vez hemos añadido tres cosas después del comando mkdir. Estos elementos se llaman parámetros o argumentos, y distintos comandos pueden aceptar distintos números de argumentos. El comando mkdir espera al menos un argumento, mientras que el comando cd puede funcionar con cero o uno, pero no más. Vea lo que ocurre cuando intenta pasar un número incorrecto de parámetros a un comando:
mkdir
cd /etc ~
Volvamos a nuestros nuevos directorios. El comando anterior habrá creado tres nuevos subdirectorios en nuestra carpeta. Echémosles un vistazo con el comando ls ( l i s t):
ls
Observe que mkdir ha creado todas las carpetas en un mismo directorio. No ha creado dir3 dentro de dir2 dentro de dir1, ni ninguna otra estructura anidada. Pero a veces resulta práctico poder hacer exactamente eso, y con mkdir hay una manera:
mkdir -p dir4/dir5/dir6
ls
Esta vez verá que solo se ha añadido dir4 a la lista, porque dir5 se encuentra en su interior y dir6 está dentro. Más adelante instalaremos una herramienta útil para visualizar la estructura, pero ya tiene conocimientos suficientes para confirmarlo:
cd dir4
ls
cd dir5
ls
cd ../..
El «-p» que hemos utilizado se llama una opción o un conmutador (en este caso significa «crear también la carpeta padre »). Las opciones se utilizan para modificar la manera en que funciona un comando, permitiendo que un solo comando se comporte de distintas maneras. Por desgracia, debido a las rarezas de la historia y de la naturaleza humana, las opciones pueden adoptar formas distintas en distintos comandos. Las verá a menudo como caracteres únicos precedidos de un guion (como en este caso), o como palabras más largas precedidas de dos guiones. La forma de carácter único permite combinar varias opciones, aunque no todos los comandos lo aceptan. Y para complicar aún más las cosas, algunos comandos no identifican en absoluto claramente sus opciones: ¡que algo sea o no una opción viene dictado únicamente por el orden de los argumentos! No tiene que preocuparse por todas las posibilidades; sepa simplemente que existen opciones y que pueden adoptar varias formas distintas.
# Ne tapez pas ce qui suit, ceci est juste pour la démonstration
mkdir --parents --verbose dir4/dir5
mkdir -p --verbose dir4/dir5
mkdir -p -v dir4/dir5
mkdir -pv dir4/dir5
Ahora sabemos cómo crear varios directorios simplemente pasándolos como argumentos separados al comando mkdir. Pero supongamos que queremos crear un directorio con un espacio en el nombre. Probemos:
mkdir another folder
ls
Probablemente ni siquiera necesite escribir este para adivinar lo que ocurriría: dos nuevas carpetas, una llamada another y la otra llamada folder . Si desea utilizar espacios en los nombres de directorio o de archivo, debe escaparlos . No se inquiete, nadie sale de prisión; escapar es un término informático que se refiere al uso de códigos especiales para indicar al ordenador que trate ciertos caracteres de manera distinta a la normal. Introduzca los comandos siguientes para probar distintas maneras de crear carpetas con espacios en el nombre:
mkdir "folder 1"
mkdir 'folder 2'
mkdir folder\ 3
mkdir "folder 4" "folder 5"
mkdir -p "folder 6"/"folder 7"
ls
Aunque la línea de comandos pueda utilizarse para trabajar con archivos y carpetas con espacios en sus nombres, la necesidad de escaparlos con comillas o barras invertidas hace las cosas un poco más difíciles. A menudo puede reconocer a una persona que utiliza mucho la línea de comandos solo por sus nombres de archivo: tenderá a atenerse a letras y cifras y a utilizar guiones bajos («_») o guiones («-») en lugar de espacios.
Creación de archivos mediante la redirección
Nuestra carpeta de demostración empieza a parecer bastante llena de directorios, pero algo escasa de archivos. Pongamos remedio a esto redirigiendo la salida de un comando para que, en lugar de imprimirse en la pantalla, acabe en un nuevo archivo. En primer lugar, recuerde lo que muestra actualmente el comando ls:
ls
Supongamos que queremos capturar la salida de este comando en forma de archivo de texto que podamos examinar o manipular posteriormente. Todo lo que tenemos que hacer es añadir el carácter mayor que («>») al final de nuestra línea de comandos, seguido del nombre del archivo en el que escribir:
ls > output.txt
Esta vez no se imprime nada en la pantalla, porque la salida se redirige a nuestro archivo. Si ejecuta simplemente ls solo, debería ver que se ha creado el archivo output.txt. Podemos utilizar el comando cat para mirar su contenido:
cat output.txt
De acuerdo, no es exactamente lo que se mostraba antes en la pantalla, pero contiene todos los mismos datos, y está en un formato más útil para un tratamiento posterior. Veamos otro comando, echo:
echo "This is a test"
Sí, echo simplemente vuelve a imprimir sus argumentos (de ahí el nombre). Pero combínelo con una redirección y tendrá una manera de crear fácilmente pequeños archivos de prueba:
echo "This is a test" > test_1.txt
echo "This is a second test" > test_2.txt
echo "This is a third test" > test_3.txt
ls
Debe utilizar cat en cada uno de estos archivos para verificar su contenido. Pero cat es más que un simple visor de archivos: su nombre viene de «concatenate», que significa «unir». Si le pasa más de un nombre de archivo, cada uno de ellos se mostrará uno tras otro en forma de un solo bloque de texto:
cat test_1.txt test_2.txt test_3.txt
Cuando desee pasar varios nombres de archivo a un solo comando, existen atajos útiles que pueden ahorrarle mucha escritura si los archivos tienen nombres similares. Un signo de interrogación («?») puede utilizarse para indicar «cualquier carácter único» en el nombre de archivo. Un asterisco («*») puede utilizarse para indicar «cero o varios caracteres». Estos últimos se llaman a veces caracteres «comodín». Algunos ejemplos pueden ayudar; los comandos siguientes hacen todos lo mismo:
cat test_1.txt test_2.txt test_3.txt
cat test_?.txt
cat test_*
Continuará..
