15 caracteres especiales que Bash necesita saber
Los caracteres especiales como ~, *, | y ) son cruciales si desea dominar el shell Bash en Linux, macOS u otros sistemas similares a UNIX. Te ayudaremos a desentrañar estas secuencias de comandos crípticas de Linux y convertirte en un héroe jeroglífico.
¿Qué son los caracteres especiales?
tiene un conjunto de caracteres Concha de golpe Tratado de dos maneras diferentes. Cuando los escribe en el shell, actúan como instrucciones o comandos y le dicen al shell que realice una función específica. Trátelos como comandos de un solo carácter.
A veces, solo desea imprimir un carácter sin que actúe como un símbolo mágico. Hay una forma de utilizar un rol para representarse a sí mismo en lugar de sus funciones especiales.
Le mostraremos qué caracteres son «especiales» o «meta» y cómo usarlos funcional y literalmente.
~ directorio de inicio
La tilde (~) es la abreviatura de su directorio de inicio. Esto significa que no tiene que escribir la ruta completa a su directorio de inicio en el comando. No importa dónde se encuentre en el sistema de archivos, puede usar este comando para ir a su directorio de inicio:
disco compacto
También puede usar este comando con rutas relativas. Por ejemplo, si está en algún lugar del sistema de archivos que no está en su carpeta de inicio y desea cambiar aarchive
en tu directoriowork
directorio, use la tilde para hacer esto:
cd ~/trabajo/archivo
. Directorio actual
Un punto (.) indica el directorio actual.si lo hará-a
(todas) opción conls
.
ls-a
También puede usar puntos en los comandos para indicar la ruta al directorio actual. Por ejemplo, si desea ejecutar un script desde el directorio actual, puede llamarlo así:
./script.sh
Esto le dice a Bash que busque en el directorio actual elscript.sh
documento. De esa forma, no busca directorios en su ruta para buscar archivos ejecutables o scripts.
.. el directorio principal
Un punto doble o «doble punto» (..) representa el directorio principal del directorio actual. Puede usarlo para subir un nivel en el árbol de directorios.
CD..
También puede usar este comando con rutas relativas, por ejemplo, si desea subir un nivel en un árbol de directorios y luego ir a 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 directorio actual. Salta un nivel hacia arriba y un nivel hacia abajo en diferentes directorios.
cd../gc_help
/ separador de directorio de ruta
Puede usar una barra inclinada (/) (a menudo abreviada como barra inclinada) para separar directorios en un nombre de ruta.
ls ~/trabajo/archivo
Una barra inclinada indica la ruta de directorio más corta posible. Debido a que todo en un árbol de directorios de Linux comienza en la raíz, puede usar este comando para moverse rápidamente a la raíz:
desct /
# comentar o recortar cadena
La mayoría de las veces, usa el signo de libra o el signo de número (#) para decirle al shell que lo siguiente es un comentario y que no debe actuar en consecuencia. Puede usarlo en scripts de shell y puede usarlo en la línea de comandos, pero no es muy útil.
# Esto será ignorado por el shell Bash
Sin embargo, en realidad no se ignora porque se agrega a su historial de comandos.
También puede utilizar hashing para recortar variables de cadena y eliminar parte del texto desde el principio. Este comando crea una variable de cadena llamadathis_string
.
En este ejemplo asignamos el texto «Dave Geek!»a la variable.
this_string="Dave Geek!"
Este comando se utiliza paraecho
Imprima las palabras «Cómo hacer» en la ventana del terminal. Recupera el valor almacenado en la variable de cadena a través de un expansión de parámetros. Dado que agregamos el hash y el texto «Dave», pasará la cadena aecho
.
método de eco ${this_string#Dave}
Esto no cambia el valor almacenado en la variable de cadena;Solo afecta lo que se envía aecho
.nosotros podemos usarecho
Imprima el valor de la variable de cadena nuevamente y verifique:
echo $esta_cadena
?comodín de un solo carácter
El shell Bash admite tres caracteres comodín, uno de los cuales es el signo de interrogación (?). Puede utilizar comodines para reemplazar caracteres en las plantillas de nombres de archivo. Los nombres de archivo que contienen comodines forman una plantilla que coincide con un rango de nombres de archivo, no solo con uno.
El comodín del signo de interrogación representa solo un carácter. Considere la siguiente plantilla de nombre de archivo:
ls insignia?. TXT
Esto se traduce como «Enumere cualquier archivo cuyo nombre comience con ‘insignia’ seguido de cualquier carácter individual antes de la extensión del archivo».
Coincide con los siguientes archivos. Tenga en cuenta que algunos tienen números y algunos tienen letras después de la parte de «banderas» del nombre del archivo. El comodín del signo de interrogación coincidirá con letras y números.
Sin embargo, esta plantilla de nombre de archivo no coincide con «insignia.txt» porque el nombre de archivo no tiene un solo carácter entre «insignia» 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 usar signos de interrogación para buscar todos los archivos con una cierta cantidad de caracteres en sus nombres de archivo. Esto enumera todos los archivos de texto con exactamente cinco caracteres en su nombre de archivo:
ls ??????.txt
* secuencia de caracteres comodín
Puede utilizar el comodín asterisco (*) para representar cualquier secuencia de caracteres, incluso sin caracteres. Considere la siguiente plantilla de nombre de archivo:
insignia de ls*
Esto cumple con todas las siguientes condiciones:
Coincide con «badge.txt» porque el comodín representa cualquier secuencia de caracteres o nada.
Este comando coincide con todos los archivos llamados «fuente», independientemente de la extensión del archivo.
fuente. *
[] conjunto de caracteres comodín
Como se indicó anteriormente, utiliza un signo de interrogación para representar cualquier carácter individual y un asterisco para representar cualquier secuencia de caracteres (incluso sin caracteres).
Puede usar corchetes ([]) y los caracteres que contienen para formar comodines. Los caracteres relevantes en el nombre del archivo deben coincidir con al menos un carácter en el conjunto de comodines.
En este ejemplo, el comando se traduce como: «Cualquier archivo con una extensión «.png» y un nombre de archivo que comience con «tuberías_0″ con 2, 4 o 6 como el siguiente carácter».
ls insignia_0[246].txt
Cada plantilla de nombre de archivo puede usar varios conjuntos de corchetes:
ls insignia_[01][789].txt
También puede incluir rangos en juegos de caracteres. El siguiente comando selecciona los archivos numerados del 21 al 25 y del 31 al 35 en el nombre del archivo.
ls insignia_[23][1-5].txt
;Separador de comandos de shell
Puede escribir cualquier cantidad de comandos en la línea de comandos, siempre que separe cada comando con un punto y coma (;). Lo haremos en el siguiente ejemplo:
ls contar.txt;wc -l contar.txt;rm cuenta.txt
Tenga en cuenta que incluso si falla el primer comando, se ejecutará el segundo comando, incluso si falla el segundo, se ejecutará el tercer comando, y así sucesivamente.
Si desea detener la secuencia de ejecución cuando falla un comando, use un signo doble () en lugar de un punto y coma:
cd./doesntexist cp ~/Documentos/informes/*.
proceso entre bastidores
Una vez que escriba el comando en la ventana del terminal y finalice, volverá al símbolo del sistema. Por lo general, esto solo toma uno o dos minutos. Sin embargo, si inicia otra aplicación comogedit
, no podrá usar la ventana de su terminal hasta que cierre la aplicación.
Sin embargo, puede iniciar la aplicación como un proceso en segundo plano y continuar usando la ventana del terminal. Para hacer esto, simplemente agregue un símbolo a la línea de comando:
comando gedit dirección.página
Bash le muestra el ID del proceso que se inició y lo devuelve a la línea de comandos. Luego puede continuar usando la ventana de su terminal.
redirección de entrada
Muchos comandos de Linux aceptan un archivo como argumento y obtienen datos de ese archivo. La mayoría de estos comandos también pueden tomar entradas de secuencias. Para crear una transmisión, puede usar un corchete angular de apertura ( ), como se muestra en el siguiente ejemplo, para redirigir un archivo a un comando:
clasificación de palabras.txt
Puede comportarse de manera diferente cuando un comando redirige la entrada a él que cuando lee desde el archivo nombrado.
si nosotroswc
Utilizado para contar palabras, líneas y caracteres en un archivo, imprime el valor, seguido del nombre del archivo. Si redirigimos el contenido del archivo awc
, que imprime el mismo valor numérico, pero no conoce el nombre del archivo del que proceden los datos. No puede imprimir el nombre del archivo.
Estos son algunos ejemplos de cómo puede utilizarwc
:
palabra wc.txt
palabra wc.txt
redirección de salida
Puede redirigir la salida de un comando (generalmente un archivo) utilizando un corchete angular de cierre ( );Aquí hay un ejemplo:
ls archivo.txt
archivo gato.txt
Si compara el número (2 en nuestro ejemplo) con. Métodos de la siguiente manera:
wc no existe.txt 2 errores.txt
error de gato.txt
|tubería
Una «tubería» encadena comandos juntos. Toma la salida de un comando y la proporciona como entrada para el siguiente comando. El número de comandos de tubería (la longitud de la cadena) es arbitrario.
Aquí usaremoscat
Alimente el contenido del archivo words.txt agrep
, que extrae cualquier línea que contenga una «C» mayúscula o minúscula.grep
Estas líneas luego se pasan asort
.sort
esta usando-r
(reversa), por lo que los resultados ordenados aparecerán en orden inverso.
Ingresamos lo siguiente:
palabras gato.txt |grep [cc] |ordenar -r
!Lógica de canalización NOT y operadores de historial
El signo de exclamación (!) es un operador lógico y significa NO.
Hay dos comandos en esta línea de comando:
[!-d./copia de seguridad] mkdir./copia de seguridad
- El primer comando es el texto entre corchetes;
- El segundo comando es el texto que sigue al símbolo doble.
.
primer comando!
Se utiliza como operadores lógicos. Los corchetes indican que se realizará una prueba-d
. La opción (directorio) prueba la existencia de un directorio llamado copia de seguridad. El segundo comando crea el directorio.
Debido a que el símbolo doble separa los dos comandos, Bash solo ejecutará el segundo comando si el primero tiene éxito. Sin embargo, esto es lo contrario de lo que necesitamos. Si la prueba del directorio de «respaldo» es exitosa, no necesitamos crearlo. Si la prueba del directorio «respaldo» falla, el segundo comando no se ejecutará y el directorio que falta no se creará.
Este es el operador lógico.!
Útil. Actúa como un NO lógico. Entonces, si la prueba tiene éxito (es decir, el directorio existe), entonces!
Voltee a «NO éxito», lo que significa fracaso. Por lo tanto, el segundo comando no está activado.
Si la prueba del directorio falla (es decir, el directorio no existe),!
luego cambie la respuesta a «NO falla», que es éxito. Así que ejecute el comando que crea el directorio que falta.
!
cuando lo necesites,¡Esta pequeña cosa tiene mucho impacto!
Para verificar el estado de la carpeta de respaldo, puede usarls
orden y-l
(lista larga) y-d
(directorio) opciones, de la siguiente manera:
ls -l -d copia de seguridad
También puede usar un signo de exclamación para ejecutar comandos en el historial de comandos. Deberíahistory
comando enumera su historial de comandos, luego puede escribir el número del comando que desea volver a ejecutar!
para ejecutarlo de la siguiente manera:
!veinticuatro
Volvamos a ejecutar el comando anterior:
! !
$ expresión variable
En el shell de Bash, crea variables para contener valores.algunos, como Variables de entorno, siempre están ahí, y puede acceder a ellos en cualquier momento que abra una ventana de terminal. Estos contienen valores como su nombre de usuario, directorio de inicio y ruta.
puedes usarloecho
Para ver el valor que tiene una variable, simplemente prefije el nombre de la variable con un signo de dólar ($) así:
echo $USUARIO
eco $ INICIO
echo $RUTA
Para crear una variable, debe darle un nombre y proporcionar un valor para que se mantenga. No tiene que usar signos de dólar para crear variables.solamente$
Agregado al hacer referencia a una variable, como el siguiente ejemplo:
Esta distribución = Ubuntu
mi numero=2001
echo $EstaDistro
echo $MiNúmero
Agregue llaves ({}) alrededor del signo de dólar y realice la expansión de parámetros para obtener el valor de una variable y permitir más transformaciones de ese valor.
Esto creará una variable que contiene una cadena de caracteres como esta:
MiCadena=123456qwerty
Haga eco de la cadena en la ventana de terminal con:
echo ${MiCadena}
Para devolver la subcadena que comienza en la posición 6 de la cadena completa, use lo siguiente (con un desplazamiento cero, por lo que la primera posición es cero):
echo ${miCadena:6}
Si desea repetir una subcadena que comienza en la posición cero y contiene los siguientes seis caracteres, use el siguiente comando:
echo ${miCadena:0:6}
Haga eco de la subcadena que comienza en la posición 4 y contiene los siguientes cuatro caracteres usando el siguiente comando:
echo ${miCadena:4:4}
citar caracteres especiales
Si desea usar un carácter especial como un carácter literal (no especial), debe informarle al shell Bash. Esto se llama una cita y se puede hacer de tres maneras.
Si escribe el texto entre comillas («…»), esto evitará que Bash actúe sobre la mayoría de los caracteres especiales, simplemente se imprimirán. Sin embargo, una excepción notable es el signo de dólar ($). Todavía se usa como un carácter para expresiones variables, por lo que puede incluir el valor de la variable en la 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 todas las funciones de caracteres especiales:
echo 'Hoy es $(fecha)'
Puede utilizar una barra invertida ( ) para evitar que los caracteres posteriores se traten como caracteres especiales. Esto se llama un carácter «escapado»;Vea el ejemplo a continuación:
echo "Hoy es $(fecha)"
Simplemente trate los caracteres especiales como comandos muy cortos. Puede ser de gran ayuda para comprender el shell Bash y los scripts de otras personas si recuerda para qué sirven.
comandos de linux | ||
documento | asfalto · fotovoltaica · gato · táctica · modo de cambio · grep · diferencia · sed · Arkansas · hombre · para empujar · ventana emergente · fsck · disco de prueba · número de serie · f.d. · pandoc · CD · $ruta · awk · participar · jq · doblar · Único · diarioctl · Cola · estado · ls · mesa de estabilidad · eco · menos · chgrp · Chon · Velocidad de rotación · Mirar · cuerda · escribe · cambiar nombre · compresión · abrir la cremallera · Montaña · desinstalar · Instalar · disco · mkfs · RM · Tabla de contenido · Sincronizar · paradero · gpg · seis · Nano · Tabla de contenido · Du · existir · reparar · intercambio · clon · arrancar · Srm | |
proceso | alias · Pantalla · óptimo · OK · agradable · Progreso · pista · sistema · multiplexor · chsh · historia · existir · lote · libre · cual · dmesg · Franco suizo · módulo de usuario · posdata · chroot · xargs · Terminal · dedo meñique · lsof · Estadísticas de máquinas virtuales · pausa · pared · Sí · matar · dormir · Sudo · demandar · tiempo · dirección de grupo · módulo de usuario · grupo · lshw · cierre · reiniciar · deténgase · cerrar · clave · lscpu · Lista de tareas cronometradas · fecha · antecedentes · fg | |
redes | estadísticas de la red · plano · pista de ruta · propiedad intelectual · SS · Quien es · fail2ban · bmón · excavar · dedo · mapa · FTP · ondulado · wget · Quién · quién soy · w · iptables · ssh-keygen · ufw |