El shell Bash: qué es, para qué sirve, comandos, ejemplos...
Un shell es un intérprete de comandos. Es decir, un programa que se encarga de traducir los comandos que introduce el usuario a instrucciones para acceder a los servicios del sistema operativo. Este tutorial trata únicamente del shell Bash: el intérprete de órdenes por defecto en las distribuciones GNU/Linux.
¿Qué es un shell?
El Shell es un programa que se encuentra en el directorio /bin. Este permite ejecutar comandos, explorar el árbol de directorios del sistema, crear, editar y eliminar archivos, etc. Hay varios tipos de Shell:
- /bin/sh shell Bourne - /bin/bash shell Bourne Again SHell - /bin/csh C shell - /bin/ksh Korn shell - /bin/tcsh C shell mejorado - /bin/zsh/ Z shell
¿Cómo acceder a la línea de comandos?
Para acceder a la línea de comandos, podrás hacerlo a través de un terminal (xterm, kterm, gterm...). Kterm es un terminal emulador multi-lengua basado en xterm. Las principales diferencias entre kterm y xterm son:
- La posibilidad de procesar texto multi-lengua codificado en ISO2022.
- Mostrar el texto coloreado (ver man kterm).
Para esto, tenemos dos posibilidades:
- Utilizar el menú del escritorio (Gnome, Kde, etc.). Este es el método recomendado.
- Utilizar el menú ejecutar una aplicación. En la ventana abierta, escribe el nombre del terminal y valida. La ventana ejecutar una aplicación puede ser abierta con Alt + F2.
- Utilizar las consolas virtuales (hay 6).
¿Qué son las consolas virtuales?
La consola virtual (tty, tty6) es una pantalla negra donde se puede visualizar un prompt. Desde la interfaz gráfica, es posible conectarse a una consola virtual utilizando la combinación de teclas Ctrl + Alt + FN, donde N es un número del 1 al 6.
- Ejemplo: para acceder a la consola 3 desde la interfaz gráfica pulsamos CTRL + ALT + F3. La navegación entre distintas consolas se hace con la combinación de teclas Alt + FN, donde N es un número del 1 al 6.
- Cómo regresar al modo gráfico desde una consola virtual: para regresar al modo gráfico desde una consola virtual, utilice la combinación de teclas ALT + F7.
¿Cómo hacer el login en la consola virtual?
- Cuando se pida el login ingresa el nombre de usuario, luego presiona Enter para validar. A continuación, introduce la contraseña.
- La contraseña no se muestra en la pantalla por razones de seguridad. No debes preocuparte por ello.
- Si la contraseña es válida, aparecerá el prompt, indicando que la conexión ha sido satisfactoria.
¿Cómo funciona el prompt?
- El prompt del shell tiene por lo general la siguiente forma: nom@maquina ~ $.
- nom – representa el nombre del usuario conectado.
- maquina – representa el nombre del equipo.
- ~ es un acceso directo (atajo) que significa el directorio personal: /home/usuario.
- $ significa que está conectado como usuario.
Si en lugar de $ aparece el signo #, entonces quiere decir que está conectado como superusuario o root. Recuerda que los sistemas GNU/Linux utilizan por convención # para root y $ para un usuario que no sea root. Se puede cambiar esto modificando la variable de entorno PS1, ¡pero no se aconseja!
¿Qué es el entorno shell y cuáles son las variables más importantes del entorno?
Después de conectarse, el usuario es conectado a su entorno. Esto significa que el shell pone a su disposición variables de entorno, es decir: un contenedor de memoria en el que son almacenados los datos. Para mostrar el contenido de una variable de entorno se puede emplear el comando echo $NOM_VARIABLE. El nombre de las variables de entorno es por convención en mayúsculas, por lo tanto, es necesario respetar esto.
- HOME contiene el directorio del usuario.
- USER contiene el login del usuario.
- PWD contiene el directorio actual.
- SHELL contiene el nombre del Shell de conexión.
- PATH contiene la lista de directorios donde se encuentran los comandos que el usuario puede ejecutar.
- HOSTNAME contiene el nombre del equipo.
- HOSTSIZE contiene el tamaño máximo de los comandos ejecutados contenidos en el archivo histórico.
- PS1 contiene la configuración para la visualización del prompt.
- El comando set permite mostrar las variables y su contenido.
¿Qué son los archivos de configuración?
Durante la conexión en una consola virtual o cuando se abre un terminal en modo gráfico, el shell utiliza información que se encuentra en determinados archivos (.bashrc, .bash_profile, etc). Editando estos archivos puede ser modificado el comportamiento del shell. Por ejemplo el archivo .bashrc se emplea en el capítulo sobre los alias.
¿Por qué utilizar la línea de comandos y para qué sirven los comandos?
Una gran cantidad de soluciones están dadas en línea de comandos. No es que GNU/Linux no tenga una interfaz gráfica, pero en ciertas tareas, el uso de la línea de comando es muchos más práctico y potente que el famoso ratón. Para saber más sobre cómo ejecutar un script desde la consola en Linux, consulta nuestra guía.
Un comando es un archivo ejecutable. La ejecución de un comando puede ser diferente dependiendo del caso. Los utilizados en este capítulo son a modo de ejemplo, por lo que no te atasques si te surge algún problema con alguno de ellos. Los comandos básicos serán detallados posteriormente.
-
Ejemplo: El comando ls
El comando ls muestra el contenido de un directorio. Ver man ls para mayores detalles.
- Sin argumento y sin opciones
- Sin argumentos con una o varias opciones
- Con argumento
- Con argumento y con una o varias opciones
¿Dónde se encuentran los comandos?
Los comandos que puedes ejecutar desde tu terminal se encuentran en ciertos directorios del sistema. La variable PATH (en español: “ruta”) contiene una lista de directorios, los cuales contienen los comandos a los que puedes acceder. Para poder acceder a todos ellos es necesario ser root. Para encontrar la ubicación de un comando, utilizamos whereis (en español “dónde está”):
- O también which:
- Diferencia entre whereis y which
- whereis – busca los archivos ejecutables, las fuentes y el manual de un comando.
- which – busca los archivos ejecutables en la variable PATH.
- Ejemplo: búsqueda del comando iptables con which
- El usuario yogi desea saber si el comando iptables existe en el sistema. El resultado es NO:
- Verificamos en calidad de usuario root:
En realidad, el comando iptables existe en el sistema en /sbin. El directorio /sbin no se encuentra en el PATH del usuario yogi, por lo que es normal que which no dé un resultado. En resumen: whereis es más confiable.
¿Cómo acceder a la documentación ("man")?
Para acceder a la documentación en línea de comandos escribimos: man comando o man N comando, siendo N el número de la página man (lo verás en la parte superior izquierda). Por regla general en la parte SEE ALSO de una página “man”, encontrarás la lista de comandos que se recomienda consultar y que tienen relación directa con el comando que lee en el manual.
-
Ejemplos
- Ejecución del comando man crontab
- El prompt desaparecerá y se mostrará la página man
Mira la parte SEE ALSO e identificarás las páginas que se recomienda consultar. Esto significa que podemos ingresar: man 5 crontab man 8 cron. Pulsaremos la tecla “q” para salir de la página man y regresar al prompt. Para obtener la descripción resumida de un comando, utilizaremos la opción "-f" man -f comando whatis comando. Para conocer las secciones que contienen en su presentación una palabra clave, la opción "-k": man -k comando.
- Estructura de una página man
COMMAND(1) Manual del usuario Linux COMMAND(1) NAME comando – resumen de la acción del comando SYNOPSYS <sintaxis completa del comando> DESCRIPTION Explicaciones concernientes a la ejecución del comando OPTIONS Lista de opciones disponibles y lo que hacen FILES Los archivos utilizados por el comando SEE ALSO comando_primo(1), comando_hermano(5), etc. BUGS los bugs que existen en el comando AUTHOR El nombre del autor
- Algunas reglas para comprender SYNOPSYS y/o OPTIONS
El texto, sin[](corchetes),{}llaves), <>(menor mayor),debe ser escrito tal como aparece
- el texto entre corchetes [] es facultativo
- el texto entre llaves {} contiene las opciones a realizar.
Las opciones son separadas por | o por una coma,
Comando -{a|b} quiere decir comando –a o comando –b pero no comando –ab
- el texto entre <> debe ser reemplazado por el texto apropiado
- los paréntesis (...), utilizados para los parámetros como por ejemplo los nombres
de archivos
- los corchetes []y los <> pueden ser combinados [<nombre_archivo>] – facultativo
pero si lo utiliza debe escribir el nombre del archivo
- los corchetes []y las llaves {} pueden ser combinadas [--opción={a|b|c}]
¿Cuáles son los comandos básicos de shell Bash?
cat - Lee (concatena)uno o varios archivos, visualización en la salida estándar cd - ChangeDirectory, cambia el directorio chmod - CHangeMODe – cambia el modo de acceso (permiso de acceso) de uno o varios archivos chown - CHangeOWNer – cambia el propietario de uno o varios archivos cp - copiar archivos crontab – planificación de tareas cut - Retira partes precisas de texto en cada línea de un archivo date - Muestra la fecha de acuerdo al formato solicitado dd - DevicetoDevice - Vuelve a copiar octeto por octeto todo o una parte del contenido de un periférico (mayormente de almacenamiento)a otro periférico. df - Visualización de la cantidad de espacio libre disponible en todos los sistemas de archivos du - DiksUsage – uso del disco echo - Muestra texto en la salida estándar (en la pantalla) exit - detiene la ejecución del shell find - busca archivos fsck - FileSystemChecK – verifica la integralidad del sistema de archivos grep - busca en uno o varios archivos las líneas que corresponden a un motivo groupadd- Agrega un grupo de usuarios gunzip - descomprime archivos gzip - comprime archivos head - muestra las primeras líneas (por defecto 10) de un archivo help - muestra la ayuda sobre los comandos internos bash kill - envía una señal a un proceso less - programa de visualización en pantalla ln - creación de enlaces ls - lista el contenido de los directorios man - muestra las páginas del manual mkdir - MaKeDIRectory – crea un directorio mkfs - MaKeFileSystem – creación de sistemas de archivos more - programa de visualización en pantalla mount - montar un sistema de archivos mv - desplazar, renombrar un archivo ps - muestra los procesos que se están ejecutando pwd - Print name of current/working directory – muestra la ruta complete del directorio activo rm - eliminación de archivos rmdir -Remove empty directories – eliminación de una carpeta vacía tail - muestra las 10 primeras líneas de un archivo tar - creación de archivos su - Substitute User identity ou Switch User – toma la identidad de un usuario uname - Muestra información sobre el sistema. useradd – agregar un usuario whereis – localizar un comando
¿Cómo ejecutar un comando en shell Bash?
Hay varias maneras de ejecutar un comando:
- Utilizando simplemente su nombre.
- Utilizando la ruta absoluta.
- Utilizando la ruta relativa.
- Utilizando el alias (práctico para los comandos que se usan frecuentemente y que son largos).
Un comando puede ser ejecutado en segundo plano, para ello debes utilizar ampersand (&) después del nombre del comando.
- Ejemplo: Ejecución de firefox desde la línea de comandos
Cambiar de usuario en shell Bash
Desde el shell tienes la posibilidad de tomar la identidad de otro usuario existente en el sistema, incluido el usuario “root”. Para esto tienes a tu disposición el comando su. Para más información, visita: Cómo usar el comando "su" en Linux.
¿Qué es la raíz en shell Bash?
En los sistemas de la familia Unix, la raíz representa la cumbre del árbol de directorios. Esta es representada por el carácter / (slash) y significa “root” (raíz en español). Todos los directorios del sistema están ligados a la raíz de manera directa o indirecta.
¿Qué son los directorios "." y ".."?
- . Indica el directorio actual
- .. indica el directorio padre
¿Cómo saber la posición en el árbol de directorios?
Algo muy importante que debemos saber cuando estamos conectados a un shell, es saber dónde nos encontramos en el árbol de directorios. El comando pwd (PrintWorkingDirectory) mostrará tu ubicación en el árbol de directorios.
¿Qué es la ruta absoluta y relativa en shell Bash?
La ruta absoluta representa el árbol de directorios completo de los archivos, comenzando por la raíz. Cualquiera sea su ubicación en el árbol de directorios el uso de la ruta absoluta es el medio más seguro para acceder al archivo que se desea.
- Ejemplo
El archivo b.txt se encuentra en /home/user/doc/text. Supongamos que te encuentras situado en /home/user/ascii, la ruta absoluta hacia b.txt es /home/user/doc/text/b.txt.
La ruta relativa para acceder a un archivo es el árbol de directorios relacionado a su ubicación en el shell. Utilizamos las notaciones "." y/o "..". El primero nos permite descender en el árbol de directorios del directorio actual. El segundo nos permite en un inicio subir en el árbol de directorios con el fin de alcanzar otros directorios.
- Ejemplo: el directorio actual "."
El archivo b.txt se encuentra en /home/user/doc/text Nos encontramos en /home/user y el camino relativo hacia b.txt es ./doc/text/b.txt,
- Ejemplo: el directorio padre ".."
El archivo b.txt se encuentra en /home/user/doc/text. Nos encontramos en /home/user/ascii y el camino relativo hacia b.txt es ../doc/text/b.txt.
El directorio ascii se encuentra en /home/yogi por lo tanto escribiendo ".." voy a utilizar el directorio padre /home/yogi como punto de inicio y luego voy a doc/text (observa que no he escrito /doc/text – que habría ligado doc de la raíz /).
Desplazarse en el árbol de directorios
Para desplazarse en el árbol de directorios utilizamos el comando cd: cd / ruta / hacia / directorio. Con pwd puedes verificar tu nueva ubicación en la raíz:
¿Cómo acceder al historial de comandos?
Los comandos ejecutados son guardados en un historial. La variable HISTSIZE contiene el número máximo de comandos que puede guardar. Puedes acceder al historial con el comando history:
history [n] | less
- n - la opción permite mostrar los n últimos comandos (facultativo).
- less – el comando “less” permite navegar en el historial:
- Las flechas arriba abajo te permiten navegar en el historial.
- ln – permite ejecutar el comando correspondiente al número “n” en la lista sin tener que volver a escribirlo.
¿Cómo funciona el autocompletado de comandos?
Escribir un comando en un terminal no siempre es fácil. A pesar de esto, no hay de qué preocuparse. El shell permite el autocompletado de comandos.
- Ejemplo: comando tail utilizando la ruta absoluta
Vamos a suponer que queremos escribir: /usr/bin/tail. El autocompletado nos permite ahorra tiempo en cuanto a la escritura del comando y a la vez nos da seguridad en cuanto a la sintaxis. Para hacer el autocompletado utilizamos la tecla TAB. Para eso comenzamos con el primer carácter:
- Escribimos /u y presionamos TAB.
- El Shell completará y escribirá /usr/.
- En ese momento agregamos una b entonces estamos con /usr/b.
- Presionamos de nuevo TAB y tendremos /usr/bin/.
- En ese momento agregamos ta, entonces tendremos /usr/bin/ta.
- Presionamos 2 veces en TAB.
- El Shell en el sistema encuentra 4 correspondencias: tac tack tail tasksel.
- Continuamos y agregamos una i.
- Entonces tendremos: /usr/bin/tai.
- Presionamos de nuevo TAB.
- Y obtenemos /usr/bin/tail.
¿Cómo editar archivos con vi o vim?
El editor vi es muy útil sobre todo cuando tenemos un problema con el modo gráfico.
-
Etapa I – MUY RECOMENDADO
Haz una copia de respaldo del archivo original, para esto utilizamos el comando cp (copia) seguido del archivo fuente y, a continuación, el archivo destino (aquí inexistente), añadimos “.original” al final del nombre del archivo para distinguir la copia de respaldo de nuestro archivo:
- Etapa II – Abrir el archivo
-
Etapa III – Edición del archivo
- Presiona la tecla "i" para pasar al modo inserción. En la esquina inferior izquierda verás –INSERCION—.
- Utiliza las flechas (derecha, izquierda, arriba, abajo) o Av Pág y Re Pág para desplazarte en el archivo.
- La inserción de caracteres se hace encima del cursor con un desplazamiento a la derecha —la tecla Supr permite eliminar el carácter que se encuentra encima del cursor—.
- Etapa IV – Terminar la edición del archivo: presiona la tecla Esc en cuanto haya terminado la edición. --INSERCION—desaparecerá.
-
Etapa V – Guardar las modificaciones y salir de vi
- Escribe wq (para WriteQuit) y presiona “Enter”.
- Regresa al terminal.
¿Para qué sirven los alias, las redirecciones y los pipelines?
Alias
El uso del alias es muy práctico para los comandos largos que se utilizan regularmente. Esto evita volverlos a escribir. El uso excesivo de los alias puede hacer que olvide los comandos y sus opciones. Los alias los escribimos en el archivo .bashrc de la siguiente manera: alias nom= ‘comando’. Una vez editado el archivo /home/user/.bashrc, escribe:
source /home/user/.bashrc
- El comando alias muestra los alias existentes.
Redirecciones
En primer lugar, vamos a comenzar con una pequeña explicación con respecto a los descriptores de las “entradas-salidas”:
- Todo lo que se escribe en el Shell es llamado STDIN (STandarDINput).
- Todo lo que ve en la pantalla puede ser:
- STDOUT (STandarDOUTput)
- STDERR (STandarDERRor)
Estos descriptores son numerados como sigue:
0: entradas estándar (STDIN) <---------------- teclado Proceso 1: salida estándar (STDOUT) ---------------> pantalla 2: salida errores (STDERR) ----------------> pantalla
¿Qué es una redirección? Es la posibilidad de dirigir el resultado de un comando utilizando otros destinos y no sólo los descriptores estándar. Para realizar una redirección utilizamos:
- comando > archivo – redirección en modo escritura hacia el archivo el archivo es creado si no existe su contenido será reemplazado por el nuevo si el archivo ya existe.
- comando >> archivo – redirección en modo adición hacia el archivo el archivo es creado si no existe el resultado será añadido al final del archivo.
- comando < archivo – el comando lee desde el archivo.
- Ejemplos de redirecciones
- Envía el contenido del archivo1 al archivo2. Si el archivo2 existe, su contenido original será eliminado, el archivo2 es creado si no existe:
- Envía el contenido del archivo1 al archivo2. Si el archivo2 existe, el contenido del archivo1 es añadido al final del archivo2, si el archivo2 no existe, será creado:
- Busca en la raíz el archivo denominado archivo.txt, los errores en lugar de ser enviados a STDERR (en la pantalla) son enviados a /dev/null:
- Busca en la raíz el archivo denominado archivo.txt, los errores en lugar de ser enviados a STDERR (en la pantalla) son enviados a los archivos error.txt:
Los pipelines
comando1 | comando2 - el resultado del comando es utilizado por el comando2 comando1 & comando2 - los comando son ejecutados simultáneamente, comando1 ejecutándose en segundo plano comando1 && comando2 - si el comando1 funciona el comando2 es ejecutado comando1 || comando2 - el comando2 se ejecuta solamente si elcomando1 fallo comando1; comando2 - los comandos son ejecutados en el orden
- Ejemplo de pipelines
Para comenzar, ejecutamos: perl -ne 'print unless /^\s*$/' guideshell con el fin de mostrar el archivo en la pantalla, las líneas vacías son eliminadas. En lugar de mostrar en pantalla utilizamos | para pasar el resultado al comando wc que completará el número de líneas de este archivo.
- El paralelismo &
Los dos comandos se ejecutan simultáneamente.
- La dependencia &&
Observarás que en el primer caso los dos comandos se ejecutan. En cambio, en el segundo caso, he cometido voluntariamente un error de sintaxis para el primer comando. El shell no tiene en cuenta ni siquiera el segundo comando y se detiene diciéndonos que ech no es un comando conocido.
- La alternativa ||
En el primer caso observará que solamente el primer comando se ejecuta. En el segundo caso el shell muestra un error para el primer comando, sin embargo ejecuta el segundo.
- La secuencia;
echo a se ejecuta, esperamos 1 segundo, echo b se ejecuta, esperamos 2 segundos, echo c se ejecuta.
¿Qué son los meta-caracteres del shell Bash?
- Para facilitar el ingreso de comandos el Shell pone a tu disposición meta-caracteres, llamados también caracteres genéricos o jockers:
* - corresponde a cualquier carácter y número de carácter ? - corresponde a un sólo carácter [...] – corresponde a un carácter que se encuentra entre corchetes
- Con los corchetes se pueden también utilizar intervalos:
[0-9] - cualquier carácter comprendido entre 0 y 9 [a-zA-Z] – cualquier letra comprendida en el intervalo (minúscula y mayúscula)
¿Qué trucos y tips existen para shell Bash?
cd : regresar al directorio personal
cd - : regresar al directorio precedente (únicamente si ha ejecutado un cd)
Ctrl+l: limpiar la pantalla
Ctrl+c: detener un comando
Ctrl+z: suspender (hacer una pausa) un comando
CTRL+t: corregir un error de entrada, intercambiando dos letras contiguas
Ctrl+a: ir al inicio de la línea
Ctrl+e: ir al fin de la línea
Ctrl+s: interrupción de la salida del terminal (ocultar el ingreso de datos)
Ctrl+q: anular la interrupción de la salida (mostrar el ingreso de datos)
Ctrl+u: borra todo lo que está a la izquierda del cursor
Ctrl+w: borra la palabra a la izquierda del cursor
Ctrl+k: borra la palabra a la derecha del cursor
Ctrl+y: pegar lo ingresado precedentemente
Ctrl+d: borra el carácter actual, si la línea está vacía desconexión
Alt+b: desplazarse hacia adelante, palabra por palabra en la línea de comando
Alt+f: desplazarse hacia atrás, palabra por palabra en la línea de comando
Alt+d: borra la siguiente palabra
Alt+t: intercambia la palabra actual por la palabra precedente
Alt+c: pone en mayúscula la letra actual, todo el resto de la palabra actual en minúsculas,
luego se desplaza a la siguiente palabra
Alt+l: pone en mayúscula a partir de la letra actual hasta el final de la palabra, luego
se desplaza a la siguiente palabra
Alt+u: pone en minúscula a partir de la letra actual hasta el final de la palabra, luego
se desplaza a la siguiente palabra
Alt+Backspace: borra la palabra precedente (equivalente a Ctrl+w)
¿Qué es el Midnight Commander (alias mc)?
Este utilitario te permite navegar, crear, editar, eliminar archivos, etc. Con mc puedes modificar los privilegios, cambiar de propietario, buscar, conectarse a un servidor ftp, etc. Mc puede ser utilizado como explorador.
¿Cómo solucionar los errores del shell Bash?
- Error: "command not found"
Visita: Para qué sirve la variable de entorno PATH en Bash (Linux). Otra causa de este error: no respetó las mayúsculas/minúsculas de los caracteres.
Ejemplo: Ls en lugar de ls
- Error: Ningún archivo o directorio de este tipo
Error mostrado por el shell cuando intenta ejecutar un comando en un archivo que no existe en la ruta precisada. En este caso, busca el archivo con el comando find para ver si existe en el disco y conocer su ruta verdadera.
-
Error: Permiso denegado
Este es un problema de privilegios de acceso.
¿Cómo redactar correctamente en shell Bash?
El shell es muy exigente en lo que respeta a la redacción de los comandos. Los caracteres reservados para el shell deben ser evitados para obtener el carácter literal. Los caracteres reservados para el shell Bash son:
- El espacio
- El punto y coma ;
- El slash /
- El anti slash \
- El carácter | (pipe)
- El ampersand &
- El punto .
- Los apostrofes simples ( ‘ ) y dobles ( “ )
En general hay que tener cuidado con los caracteres alfanuméricos.
- Sensibilidad a las mayúsculas y minúsculas: si el comando se denomina ls entonces con seguridad Ls no funcionará. Lo mismo con el nombre de archivos y/o directorios.
- El espacio: tomemos el ejemplo de un archivo que se llama: mi archivo.txt, si escribes ls -l mi archivo.txt para ver los atributos de este archivo, entonces presta atención ya que no obtendrá el resultado deseado. ¿Por qué? porque el Shell leerá: Mostrar los atributos de los archivos “mi” y “archivo,txt”. Para pedir al Shell que muestre lo que uno desea, debemos utilizar lo que pone a nuestra disposición: a) ls -l mi\ archivo.txt – sintaxis ok (el anti slash permite leer el espacio como un carácter y no como un separador de argumentos del comando) b) ls -l 'mi archivo.txt' – sintaxis ok (los apostrofes simples tratan cada carácter de manera literal).
- PREGUNTA: ¿Cómo puedo leer un apostrofe simple de manera literal entre 2 apostrofes simples?
El espacio también tiene como función separar los argumentos en la línea de comandos. Emplear un simple espacio en un lugar donde no debe ir puede ser fatal para todo el sistema.
-
Ejemplo: eliminación de la raíz a causa de un simple espacio
Supongamos: El root desea eliminar una carpeta X. Para ello, éste va a utilizar el comando rm con las opciones f (fuerza) y R (recursivo). La carpeta que se desea eliminar se llama a_eliminar y se encuentra en /home/yogi/a_eliminar
a) Comando correcto
b) Comando incorrecto (error de escritura) => sistema eliminado
Explicación: Observará que en el segundo caso, por error he escrito un espacio entre / y home. ¿Y qué ocurre? El shell creerá que el comando rm debe eliminar en primer lugar la raíz / y luego home/yogi/a_eliminar. En este caso habrás borrado todos los datos de tu sistema. "home/yogi/a_eliminar" no existe y tu sistema tampoco. ¡¡¡POR LO TANTO PRESTA ATENCIÓN A LO QUE ESCRIBES EN EL SHELL!!!
Una solución para evitar todo esto es utilizar el autocompletado de comandos. Si ingresa / y enseguida la tecla TAB 2 veces, varias opciones aparecerán en la pantalla. Normalmente son los directorios de la raíz: boot,bin, home,var... Sólo tienes que agregar una "h" para home, de nuevo TAB 2 veces y así sucesivamente.
-
Otro ejemplo con el espacio
Para reconocer el espacio como carácter y no como separador de parámetros es necesario protegerlo (ponga un anti-slash delante).
En primer lugar, crea un archivo vacío que se llame "aa bb":
Podemos observar que el resultado obtenido no es conforme a lo que deseábamos. Deseábamos tener un solo archivo aa bb y no el archivo aa ni el archivo bb. ¿Por qué hemos obtenido esto? Porque el shell, cuando hemos ingresado: touch aa bb, ha entendido que necesitábamos crear un archivo aa y un archivo bb. Corrijamos esto:
Ahora usted dirá: Pero no se ha creado aa bb si no aa\bb. En realidad hemos creado aabb. El carácter \ permite reconocer el espacio como carácter literal. Por otra parte el comando ls –l nos muestra la existencia del archivo aa bb. En lugar del anti slash podemos utilizar los apostrofes simples touch 'aa bb'.
¿Qué podemos retener de todo esto? Cada vez que desee utilizar caracteres que no sean alfanuméricos, como $, espace, \, etc. como caracteres literales entonces es necesario poner el anti slash o ponerlos entre apostrofes simples.
3. Los comandos largos tienen más de una línea: Si el comando se hace demasiado largo puede pasar a la línea siguiente utilizando el carácter \.