Un repaso de los comandos de Linux¶
En el capÃtulo anterior veÃamos como trabajar con la emulación de Terminal, y algunos comando básicos. Aquà veremos algunos más.
Referencia de comandos¶
Ya hemos visto que el programa gestor de comandos más popular en el mundo Linux es bash. Tiene su propio lenguaje de comandos, lo que da lugar a una bibliografÃa muy extensa. Lo explicado en este capÃtulo no pretende ir más allá de una introducción. Si queremos profundizar en la materia, encontraremos amplio material navegando por la red.
El recurso básico es el comando man. Por ejemplo, el comando apt permite
gestionar la descarga e instalación de paquetes de software en formato Debian.
Para consultar el manual básico, introducimos el comando:
$ man apt
lo que muestra un resumen del comando apt. Usando las teclas de flecha
Down Up podemos desplazarnos por el texto. Pulsar Q para abandonar
(quit).
¡Ojo! El comando man no es un tutorial. Es más bien un manual de referencia, en lÃneas generales, bastante técnico. Existen varios proyectos para poner los manuales de Linux en la red. Por ejemplo:
Si buscamos tutoriales, aquà tenemos un par de ellos:
Argumentos¶
En el capÃtulo anterior, veÃamos como iniciar el procesador de textos de Gnome desde el Terminal de comandos. Por ejemplo, para ejecutarlo con dos archivos abiertos:
$ gnome-text-editor archivo1.txt archivo2.txt
A la información añadida a un comando se le llama "argumentos". Se delimitan mediante espacios separadores:
- comando: gnome-text-editor
- primer argumento: archivo1.txt
- segundo argumento: archivo2.txt
¿Que pasa si el nombre de un archivo contiene espacios? Que obtendremos un error:
$ gnome-text-editor mi primer documento.txt
Esto será interpretado como tres argumentos. La solución es fácil; si un argumento contiene espacios, podemos entrecomillarlo para que sea considerado como un todo:
$ gnome-text-editor "mi primer documento.txt"
También podemos usar apóstrofos en lugar de comillas dobles:
$ gnome-text-editor 'mi primer documento.txt'
Opciones¶
Un caso especial de argumentos son las opciones. Son indicadores que modifican el comportamiento del comando. Por ejemplo:
$ date
sáb 27 abr 2024 10:51:48 CEST
$ date -u
sáb 27 abr 2024 08:51:48 UTC
Vemos que, por defecto, el comando date muestra la hora local, en este ejemplo,
en horario CEST (Central European Summer Time). Con la opción -u, muestra
la hora universal, sin desplazamiento de huso horario.
TÃpicamente, las opciones suelen ir precedidas de un guión. Suelen existir en dos versiones:
-
versión corta:
$ date -u -
versión larga:
$ date --utc
Las opciones escritas en versión larga suelen ir precedidas de dos guiones. Su significado es más evidente y son más fáciles de interpretar, aunque requieren un mayor esfuerzo de tecleo, y si pasamos muchas opciones, el texto del comando puede resultar excesivamente largo.
¡Cuidado! Ya hemos visto que Linux diferencia mayúsculas de minúsculas.
Una misma opción -u y -U podrÃa ser válida en ambos casos, pero con
diferente significado. En el caso del comando date, la opción -U en
mayúsculas no existe, y mostrará un mensaje de error:
$ date -U
date: opción incorrecta -- «U»
Pruebe 'date --help' para más información.
La opción --help, y en ocasiones, su equivalente corto -h, suelen estar
presentes en muchos comandos. Sirven para visualizar en la consola un texto de
ayuda.
Dependiendo del comando, algunas opciones se pueden combinar en una sola.
Por ejemplo, el comando cal muestra un calendario, y ncal es un comando
similar, pero con más posibilidades:
$ ncal -b3
Marzo 2024 Abril 2024 Mayo 2024
lu ma mi ju vi sá do lu ma mi ju vi sá do lu ma mi ju vi sá do
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31
Aquà combinamos la opción -b (mostrar cada semana en una fila) con la opción
-3 (mostrar tres meses, anterior, actual y siguiente). Equivale a:
$ ncal -b -3
Las combinaciones solo se pueden hacer con opciones cortas.
cal y ncal
Muchos comandos son en realidad pequeños programas. cal y ncal son dos
comandos que a veces no vienen instalados de serie. Es fácil de solucionar.
Por ejemplo, para instalar ncal usamos el comando:
sudo apt install ncal
Borrar pantalla¶
El funcionamiento del terminal es mediante flujo de caracteres. A medida que se va llenando la ventana, el texto se irá desplazando hacia arriba para dejar espacio. Los programas de terminal suelen proporcionar una barra lateral de desplazamiento que podemos arrastrar para visualizar el texto que ha quedado oculto (algo que no existÃa en los terminales antiguos).
Si el terminal se llena de texto y queremos hacer "limpieza" de la ventana, podemos ejecutar el comando:
$ clear
El directorio de trabajo¶
Supongamos que estamos visualizando el contenido de una carpeta en la ventana
del gestor de archivos, por ejemplo, las imágenes de fondo de escritorio que se
suministran con Ubuntu. Están en /usr/share/backgrounds/:

Mientras navegamos usando el gestor de archivos, en todo momento hay una carpeta "actual" cuyo contenido se muestra. Para ir a otra carpeta, tendremos que abrirla pulsando sobre ella, lo que la convierte en la nueva carpeta actual.
En el uso del terminal pasa lo mismo. En todo momento hay una carpeta de trabajo,
conocida como working directory. Cuando abrimos una sesión de terminal, el
directorio actual comenzará siendo la carpeta principal del usuario, ubicada
generalmente en el directorio /home/usuario (cambiar "usuario" por el nombre
que corresponda). A esta carpeta también podemos hacer referencia por su alias,
formado por un único carácter ~.
Podemos ver cual es la carpeta actual en la información que se muestra en el
prompt, antes del carácter $
~ $
Otra forma de averiguar cual es la carpeta actual es ejecutando el comando pwd
(print working directory):
$ pwd
/home/antonio
Un detalle histórico:
En el mundo de los ordenadores, para mostrar algo en la pantalla se usa con frecuencia la palabra print, que significa imprimir. Es una herencia de los tiempos prehistóricos, cuando no habÃa pantallas y todos los datos se mostraban en papel.
Ver el contenido de un directorio¶
Para mostrar la lista de los archivos que hay en un directorio, utilizar el
comando ls (abreviatura de lista)
seguido del directorio a mostrar:
$ ls /usr/share/backgrounds
con lo que veremos la lista de archivos:
Flash_and_Thunder_by_Julian_Tomasini.jpg Quokka_Everywhere_by_Dilip.png
Lonely_Quokka_by_Dilip.png Schattenzug_by_OrbiteLambda.webp
Questing_Quokka_Full_Color_3840x2160.png The_Web_by_nkhdiscovery.png
Questing_Quokka_Full_Dark_3840x2160.png Ubuntu_with_Frutiger_Metro_by_lyk_lyk.png
Questing_Quokka_Full_Dimmed_3840x2160.png
Questing_Quokka_Full_Light_3840x2160.png ubuntu-default-greyscale-wallpaper.png
Questing_Quokka_Wallpaper_Dimmed_3840x2160.png ubuntu-wallpaper-d.png
Questing_Quokka_Wallpaper_Light_3840x2160.png warty-final-ubuntu.png
Si queremos mostrar el contenido de la carpeta actual, introducir el comando ls
sin especificar ningún directorio:
$ ls
Por defecto los archivos se muestran uno a continuación de otro, y a llegar al
extremo derecho de la ventana de Terminal, se sigue en la lÃnea siguiente.
Podemos mejorar la presentación mostrando los archivos en forma de una sola
columna, añadiendo la opción -1 como argumento. ¡Ojo! Es un número uno,
no la letra ele.
$ ls -1
Arizona_night_by_Orbite_Lambda.jpg
Einsamer_Raum_by_Orbite_Lambda.jpg
Oriole_3D_by_Dilip.png
Oriole_by_Julian_Tomasini.jpg
OrioleMascot_by_Vladimir_Moskalenko_dark.png
OrioleMascot_by_Vladimir_Moskalenko_light.png
Oriole_wallpaper_dimmed_3840x2160.png
Oriole_wallpaper_light_3840x2160.png
Sunset_by_Gabriele_Fontana.jpg
ubuntu-default-greyscale-wallpaper.png
Ubuntu_Legacy_by_Aaron_J_Prisk_dark.png
Ubuntu_Legacy_by_Aaron_J_Prisk_light.png
ubuntu-wallpaper-d.png
warty-final-ubuntu.png
Warty_remastered_by_Romactu.png
O bien, para obtener un directorio concreto en lugar del actual:
$ ls -1 /usr/share/backgrounds
Si queremos una lista detallada, usar la opción -l (letra ele minúscula)
para mostrar los archivos en formato "largo":
$ ls -l /usr/share/backgrounds
-rw-r--r-- 1 root root 10979580 Sep 3 06:48 Flash_and_Thunder_by_Julian_Tomasini.jpg
-rw-r--r-- 1 root root 219212 Sep 3 06:48 Lonely_Quokka_by_Dilip.png
-rw-r--r-- 1 root root 4013573 Sep 3 06:48 Questing_Quokka_Full_Color_3840x2160.png
-rw-r--r-- 1 root root 1320176 Sep 3 06:48 Questing_Quokka_Full_Dark_3840x2160.png
-rw-r--r-- 1 root root 1363529 Sep 3 06:48 Questing_Quokka_Full_Dimmed_3840x2160.png
-rw-r--r-- 1 root root 1541072 Sep 3 06:48 Questing_Quokka_Full_Light_3840x2160.png
-rw-r--r-- 1 root root 4546613 Sep 3 06:48 Questing_Quokka_Wallpaper_Dimmed_3840x2160.png
-rw-r--r-- 1 root root 5757248 Sep 3 06:48 Questing_Quokka_Wallpaper_Light_3840x2160.png
-rw-r--r-- 1 root root 3473785 Sep 3 06:48 Quokka_Everywhere_by_Dilip.png
-rw-r--r-- 1 root root 1798496 Sep 3 06:48 Schattenzug_by_OrbiteLambda.webp
-rw-r--r-- 1 root root 7600879 Sep 3 06:48 The_Web_by_nkhdiscovery.png
-rw-r--r-- 1 root root 931613 Sep 3 06:48 Ubuntu_with_Frutiger_Metro_by_lyk_lyk.png
drwxr-xr-x 2 root root 4096 Oct 7 04:44 contest
lrwxrwxrwx 1 root root 46 Sep 3 06:48 ubuntu-default-greyscale-wallpaper.png -> Questing_Quokka_Wallpaper_Dimmed_3840x2160.png
-rw-r--r-- 1 root root 3678190 Sep 3 06:48 ubuntu-wallpaper-d.png
-rw-r--r-- 1 root root 4248111 Oct 7 04:46 warty-final-ubuntu.png
Cada entrada de la lista es un archivo. Veamos el significado de las columnas.
-
el primer carácter
-indica que se trata de un archivo. Un directorio mostrará unad, y un enlace a otro fichero mostrarÃa una letral(abreviatura de "link") -
los nueve siguientes caracteres son los permisos que tiene el archivo. Puede
ser:rwxrwxrwxlos guiones indican permisos desactivados:
rw-r--r--rwxsignifica read, write, execute, es decir, permiso para examinar el archivo, modificarlo o ejecutarlo. En la secuencia de nueve caracteres, los tres primeros,rw-indican los permisos que tiene el usuario "propietario" de ese archivo. Evidentemente, tratándose de un archivo.jpg, es decir, una imagen, el permiso para ejecutarlo está desactivado, ya que no es un programa.Los tres siguientes caracteres muestran los permisos para los usuarios que pertenezcan al grupo propietario. Todo archivo tiene un usuario y un grupo de usuarios. En este caso, se establece que los usuarios del grupo propietario no tienen permiso write. Es decir, no pueden modificar ni borrar el archivo.
Los tres últimos caracteres muestran los permisos para el resto de usuarios.
-
la siguiente columna muestra el número de enlaces al fichero. Un 1 significa que esta es la única entrada de directorio que hace referencia a ese archivo.
-
seguidamente se muestran los nombres de usuario y grupo propietario. En el ejemplo vemos que solo podemos modificar o borrar el fichero si actuamos como usuario administrador del sistema (root).
-
en la siguiente columna vemos el tamaño del archivo en bytes
-
fecha de la última modificación
-
nombre del archivo, seguido del archivo apuntado, en el caso de los enlaces.
Una opción interesante del comando ls es -F (en mayúsculas), que muestra un
carácter añadido a los nombres de carpetas y archivos, indicando el tipo.
Por ejemplo, las carpetas se señalan con un carácter /, y los programas
ejecutables llevan un asterisco *.
$ ls ~ -lF
total 32
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Descargas/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Documentos/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Escritorio/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Imágenes/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Música/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Plantillas/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 Público/
drwxr-xr-x 2 jf jf 4096 mar 11 12:05 VÃdeos/
Véase que cuando combinamos varias opciones que estén limitadas a una letra y un
guión, podemos escribirlas combinándolas en una sola, como -lF. A mà me gusta
añadir también la opción -a, que muestra los archivos ocultos y las entradas
correspondientes a la carpeta actual y la padre. Los archivos ocultos se
distinguen porque el nombre lleva un punto como prefijo:
$ ls ~ -alF
total 80
drwxr-x--- 16 usuario usuario 4096 ene 8 16:45 ./
drwxr-xr-x 3 root root 4096 ene 8 10:30 ../
-rw------- 1 usuario usuario 97 ene 8 17:09 .bash_history
-rw-r--r-- 1 usuario usuario 220 ago 20 10:58 .bash_logout
-rw-r--r-- 1 usuario usuario 3771 ago 20 10:58 .bashrc
drwx------ 15 usuario usuario 4096 ene 8 20:15 .cache/
drwx------ 14 usuario usuario 4096 ene 8 16:27 .config/
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Descargas/
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Documentos/
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Escritorio/
drwx------ 2 usuario usuario 4096 ene 8 13:07 .gnupg/
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Imágenes/
drwx------ 4 usuario usuario 4096 ene 8 10:30 .local/
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Música/
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Plantillas/
-rw-r--r-- 1 usuario usuario 807 ago 20 10:58 .profile
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 Público/
drwx------ 6 usuario usuario 4096 ene 8 16:13 snap/
drwx------ 2 usuario usuario 4096 ene 8 10:30 .ssh/
-rw-r--r-- 1 usuario usuario 0 ene 8 16:45 .sudo_as_admin_successful
drwxr-xr-x 2 usuario usuario 4096 ene 8 10:30 VÃdeos/
Mostrar determinados archivos¶
Si no queremos ver el directorio completo, podemos especificar el nombre del archivo buscado, o usar comodines:
ls -alF /home/teresa/doc*
este ejemplo muestra las entradas que hay en esa carpeta, cuyo nombre empiece
por doc.
Cambiar de directorio¶
En comandos como ls, si no especificamos el directorio se utiliza la carpeta
actual. Ya hemos visto que podemos saber cual es la carpeta de trabajo usando el
comando pwd. Para establecer otra carpeta como tal, debemos usar el comando
cd (change directory) seguido del directorio al que queremos cambiar.
Por ejemplo:
cd /home/teresa/documentos
La ruta de carpetas indicada puede ser absoluta o relativa.
Una ruta absoluta es aquella que comienza con el carácter / (que representa
el directorio raÃz) o con el carácter ~, que representa el directorio de
usuario. Por ejemplo, los programas del sistema suelen estar en /usr/bin.
$ cd /usr/bin
$ pwd
/usr/bin
Una ruta relativa puede ser de tres tipos:
-
Si se escribe
./carpetahace referencia a una carpeta que cuelga de la actual, representada por el punto. -
Si se escribe
../carpetahace referencia a una carpeta que cuelga de la carpeta padre de la actual. La carpeta padre se representa con dos puntos. -
Si la ruta comienza directamente con un nombre de carpeta, es que se trata de una que cuelga de la actual. Por ejemplo,
carpeta1/carpeta2equivale a./carpeta1/carpeta2.
Nótese que podemos ir a una carpeta con varios comandos cd, paso a paso:
$ cd ~
$ cd carpeta1
$ cd carpeta2
$ pwd
/home/teresa/carpeta1/carpeta2
El primer comando nos deja en la carpeta raÃz del usuario. El resto van descendiendo por la estructura de carpetas del usuario.
Para subir a la carpeta de la que cuelga la actual escribimos:
$ pwd
/home/teresa/carpeta1/carpeta2
$ cd ..
$ pwd
/home/teresa/carpeta1
Un comando cd sin indicar el directorio nos lleva a la carpeta raÃz del
usuario:
$ cd
$ pwd
/home/teresa/
Los siguientes cuatro comandos son equivalentes, suponiendo que tenemos un usuario llamado "usuario":
cd
cd ~
cd /home/usuario
cd $HOME
Más adelante veremos las variables del sistema. La variable $HOME representa
la carpeta principal del usuario.
No debemos olvidar que Linux es case sensitive. Una carpeta llamada
/Documentos u otra /documentos son distintas, ya que el primer carácter
difiere.
También hay que tener presente que un nombre de carpeta o archivo puede llevar espacios, y eso hará que actúen como separadores para identificar cada argumento del comando. Para evitarlo, podemos delimitar el texto de cada argumento entre comillas o entre apóstrofos, como hemos visto anteriormente:
cd "/mis documentos"
Abrir carpeta en Terminal¶
A veces, navegar por la estructura de carpetas a base de sucesivos comandos
cd para cambiar de directorio, y ls para averiguar los nombres de las
carpetas, puede ser farragoso. Podemos usar el gestor de archivos Nautilus,
para navegar hasta la carpeta deseada, y abrir una ventana de terminal con la
carpeta ya seleccionada.
Para ello, en el fondo de la ventana del gestor de arhivos, pulsar con el botón secundario del ratón para obtener un menú desplegable. Seleccionar Abrir en un terminal:

Permisos de administrador¶
Para ejecutar algunos comandos necesitamos permisos de administrador. En sistemas tipo UNIX, a los usuarios "de a pie" no se les permite realizar operaciones de configuración del sistema, instalación de nuevas aplicaciones, etcétera. Generalmente hay un usuario con permisos especiales denominado "root", o superusuario.
Algunas distribuciones Linux, como es el caso de Ubuntu y derivados, no tienen
habilitada la cuenta de superusuario. En este caso, para realizar tareas
administrativas, de configuración, instalación de software, y cosas asÃ,
debemos escribir todos los comandos precedidos por la palabra sudo
(abreviatura de superuser do). Se nos pedirá la password de nuestro usuario.
Por ejemplo, si escribimos:
$ ls /root
ls: no se puede abrir el directorio '/root': Permiso denegado
es decir, no tenemos permiso para visualizar el contenido de la carpeta del administrador. Pero si escribimos:
$ sudo ls /root
[sudo] contraseña:
se nos pide nuestra contraseña de usuario y seguidamente se ejecuta el comando.
Habilitar cuenta de administrador¶
En sistemas tipo Ubuntu, donde la cuenta de superusuario está deshabilitada,
podemos activarla asignándole una password al usuario "root". Para ello usamos
el comando passwd seguido del nombre de usuario:
$ sudo passwd root
lo que nos pide nuestra propia contraseña para permitirnos hacer el cambio:
[sudo] contraseña para usuario:
Seguidamente nos pide la contraseña para el usuario root
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente
Para conectarnos como superusuario tenemos que introducir el comando su
(abreviatura de superuser):
$ su
Se nos pide la password del usuario root, y seguidamente el prompt cambia, para advertirnos que estamos trabajando en modo administrador:
#
Mientras estemos en esta sesión privilegiada, no hace falta anteponer la palabra
sudo antes de cada comando. No debemos abusar de esta situación, ya que,
aunque nos da más libertad, supone un peligro para el sistema. Podemos salir
de la sesión de superusuario con el comando exit:
# exit
$
Véase que se recupera el prompt $ indicando que estamos trabajando con
permisos normales. Para cerrar la sesión de Terminal, volver a introducir el
comando exit nuevamente. Cada comando exit cierra solo la sesión en curso.
Existe otra forma de abrir una sesión de superusuario sin necesidad de activar la cuenta "root". Se hace con el comando:
$ sudo -i
...lo que mostrará el prompt #. No olvidar finalizar con el comando exit.
Crear y editar archivos de texto¶
Para modificar archivos de configuración y otras labores varias, necesitaremos un editor de textos. Ubuntu proporciona uno gráfico, el de Gnome, pero también podemos usar editores que se ejecuten en la misma ventana del terminal.
Veamos un ejemplo. Comenzamos por situarnos en nuestra carpeta de documentos:
$ cd ~/Documentos
Vamos a crear un archivo de texto y editarlo. Para crear un nuevo archivo vacÃo
en la carpeta actual, usamos el comando touch:
$ touch prueba.txt
El siguiente paso es abrirlo para su edición. El editor clásico en las antiguas
consolas de texto es un programa llamado vi, pero su uso resulta una
experiencia algo farragosa. Hay libros enteros dedicados a ello.
Optemos por algo más sencillo. Un editor de consola bastante popular es nano (véase wikipedia). Lo iniciamos introduciendo su nombre seguido del archivo a editar:
$ nano prueba.txt
Si quisiéramos modificar un archivo protegido, necesitaremos privilegios de administrador:
$ sudo nano prueba.txt
La ventana del terminal se convierte en editor de texto. Por ahora el contenido está en blanco. Podemos teclear texto, aunque aquà no funciona el ratón (en algunos sistemas se puede habilitar). Tenemos que desplazarnos con las teclas de flechas para introducir cambios en el contenido:
GNU nano 8.1 prueba.txt *
^G Ayuda ^O Guardar ^W Buscar ^K Cortar ^T Ejecutar ^C Ubicación
^X Salir ^R Leer fich.^\ Reemplazar^U Pegar ^J Justificar^/ Ir a lÃnea
Hemos introducido un texto:
GNU nano 8.1 prueba.txt *
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam eget tortor
non urna imperdiet vulputate. Nulla nisl lacus, accumsan sed nunc id,
sollicitudin dignissim velit. Suspendisse aliquam lacus vitae enim maximus
fermentum. Phasellus sodales leo in porttitor auctor.
Aenean pretium quam ipsum, id porta erat dignissim tristique.
Suspendisse ultricies feugiat ullamcorper. Phasellus vel sapien diam.
Mauris id mi id augue condimentum ornare non nec massa.
Cras in imperdiet erat. In venenatis lacus a metus fermentum, vel tincidunt
neque tempor. Duis hendrerit ante vitae euismod pretium.
Suspendisse in aliquam nulla.
^G Ayuda ^O Guardar ^W Buscar ^K Cortar ^T Ejecutar ^C Ubicación
^X Salir ^R Leer fich.^\ Reemplazar^U Pegar ^J Justificar^/ Ir a lÃnea
En la fila superior se muestra el nombre del programa y el del fichero en edición. Un asterisco significa que tenemos modificaciones en el texto pendientes de guardar:
GNU nano 8.1 prueba.txt *
En las filas inferiores se muestran las combinaciones de teclas ligadas
a alguna operación:
^G Ayuda ^O Guardar ^W Buscar ^K Cortar ^T Ejecutar ^C Ubicación
^X Salir ^R Leer fich.^\ Reemplazar^U Pegar ^J Justificar^/ Ir a lÃnea
El carácter ^ representa la tecla Ctrl. Para guardar los cambios, pulsar
^O, es decir, Ctrl+O (output). Para salir del editor, se teclea Ctrl+X.
nano tiene muchas opciones que no están a la vista. Por ejemplo:
- pulsando Alt+M se activa el uso del ratón para posicionar el cursor (cuando el Terminal lo permite)
- con Alt+N se visualizan los números de lÃnea en el margen izquierdo
- con Ctrl+G se accede a la ayuda (salir con Ctrl+X)
- con Alt+U se deshace la última operación
- con Alt+X se muestra/oculta las dos lÃneas inferiores de ayuda, ganando espacio para el texto a editar
El manual de nano es algo técnico, pero tiene información interesante.
Operaciones con archivos y carpetas¶
Para crear una carpeta dentro de otra, nos situamos en esta:
$ cd micarpeta
y ejecutamos el comando mkdir (make directory):
$ mkdir nuevacarpeta
Para suprimir una carpeta (remove) usamos el comando rm:
$ rm -r nombrecarpeta
Sin la opción -r (borrado recursivo) solo podrÃamos suprimir carpetas vacÃas.
Con -r se borran también los contenidos.
Para suprimir un archivo:
$ rm miarchivo
Para mover un archivo a otro directorio:
$ mv miarchivo nombredirectorio
Para renombrar un archivo:
$ mv miarchivo nombrenuevo
!Cuidado!
El uso de comandos para borrar carpetas y archivos no los envÃa a la carpeta de reciclaje. El borrado es definitivo. Este tipo de comandos deben teclearse con mucho cuidado.
Un truco interesante es que, si vamos a borrar un grupo de archivos:
$ rm arch*
...previamente comprobar cuales serán los afectados por el comando:
$ ls arch*
y comprobados los archivos, cambiar ls por rm
Buscando archivos¶
Si no sabemos donde se encuentra un archivo, podemos buscarlo con el comando
locate:
$ locate miarchivo
locate es un comando muy potente, que se basa en el mantenimiento en la sombra
de bases de datos para localizar cada archivo. Ubuntu no lo trae de serie, por
lo que tendremos que instalarlo o usar en su lugar otros comandos tales como:
$ which miprograma
$ whereis miarchivo
Sin embargo, estos comandos son más limitados en sus posibilidades, y no valen
para cualquier tipo de archivo. which busca programas, y whereis busca solo
programas y texto en los manuales.
El comando find es el más potente y versátil. Básicamente, la sintaxis es:
$ find / -name miarchivo
El primer argumento / indica el directorio raÃz del sistema como punto de
partida. Podemos limitar la búsqueda a un directorio concreto y sus
subdirectorios:
$ find /home/usuario -name miarchivo
El nombre del archivo a buscar debe ir precedido por la palabra -name.
Por ejemplo, vamos a buscar el archivo de configuración fstab, que indica
la lista de discos del sistema:
$ find / -name fstab
Esto plantea un problema, intentamos acceder a carpetas para las que no tenemos permiso. Obtendremos sucesivos mensajes de error:
$ find: ‘/carpeta’: Permiso denegado
Podemos añadir una opción especial 2>/dev/null para suprimir la visualización
de estos mensajes:
$ find / -name fstab 2>/dev/null
lo que nos da la ubicación del archivo:
/etc/fstab
¿Que significa 2>/dev/null? Literalmente, enviar (el sÃmbolo >) los mensajes
de error (mesajes tipo 2, el texto ordinario serÃa el 1) al dispositivo
(device) nulo (/dev/null).
Si no estamos seguros del nombre, podemos usar asteriscos como comodines:
$ find / -name fstab* 2>/dev/null
/etc/fstab
/usr/sbin/fstab-decode
/usr/share/doc/mount/examples/fstab
/usr/share/doc/m4/examples/fstab.m4
/usr/share/man/man8/fstab-decode.8.gz
/usr/share/man/man5/fstab.5.gz
Esto muestra todos los archivos cuyo nombre comienza por fstab.
Redireccionamiento¶
Si la salida del comando find es muy extensa, podemos beneficiarnos de la
posibilidad que tienen los comandos de crear un archivo de texto en lugar de
mostrar los resultados en pantalla:
$ find / -name fstab* 2>/dev/null > archivo.txt
Esto reenvÃa el texto a un nuevo archivo, archivo.txt, que se creará en el
directorio actual, salvo que especifiquemos otro:
$ find / -name fstab* 2>/dev/null > ~/Documentos/archivo.txt
¡Ojo! Si el archivo ya existe, se sobreescribirá.
El redireccionamiento vale para cualquier comando:
$ ls -alf > lista.txt
Podemos examinar el fichero de texto que hemos creado:
$ nano archivo.txt
o con el comando less:
$ less archivo.txt
El comando less muestra en la pantalla el contenido del fichero indicado como
argumento, sin posibilidad de edición. Permite desplazar el texto usando las
teclas Up y Down. Salimos pulsando la tecla Q (quit).
Un usuario avanzado combinarán ambos comandos sin llegar a crear un archivo de trabajo:
$ find / -name fstab* 2>/dev/null | less
A esto se le llama un pipe. Encadenamos un comando tras otro, intercalando
un sÃmbolo |. La salida del primer comando sirve como entrada del siguiente,
y lo que se ve en pantalla es la salida del último comando.
Variables de entorno¶
Para que cualquier programa (gráfico o de texto) se ejecute desde la lÃnea de
comandos, es necesario que esté ubicado en alguna de las carpetas estándar para
alojar programas. Esta lista de carpetas está reflejada en la variable del
sistema PATH.
Las variables del sistema son etiquetas asociadas a los valores de configuración
del equipo. Podemos ver esos valores con el comando printenv. Por ejemplo:
$ printenv PATH
muestra algo asà como:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Nota: una vez más, linux es case-sensitive. Una variable PATH y otra
path son diferentes.
El valor de esta variable muestra las carpetas donde por defecto se buscarán los programas. Los elementos de la lista se separan entre ellos con dos puntos. En este ejemplo, los programas se buscarán, y por ese orden, en:
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
¡Importante! Véase que solo podemos ejecutar programas ubicados en estas carpetas, a menos que los escribamos precedidos por el nombre de carpeta:
$ ./miPrograma
Aquà estamos ejecutando un programa ubicado en la carpeta actual, representada por un punto "."
Algunas variables interesantes:
-
La variable SHELL indica cual es el programa que se utiliza para imterpretar y ejecutar comandos:
$ printenv SHELL /bin/bash -
La variable HOME indica la carpeta raÃz del usuario
$ printenv HOME /home/Teresa -
La variable USER indica el nombre del usuario
$ printenv USER Teresa
Podemos utilizar las variables en los comandos. Su valor se obtiene anteponiendo
un sÃmbolo $ al nombre de la variable. Antes de la ejecución del comando,
se sustituirá el nombre de la variable por su valor:
$ cd /home/$USER
equivale a:
$ cd /home/Teresa
o bien a:
$ cd $HOME
lo que equivale a:
$ cd ~
ya que el sÃmbolo ~ es un alias de la carpeta de usuario.
Nótese que si no anteponemos el sÃmbolo $ al nombre de la variable:
$ cd HOME
no se sustituirá el nombre de la variable por su valor, y se buscará una carpeta llamada "HOME".
Información del sistema¶
Existe un programa llamado Neofetch, disponible para distintos sistemas operativos, que sirve para mostrar información del sistema. Lo ejecutamos con el comando
$ neofetch
Ubuntu no incluye de serie neofetch. Tendremos que instalarlo con:
$ sudo apt install neofetch
De todas formas, el proyecto fue abandonado en 2024.
Alternativamente, tenemos información del sistema abriendo el programa de Configuración de Ubuntu, apartado Sistema > Acerca de.
Cambiar permisos¶
Recordemos que un archivo o carpeta tiene nueve permisos:
- como usuario propietario: lectura, escritura y ejecución
- como grupo propietario: lectura, escritura y ejecución
- otros usuarios: lectura, escritura y ejecución
Para cambiar los permisos de un archivo o carpeta, se usa el comando chmod
(change mode). El permiso puede ser:
res el permiso de lectura (read)wes el permiso de escritura (write)xes el permiso de ejecución (execute)
Un permiso se puede otorgar añadiendo un sÃmbolo +, y suprimir con -.
Por ejemplo, para especificar un permiso de ejecución a un archivo de texto
con comandos:
chmod u+x miarchivo
Para especificar a quien se otorga el permiso, añadimos:
ual usuario propietario (user)gal grupo propietario (group)oal resto de usuarios (others)aa todos los usuarios (all)
Si no se indica nada, se considera "all":
chmod +x miarchivo
Crear un script¶
Supongamos que actualizamos el sistema operativo periódicamente. Hacemos copia de documentos, borramos el disco duro, reinstalamos el sistema y recuperamos los archivos. Pero hay que reinstalar nuestras aplicaciones favoritas de nuevo.
Pongamos por caso que queremos instalar el programa para visualizar vÃdeos VLC. El comando serÃa:
sudo apt install vlc
Pero, ¿que pasa si tenemos una veintena de programas a instalar? La labor puede ser farragosa.
Existe un mecanismo consistente en poner una secuencia de comandos en un archivo de textos y usarlo como guión de trabajo, algo que se conoce como "script". Lo podemos ejecutar como si fuera un programa.
Vamos a crear un script que haga esta labor. Imaginemos que queremos instalar tres aplicaciones:
- VLC es un programa para visualizar vÃdeos
- Chromium es un navegador web
- Calibre es un lector de libros electrónicos
Comenzamos por asegurarnos de que estamos en la carpeta donde vamos a guardar nuestro script:
$ cd /home/luis/scripts
Creamos un archivo de texto vacÃo:
$ touch instalaciones.sh
El sufijo sh es tÃpico para indicar un script del shell, pero no es
obligatorio. Podemos editar el archivo con el comando:
$ nano instalaciones.sh
El texto del script podrÃa ser algo asi como:
#!/bin/bash
sudo apt install vls
sudo apt install chromium
sudo apt install calibre
La primera lÃnea indica al sistema que se trata de una secuencia de comandos a
resolver por el programa bash, que se encuentra en la carpeta /bin. El resto
son los tres comandos a ejecutar.
Una vez creado el archivo, tenemos que darle permisos de ejecución:
$ chmod +x instalaciones.sh
Ejecutamos el script introduciendo su nombre precedido por el directorio donde se ubica:
$ /home/luis/scripts/instalaciones.sh
O bien, tratándose del directorio actual:
$ ./instalaciones.sh
y con esto se descargarán e instalarán los tres paquetes de software. También
podemos quitar la palabra sudo de los comandos y trasladarla a la orden de
ejecución del script:
$ sudo ./instalaciones.sh
El lenguaje de comandos de bash es un mundo que darÃa lugar a un libro entero.
En este cuaderno solo se pretende hacer una introducción, por lo que lo
dejaremos aquÃ. Más adelante veremos un script para acceder a las carpetas
compartidas con la máquina fÃsica en el caso de estar usando una máquina virtual.