Si desea dominar el shell Bash en Linux, macOS u otro sistema similar a UNIX, los caracteres especiales (como ~, *, | y>) son fundamentales. Te ayudaremos a desentraƱar estas crĆpticas secuencias de comandos de Linux y convertirte en un hĆ©roe de los jeroglĆficos.
¿QuĆ© son los caracteres especiales?
Hay un conjunto de personajes que el shell Bash trata de dos formas diferentes. Cuando los escribe en el shell, actúan como instrucciones o comandos y le dicen al shell que realice una determinada función. Piense en ellos como comandos de un solo carÔcter.
A veces, solo desea imprimir un carĆ”cter y no necesita que actĆŗe como un sĆmbolo mĆ”gico. Existe una forma de utilizar un personaje para representarse a sĆ mismo en lugar de su función especial.
Le mostraremos qué caracteres son "especiales" o "meta-", asà como también cómo puede utilizarlos funcional y literalmente.
~ Directorio de inicio
La tilde (~) es la abreviatura de su directorio personal. Significa que no tiene que escribir la ruta completa a su directorio de inicio en los comandos. Dondequiera que se encuentre en el sistema de archivos, puede usar este comando para ir a su directorio de inicio:
cd ~
También puede utilizar este comando con rutas relativas. Por ejemplo, si se encuentra en algún lugar del sistema de archivos que no estÔ debajo de su carpeta de inicio y desea cambiar al archive
directorio en su work
directorio, use la tilde para hacerlo:
cd ~ / trabajo / archivo
. Directorio actual
Un punto (.) Representa el directorio actual. Lo verĆ” en las listas de directorios si usa la -a
opción (todos) con ls
.
ls -a
TambiĆ©n puede usar el punto en los comandos para representar la ruta a su directorio actual. Por ejemplo, si desea ejecutar un script desde el directorio actual, lo llamarĆa asĆ:
./script.sh
Esto le dice a Bash que busque el script.sh
archivo en el directorio actual . De esta manera, no buscarĆ” en los directorios de su ruta el ejecutable o el script que coincida.
.. Directorio de padres
El punto doble o "punto doble" (..) representa el directorio principal de su actual. Puede usar esto para subir un nivel en el Ɣrbol de directorios.
discos compactos ..
TambiƩn puede usar este comando con rutas relativas, por ejemplo, si desea subir un nivel en el Ɣrbol de directorios y luego ingresar otro directorio en ese nivel.
TambiƩn puede usar esta tƩcnica para moverse rƔpidamente a un directorio en el mismo nivel en el Ɣrbol de directorios que el actual. Usted sube un nivel y luego vuelve a bajar uno a un directorio diferente.
cd ../gc_help
/ Separador de directorio de ruta
Puede usar una barra inclinada (/), a menudo llamada simplemente barra, para separar los directorios en un nombre de ruta.
ls ~ / trabajo / archivo
Una barra diagonal representa la ruta de directorio mĆ”s corta posible. Debido a que todo en el Ć”rbol de directorios de Linux comienza en el directorio raĆz, puede usar este comando para moverse al directorio raĆz rĆ”pidamente:
discos compactos /
# Comentar o recortar cadenas
La mayorĆa de las veces, usa el hash o el signo de nĆŗmero (#) para decirle al shell que lo que sigue es un comentario, y no deberĆa actuar en consecuencia. Puede usarlo en scripts de shell y, menos Ćŗtil, en la lĆnea de comandos.
# Esto serĆ” ignorado por el shell Bash
Sin embargo, no se ignora realmente porque se agrega a su historial de comandos.
TambiƩn puede utilizar el hash para recortar una variable de cadena y eliminar parte del texto del principio. Este comando crea una variable de cadena llamada this_string
.
En este ejemplo, asignamos el texto "¡Dave Geek!" a la variable.
this_string = "¡Dave Geek!"
Este comando se utiliza echo
para imprimir las palabras "Cómo hacer" en la ventana del terminal. Recupera el valor almacenado en la variable de cadena mediante una expansión de parÔmetros. Debido a que agregamos el hash y el texto "Dave", recorta esa parte de la cadena antes de pasarla echo
.
echo How-To $ {this_string # Dave}
Esto no cambia el valor almacenado en la variable de cadena; solo afecta a lo que se envĆa echo
. Podemos usar echo
para imprimir el valor de la variable de cadena una vez mƔs y verificar esto:
echo $ this_string
? ComodĆn de un solo carĆ”cter
El shell Bash admite tres comodines, uno de los cuales es el signo de interrogación (?). Utiliza comodines para reemplazar caracteres en plantillas de nombre de archivo. Un nombre de archivo que contiene un comodĆn forma una plantilla que coincide con un rango de nombres de archivo, en lugar de solo uno.
El comodĆn del signo de interrogación representa exactamente un carĆ”cter . Considere la siguiente plantilla de nombre de archivo:
¿Es insignia? .txt
Esto se traduce como "enumere cualquier archivo con un nombre que comience con 'insignia' y vaya seguido de cualquier carÔcter antes de la extensión del nombre del archivo".
Coincide con los siguientes archivos. Tenga en cuenta que algunos tienen nĆŗmeros y otros tienen letras despuĆ©s de la parte de la "insignia" del nombre del archivo. El comodĆn del signo de interrogación coincidirĆ” con letras y nĆŗmeros.
Sin embargo, esa plantilla de nombre de archivo no coincide con "badge.txt" porque el nombre de archivo no tiene un solo carĆ”cter entre "badge" y la extensión del archivo. El comodĆn del signo de interrogación debe coincidir con el carĆ”cter correspondiente en el nombre del archivo.
TambiĆ©n puede utilizar el signo de interrogación para buscar todos los archivos con un nĆŗmero especĆfico de caracteres en los nombres de archivo. Esto enumera todos los archivos de texto que contienen exactamente cinco caracteres en el nombre del archivo:
ls ?????. txt
* ComodĆn de secuencia de caracteres
Puede utilizar el comodĆn de asterisco (*) para representar cualquier secuencia de caracteres, incluido ningĆŗn carĆ”cter . Considere la siguiente plantilla de nombre de archivo:
ls insignia *
Esto coincide con todo lo siguiente:
Coincide con "badge.txt" porque el comodĆn representa cualquier secuencia de caracteres o ningĆŗn carĆ”cter.
Este comando coincide con todos los archivos denominados "fuente", independientemente de la extensión del archivo.
ls fuente. *
[] Conjunto de caracteres comodĆn
Como se mencionó anteriormente, usa el signo de interrogación para representar cualquier carÔcter individual y el asterisco para representar cualquier secuencia de caracteres (sin incluir ningún carÔcter).
Puede formar un comodĆn con los corchetes ([]) y los caracteres que contienen. El carĆ”cter relevante del nombre de archivo debe coincidir con al menos uno de los caracteres del conjunto de caracteres comodĆn.
En este ejemplo, el comando se traduce como: "cualquier archivo con una extensión" .png ", un nombre de archivo que comience con" tuberĆas_0 "y en el que el siguiente carĆ”cter sea 2, 4 o 6."
ls badge_0 [246] .txt
Puede utilizar mƔs de un conjunto de corchetes por plantilla de nombre de archivo:
ls badge_ [01] [789] .txt
También puede incluir rangos en el juego de caracteres. El siguiente comando selecciona archivos con los números del 21 al 25 y del 31 al 35 en el nombre del archivo.
ls badge_ [23] [1-5] .txt
; Separador de comandos de Shell
Puede escribir tantos comandos como desee en la lĆnea de comandos, siempre que separe cada uno de ellos con un punto y coma (;). Haremos esto en el siguiente ejemplo:
ls> count.txt; wc -l count.txt; rm count.txt
Tenga en cuenta que el segundo comando se ejecuta incluso si el primero falla, el tercero se ejecuta incluso si el segundo falla, y asĆ sucesivamente.
Si desea detener la secuencia de ejecución si falla un comando, use un doble y comercial (&&) en lugar de un punto y coma:
cd ./doesntexist && cp ~ / Documentos / informes / *.
& Proceso de fondo
DespuĆ©s de escribir un comando en una ventana de terminal y se completa, regresa al sĆmbolo del sistema. Normalmente, esto solo toma un momento o dos. Pero si inicia otra aplicación, como por ejemplo gedit
, no podrÔ usar la ventana de su terminal hasta que cierre la aplicación.
Sin embargo, puede iniciar una aplicación como proceso en segundo plano y continuar usando la ventana de terminal. Para hacer esto, simplemente agregue un ampersand a la lĆnea de comando:
gedit command_address.page &
Bash le muestra el ID de proceso de lo que se inició y luego lo regresa a la lĆnea de comando. Luego puede continuar usando la ventana de su terminal.
<Redirección de entrada
Muchos comandos de Linux aceptan un archivo como parĆ”metro y toman sus datos de ese archivo. La mayorĆa de estos comandos tambiĆ©n pueden recibir información de una secuencia. Para crear una secuencia, utilice el corchete de Ć”ngulo izquierdo (<), como se muestra en el siguiente ejemplo, para redirigir un archivo a un comando:
ordenar <palabras.txt
Cuando un comando tiene entrada redirigida a Ʃl, puede comportarse de manera diferente a cuando lee un archivo con nombre.
Si usamos wc
para contar las palabras, lĆneas y caracteres en un archivo, imprime los valores y luego el nombre del archivo. Si redirigimos el contenido del archivo a wc
, imprime los mismos valores numƩricos pero no conoce el nombre del archivo del que proceden los datos. No puede imprimir un nombre de archivo.
A continuación, se muestran algunos ejemplos de cómo puede utilizar wc
:
wc words.txt
wc <palabras.txt
> Redirección de salida
Puede utilizar el corchete en Ôngulo recto (>) para redirigir la salida de un comando (normalmente, a un archivo); aquà hay un ejemplo:
ls> archivos.txt
cat files.txt
La redirección de salida tambiĆ©n puede redirigir los mensajes de error si usa un dĆgito (2, en nuestro ejemplo) con >
. He aquà cómo hacerlo:
wc doesntexist.txt 2> errors.txt
cat errors.txt
| Tubo
Un "tubo" encadena comandos juntos. Toma la salida de un comando y la envĆa al siguiente como entrada. El nĆŗmero de comandos canalizados (la longitud de la cadena) es arbitrario.
AquĆ, usaremos cat
para introducir el contenido del archivo words.txt grep
, que extrae cualquier lĆnea que contenga una "C" minĆŗscula o mayĆŗscula. grep
luego pasarĆ” estas lĆneas a sort
. sort
estĆ” utilizando la -r
opción (inversa), por lo que los resultados ordenados aparecerÔn en orden inverso.
Escribimos lo siguiente:
cat words.txt | grep [cC] | sort -r
! Operador de historial y NOT lógico de canalización
El signo de exclamación (!) Es un operador lógico que significa NO.
Hay dos comandos en esta lĆnea de comandos:
[! -d ./backup] && mkdir ./backup
- El primer comando es el texto entre corchetes;
- El segundo comando es el texto que sigue a los dobles sĆmbolos de unión
&&
.
El primer comando se utiliza !
como operador lógico. Los corchetes indican que se va a realizar una prueba. La -d
opción (directorio) prueba la presencia de un directorio llamado copia de seguridad. El segundo comando crea el directorio.
Debido a que los sĆmbolos de unión dobles separan los dos comandos, Bash solo ejecutarĆ” el segundo si el primero tiene Ć©xito . Sin embargo, eso es lo contrario de lo que necesitamos. Si la prueba del directorio de "copia de seguridad" tiene Ć©xito, no es necesario que la creemos . Y si la prueba para el directorio de "respaldo" falla, el segundo comando no se ejecutarĆ” y no se crearĆ” el directorio que falta.
AquĆ es donde !
entra el operador lógico . Actúa como un NOT lógico. Entonces, si la prueba tiene éxito (es decir, el directorio existe), la !
cambia a "NO Ʃxito", que es un fracaso . Entonces, el segundo comando no estƔ activado.
Si la prueba de directorio falla (es decir, el directorio no existe), !
cambia la respuesta a "NO falla", que es exitosa . Entonces, se ejecuta el comando para crear el directorio faltante .
¡Ese pequeƱo tiene !
mucho impacto cuando lo necesitas!
Para verificar el estado de la carpeta de respaldo, use el ls
comando y las opciones -l
(lista larga) y -d
(directorio), como se muestra a continuación:
ls -l -d copia de seguridad
También puede ejecutar comandos desde su historial de comandos con el signo de exclamación. El history
comando enumera su historial de comandos, y luego escribe el nĆŗmero del comando con el que desea volver !
a ejecutarlo para ejecutarlo, como se muestra a continuación:
! 24
Lo siguiente vuelve a ejecutar el comando anterior:
!!
$ Expresiones variables
En el shell de Bash, crea variables para contener valores. Algunas, como las variables de entorno, siempre existen y puede acceder a ellas cada vez que abre una ventana de terminal. Estos contienen valores, como su nombre de usuario, directorio de inicio y ruta.
Puede usar echo
para ver el valor que tiene una variable; simplemente preceda el nombre de la variable con el signo de dólar ($), como se muestra a continuación:
echo $ USER
echo $ HOME
echo $ PATH
Para crear una variable, debe darle un nombre y proporcionar un valor para que se mantenga. No es necesario utilizar el signo de dólar para crear una variable. Solo agrega $
cuando hace referencia a una variable, como en el siguiente ejemplo:
ThisDistro = Ubuntu
MyNumber = 2001
echo $ ThisDistro
echo $ MyNumber
Agregue llaves ({}) alrededor del signo de dólar y realice una expansión de parÔmetros para obtener el valor de la variable y permitir mÔs transformaciones del valor.
Esto crea una variable que contiene una cadena de caracteres, como se muestra a continuación:
MyString = 123456qwerty
Use el siguiente comando para hacer eco de la cadena en la ventana de la terminal:
echo $ {MyString}
Para devolver la subcadena que comienza en la posición 6 de toda la cadena, use el siguiente comando (hay un desplazamiento cero, por lo que la primera posición es cero):
echo $ {myString: 6}
Si desea hacer eco de una subcadena que comienza en la posición cero y contiene los siguientes seis caracteres, use el siguiente comando:
echo $ {myString: 0: 6}
Utilice el siguiente comando para hacer eco de una subcadena que comienza en la posición cuatro y contiene los siguientes cuatro caracteres:
echo $ {myString: 4: 4}
Citando caracteres especiales
Si desea utilizar un carÔcter especial como carÔcter literal (no especial), debe informar al shell Bash. Esto se llama cotización y hay tres formas de hacerlo.
Si encierra el texto entre comillas (“…”), esto evita que Bash actĆŗe sobre la mayorĆa de los caracteres especiales y simplemente se imprimen. Sin embargo, una excepción notable es el signo de dólar ($). TodavĆa funciona como el carĆ”cter de las expresiones de variables, por lo que puede incluir los valores de las variables en su salida.
Por ejemplo, este comando imprime la fecha y la hora:
echo "Hoy es $ (fecha)"
Si encierra el texto entre comillas simples ('…') como se muestra a continuación, detiene la función de todos los caracteres especiales:
echo 'Hoy es $ (fecha)'
Puede usar una barra invertida (\) para evitar que el siguiente carÔcter funcione como un carÔcter especial. A esto se le llama "escapar" del personaje; vea el ejemplo a continuación:
echo "Hoy es \ $ (fecha)"
Piense en los caracteres especiales como comandos muy cortos. Si memoriza sus usos, puede beneficiar enormemente su comprensión del shell Bash y los guiones de otras personas.
No hay comentarios.:
Publicar un comentario