8 errores tipográficos que realmente debe evitar en Linux

Publicado: 2023-01-15
Primer plano de una tecla del teclado con la etiqueta "¡Vaya!"
Redpixel.pl/Shutterstock
Vuelva a verificar que haya escrito su comando correctamente antes de presionar "Enter". En Linux, un error tipográfico puede tener repercusiones destructivas. Use la función de completar con tabulación para autocompletar la mayor cantidad posible de entradas de línea de comandos. Los alias para comandos largos y complicados también son una gran idea.

La línea de comandos de Linux ofrece un gran poder. El problema es que el uso correcto de ese poder depende de la precisión de tu escritura. Aquí hay ocho errores tipográficos que nunca querrá cometer.

Tabla de contenido

La línea de comandos de Linux
1. No olvides la -a
2. Uso del identificador de unidad incorrecto con dd
3. Uso del identificador de unidad incorrecto con mkfs
4. No elimine su archivo crontab
5. Repetición de la historia
6. La calamidad de los espacios
7. Usar > en lugar de >>
8. Redirección en la dirección equivocada
Cómo evitar errores tipográficos en la línea de comandos

La línea de comandos de Linux

La línea de comandos de Linux es un portal a un gran poder, pero un error tipográfico es todo lo que se necesita para que ese poder se vuelva contra usted. Todos hemos oído hablar del comando que nunca debes ejecutar. De lo que estamos hablando aquí son los comandos que desea ejecutar, pero donde un desliz puede significar un desastre.

Cuando presiona "Enter", todo lo que ha escrito es procesado por el shell. Los alias y las variables se expanden. Se identifican comandos, opciones y parámetros. Esto se llama análisis. El siguiente paso entrega su entrada analizada a los comandos que llevarán a cabo sus instrucciones.

Si comete un error al escribir sus comandos, podría quedar atrapado como un error de sintaxis. Pero si su error crea otra línea de comando válida, se ejecutará.

Un simple error tipográfico puede ser verdaderamente destructivo. El nivel de destrucción depende del comando y del error. Podrías perder tiempo. Es posible que pierda un archivo. Es posible que pierda un sistema de archivos completo.

RELACIONADO: ¿Qué es Bash Shell y por qué es tan importante para Linux?

1. No olvides la -a

Es posible que deba agregar a alguien a un grupo para permitirle, por ejemplo, usar una pieza de software en particular. Por ejemplo, VirtualBox requiere que los usuarios formen parte del grupo "vboxusers". Podemos hacer eso con usermod .

El comando de groups enumera los grupos de un usuario.

 grupos 

Listado de grupos de un usuario con el comando de grupos

Agregaremos al usuario dave a un nuevo grupo. La opción -a (añadir) agrega el nuevo grupo a la lista de grupos existentes en los que se encuentra el usuario. La opción -G (grupos) identifica el grupo.

 sudo usermod -a -G vboxusers dave 

Agregar un usuario a un nuevo grupo, usando el comando usermod

El nuevo grupo se ve después de que el usuario inicia y cierra sesión.

 grupos 

El grupo vboxusers que se muestra en la lista de grupos en los que se encuentra este usuario

Ahora está en el grupo "vboxusers". Sin embargo, si olvida utilizar la opción -a (añadir), se eliminarán todos los grupos existentes del usuario. El único grupo en el que estarán es el grupo nuevo.

Este es el comando incorrecto :

 sudo usermod -G vboxusers dave 

Agregar un usuario a un grupo sin usar la opción -a agregar

La próxima vez que inicien sesión, descubrirán que solo están en un grupo.

 grupos 

El usuario ahora está en un solo grupo.

Si tienes un único usuario configurado, y le haces esto, tendrás serios problemas. Por un lado, el usuario ya no es miembro del grupo "sudo", por lo que no puede usar sudo para comenzar a corregir cosas.

RELACIONADO: Agregar un usuario a un grupo (o segundo grupo) en Linux

2. Uso del identificador de unidad incorrecto con dd

El comando dd escribe bloques de datos en sistemas de archivos. A menudo se usa para escribir imágenes ISO en dispositivos de memoria USB.

El esquema de nombres de Linux para dispositivos de almacenamiento utiliza una sola letra para la identificación. El primer disco duro se llama “/dev/sda”, el segundo es “/dev/sdb”, el tercero es “/dev/sdc”, y así sucesivamente. Las particiones se identifican por número. La primera partición en el primer disco duro es “/dev/sda1”, la segunda es “/dev/sda2”, y así sucesivamente.

Si graba una imagen en una memoria USB, necesita conocer el identificador de unidad de la memoria USB. Lo encontraremos canalizando lsblk a través de grep , buscando entradas con "sd" en ellas.

 lsblk | grep sd 

Usando grep para buscar líneas con "sd" en ellas, en la salida del comando lsblk

Podemos ver que el disco duro “/dev/sda” es un disco de 32 GB con tres particiones. Una de las particiones es la partición “/boot”, y la partición “/dev/sda3” está montada en “/”, que es la raíz del sistema de archivos.

El disco duro “/dev/sdb” se informa como una unidad de 7,5 GB. Está montado en "/media/dave/Pink". Claramente, la unidad "/dev/sda" es el disco duro principal de esta computadora y "/dev/sdb" es la memoria USB.

El comando para escribir un archivo ISO que se encuentra en el directorio "~/Descargas" en nuestra memoria USB es:

 sudo dd bs=4M if=Descargas/distro-image.iso of=/dev/sdb conv=fdatasync status=progreso 

Escribir una imagen en una memoria USB con el comando dd

Se nos solicita nuestra contraseña, luego dd se sumerge en acción. No hay "¿Estás seguro?" advertencias o posibilidades de retroceder. La escritura comienza inmediatamente.

La pantalla de progreso dd mientras escribe una imagen en una memoria USB

Sin embargo, si escribe una letra incorrecta para el identificador de la unidad y coincide con un disco duro existente, sobrescribirá esa unidad en lugar de la tarjeta de memoria.

Este es el comando incorrecto :

 sudo dd bs=4M if=Descargas/distro-image.iso of=/dev/sda conv=fdatasync status=progreso 

Escribir por error una imagen en el disco duro principal termina con un mensaje de error

Le dijimos a dd que usara "/dev/sd a ", y así lo hizo. La acción de escritura es mucho más rápida, pero termina con una advertencia. Acabas de destrozar tu instalación de Linux.

Verifique y vuelva a verificar los identificadores de unidades antes de presionar "Enter".

RELACIONADO: Cómo grabar un archivo ISO en una unidad USB en Linux

3. Uso del identificador de unidad incorrecto con mkfs

Hay otros comandos que toman identificadores de unidades como parte de su línea de comandos, como las herramientas mkfs . Estas unidades de formato crean sistemas de archivos en particiones.

En esta computadora tenemos una unidad de 25 GB y una unidad de 10 GB.

La salida de lsblk canalizada a través de grep, mostrando los discos duros en una computadora

Si queremos crear un sistema de archivos Ext4 en la primera partición del disco de 10 GB, usaríamos estos comandos.

 sudo umount /dev/sdb1
 sudo mkfs.ext4 /dev/sdb1 

Creación de un sistema de archivos ext4 en una memoria USB

Pero si cometemos el error de utilizar una "a" en lugar de una "b" en el identificador de la unidad, eliminaremos una de las particiones de la unidad de 25 GB y la computadora no podrá arrancar.

Este es el comando incorrecto :

 sudo umount /dev/sda1
 sudo mkfs.ext4 /dev/sda1 

Formatear por error el disco principal de una computadora

Esa pequeña letra tiene un gran impacto, así que asegúrese de estar presionando el disco correcto.

RELACIONADO: Cómo usar el comando mkfs en Linux

4. No elimine su archivo crontab

El demonio cron ejecuta tareas en momentos predeterminados para usted. Toma su configuración de un archivo crontab . Cada usuario, incluido el root, puede tener un archivo crontab . Para editar su crontab , use este comando:

 crontab -e 

El comando para editar su archivo crontab: crontab -e

El archivo crontab se abre en un editor. Puede realizar cambios y agregar nuevos comandos.

Un archivo crontab abierto en un editor

Pero si escribe mal el comando y presiona "r" en lugar de "e", eliminará, como en eliminar , su archivo crontab .

Este es el comando incorrecto :

 crontab -r 

El comando que elimina su archivo crontab: crontab -r

La próxima vez que use el comando crontab -e , verá un archivo vacío predeterminado.

Este es un error fácil de cometer, porque "e" y "r" están uno al lado del otro en la mayoría de los teclados. Reconstruir un archivo crontab complicado no es divertido.

RELACIONADO: ¿Qué es un trabajo de Cron y cómo se usa?

5. Repetición de la historia

Usar el comando de history es excelente cuando intenta reducir las pulsaciones de teclas y ahorrar tiempo. Si puede sacar un comando extenso de la historia, gana velocidad y precisión. Siempre que seleccione el comando correcto de su historial.

El comando de history enumera sus comandos anteriores en la ventana del terminal. Están numerados. Para reutilizar un comando, preceda su número con un signo de exclamación “ ! “, y presiona la tecla “Enter”.

 historia 

Supongamos que hemos clonado un repositorio de Git, nos hemos metido en un lío con él y lo hemos eliminado. Necesitamos clonarlo una vez más. Al desplazarnos por la ventana de la terminal, pronto podemos detectar el comando git clone . Podemos volver a ejecutarlo escribiendo:

 !60

Pero si solo miramos la pantalla y leímos mal el número, es posible que elijamos el siguiente número por error:

 !61

Eso ejecuta el siguiente comando en la lista, rm * . Eso elimina todos los archivos en su directorio actual.

También puede utilizar el botón “ ! ” signo de exclamación con una cadena de texto. El primer comando coincidente se ejecuta automáticamente. No se muestra para que compruebes que es el que estabas pensando, se ejecuta inmediatamente.

Imagine el escenario en el que tiene un script llamado "restart.sh". Este script tiene por defecto un conjunto de archivos de configuración para algún software que estés escribiendo. Periódicamente, a medida que desarrolla y prueba, necesita hacer borrón y cuenta nueva, por lo que llama a su script.

Este comando debería ser suficiente para encontrar y hacer coincidir el comando en su historial y ejecutarlo.

 !re

Pero si usó el comando de reboot desde la última vez que usó su script, es el comando de reboot el que se encuentra y se ejecuta inmediatamente.

El comando rm * se está ejecutando por error

En la computadora de su hogar de un solo usuario, probablemente solo sea una molestia. En un servidor compartido, también es una molestia para muchas otras personas.

RELACIONADO: Cómo usar el comando history en Linux

6. La calamidad de los espacios

Los espacios en los nombres de archivo y las rutas de directorio pueden causar estragos. Es por eso que siempre deben estar escapados o citados.

Cómo lidiar con los espacios en los nombres de archivo en Linux
RELACIONADO Cómo lidiar con los espacios en los nombres de archivo en Linux

Los problemas con los espacios se pueden evitar utilizando la función de completar con tabulación. Presione la tecla "Tab" cuando esté escribiendo un nombre de archivo o una ruta de directorio y el shell completará automáticamente la ruta o el nombre de archivo que pueda. Es posible que deba escribir una letra para diferenciar entre el archivo que desea y cualquier otro archivo que comparta parte del mismo nombre, pero otra vez que presione la tecla "Tab" completará el resto del nombre del archivo por usted.

Esto ahorra pulsaciones de teclas, evita que los espacios se filtren debido a errores tipográficos y evita correctamente los espacios legítimos para que no causen problemas.

Digamos que tenemos un directorio de "Desarrollo" que contiene otros dos directorios, "geocodificador" y "bin". También hay un directorio "bin" dentro del directorio "geocoder".

Para eliminar los archivos en el directorio "geocoder/bin" y eliminar el directorio, usaría este comando.

 rm -r geocodificador/bin 

Eliminación del directorio geocoder/bin

Ahora imagina que, sin darte cuenta, agregaste un espacio después de "geocoder/", como este.

Este es el comando incorrecto :

 rm -r geocodificador/ bin 

Eliminar por error los directorios geocoder y bin

Auge. El directorio "Desarrollo" ahora está vacío. Los directorios "Desarrollo/geocodificador", "Desarrollo/geocodificador/bin" y "Desarrollo/bin" se han eliminado por completo.

Recuerde, la finalización de pestañas es su amigo.

RELACIONADO: Use la finalización de tabulación para escribir comandos más rápido en cualquier sistema operativo

7. Usar > en lugar de >>

La redirección envía la salida de un proceso a un archivo. Usamos el signo mayor que “ > ” para capturar la salida de un proceso. Si el archivo existe, se vacía primero.

Digamos que estamos investigando una pérdida de memoria. Tenemos un script llamado "memlog.sh". Muestra estadísticas de memoria una vez por segundo. Vamos a redirigir eso a un archivo llamado "memory.txt", para un análisis posterior.

 memlog.sh > memoria.txt
 cabeza memoria.txt 

Capturar y mostrar la salida del script memlog.sh

Al día siguiente, queremos continuar con nuestra investigación y reiniciamos el guión. Esta vez necesitamos usar dos signos mayores que “ >> ” para que los nuevos datos se agreguen al archivo.

 memlog.sh >> memoria.txt 

Agregar nuevos datos al final de un archivo existente

Si usamos un solo signo mayor que “>”, perderemos los datos de ayer porque el archivo se vacía primero.

RELACIONADO: ¿Qué son stdin, stdout y stderr en Linux?

8. Redirección en la dirección equivocada

La redirección puede usar el contenido de un archivo como entrada a un programa.

Tenemos un archivo llamado "placenames.sql" que queremos importar a sqlite3 . El archivo de esquema describe cómo volver a crear las tablas de la base de datos. También contiene los datos que queremos almacenar en la base de datos. Con 1,3 GB y más de 11 millones de líneas, es un archivo grande.

 ls -hl nombres de lugares.sql
 wc nombres de lugares.sql 

Comprobando el tamaño de un archivo con ls y wc

Podemos crear una nueva base de datos llamada “places.sqlite3” con este comando.

 sqlite3 lugares.sqlite3 < nombres de lugares.sql 

Importación de un esquema de un archivo en sqlite3

La mayoría de las veces, cuando estamos redirigiendo, usamos el carácter ">". Debe concentrarse para evitar escribir “>” por costumbre. Si lo hace, cualquier resultado que genere sqlite3 se escribirá en su archivo de esquema y lo borrará.

Este es el comando incorrecto :

 sqlite3 lugares.sqlite3 > nombres de lugares.sql 

Redirigir por error a un archivo de esquema desde sqlite3

Nuestro archivo de esquema ha sido destruido, sobrescrito por el mensaje de bienvenida del shell sqlite3 .

 nombres de lugares de gatos.sql 

El archivo de esquema sobrescrito que contiene el mensaje de bienvenida de sqlite3

Adiós, 1,3 GB de datos.

Cómo evitar errores tipográficos en la línea de comandos

Hay buenos hábitos que puede adoptar para ayudar a evitar cometer este tipo de errores.

Utilice la función de completar con tabulación siempre que sea posible. Evitará problemas con espacios en rutas de directorio y nombres de archivo.

Cree sus propios alias breves y fáciles de recordar para los comandos largos y complicados que necesita usar ocasionalmente. De esa manera, no se equivocará al usar opciones y parámetros incorrectos.

Cómo escribir menos y trabajar más rápido en la terminal de Linux
RELACIONADO Cómo escribir menos y trabajar más rápido en la terminal de Linux

Es notoriamente difícil revisar su propia escritura, pero eso es lo que debe hacer en la línea de comando. Lee lo que realmente hay. No lo mires y pienses que dice lo que quisiste escribir. ¿Qué dice realmente? Porque eso es lo que realmente va a hacer.

RELACIONADO: 8 comandos mortales que nunca debe ejecutar en Linux