8 errores tipográficos que realmente debe evitar en Linux
Publicado: 2023-01-15La 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.
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
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
El nuevo grupo se ve después de que el usuario inicia y cierra sesión.
grupos
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
La próxima vez que inicien sesión, descubrirán que solo están en un grupo.
grupos
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
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
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.
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
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.
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
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
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 archivo crontab
se abre en un editor. Puede realizar cambios y agregar nuevos comandos.
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
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.
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.
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
Ahora imagina que, sin darte cuenta, agregaste un espacio después de "geocoder/", como este.
Este es el comando incorrecto :
rm -r geocodificador/ 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
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
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
Podemos crear una nueva base de datos llamada “places.sqlite3” con este comando.
sqlite3 lugares.sqlite3 < nombres de lugares.sql
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
Nuestro archivo de esquema ha sido destruido, sobrescrito por el mensaje de bienvenida del shell sqlite3
.
nombres de lugares de gatos.sql
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.
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