Subshells de Linux para principiantes con ejemplos
- 1707
- 412
- Sra. Lorena Sedillo
Hacer uso de subshells en Bash le proporciona la capacidad de generar información confidencial de contexto desde la derecha dentro de su comando bash. Por ejemplo, si desea modificar una cadena de texto justo dentro de un eco
Declaración, entonces esto se puede hacer fácilmente con subshells.
En este tutorial aprenderás:
- Cómo usar emplear el uso de subshells en Bash
- Cómo usar subshells para obtener información confidencial de contexto
- Ejemplos de uso básico de subshell
Requisitos y convenciones de software utilizados
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Independiente de la distribución de Linux |
Software | Línea de comando bash, sistema basado en Linux |
Otro | Cualquier utilidad que no esté incluida en el shell bash de forma predeterminada se puede instalar utilizando sudo apt-get instalación de utilidad de utilidad (o yum instalación para sistemas basados en redhat) |
Convenciones | # - requiere que los comandos de Linux se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio$-Requiere que los comandos de Linux se ejecuten como un usuario regular no privilegiado |
Ejemplo 1: Dos sintaxis diferentes
Bash permite dos sintaxis de subshell diferentes, a saber ps
y una ticket de fondo rodeadas de declaraciones. Veamos algunos ejemplos fáciles para comenzar:
$ echo '$ (echo' a ')' $ (echo a) $ echo "$ (echo 'a')" a $ echo "a $ (echo 'b') c" abc $ echo "a'Co 'b "C" ABC
En el primer comando, como ejemplo, usamos '
comillas simples. Esto dio como resultado que nuestro comando subshell, dentro de las citas individuales, se interprete como texto literal en lugar de un comando. Esta es una fiesta estándar: '
indica literal, "
indica que la cadena se analizará para subshells y variables.
En el segundo comando intercambiamos el '
a "
y así la cadena se analiza para comandos y variables reales. El resultado es que se está iniciando una subshell, gracias a nuestra sintaxis de subshell (ps
), y el comando dentro de la subshell (hacer eco 'a'
) se está ejecutando literalmente y, por lo tanto, un a
se produce, que es entonces insertado en el nivel general / superior eco
. El comando en esa etapa se puede leer como Echo "A"
y así la salida es a
.
En el tercer comando, ampliamos aún más esto para que sea más claro cómo las subshells funcionan en contexto. Hacemos eco de la carta b
dentro de la subshell, y esto se une a la izquierda y a la derecha por las letras a
y C
producir la salida general para ser a B C
de manera similar al segundo comando.
En el cuarto y último comando, ejemplificamos la sintaxis de subshell de Bash alternativa de usar las tarjetas posteriores en lugar de ps
. Es importante saber que ps
es la sintaxis preferida, y que en algunos casos remotos la sintaxis basada en la tarea posterior puede generar algunos errores de análisis donde el ps
no es. Por lo tanto, te recomendaría encarecidamente que uses siempre el ps
Sintaxis para subshells, y esto también es lo que usaremos en los siguientes ejemplos.
Ejemplo 2: un poco más complejo
$ touch a $ echo "-$ (ls [a-z])" -a $ echo "-=-|| $ (ls [a-z] | xargs ls -l) ||-=-"-=-|| -rw -rw-r-- 1 Roel Roel 0 Sep 5 09:26 A ||-=-
Aquí, primero creamos un archivo vacío utilizando el tocar un
dominio. Posteriormente, usamos eco
para generar algo que nuestra subshell $ (LS [A-Z])
Generará. Claro, podemos ejecutar el LS
directamente y produce más o menos el mismo resultado, pero tenga en cuenta cómo estamos agregando -
a la salida como prefijo.
En el comando final, insertamos algunos caracteres en la parte delantera y final de la eco
comando que hace que la salida se vea un poco más agradable. Usamos una subshell para encontrar primero el a
Archivo que creamos anteriormente (LS [A-Z]
) Y luego, todavía dentro de la subshell, pase los resultados de este comando (que sería solo a
literalmente - yo.mi. el archivo que creamos en el primer comando) al LS -L
Usando la tubería (|
) y el Xargs
dominio. Para obtener más información sobre XARGS, consulte nuestros artículos XARGS para principiantes con ejemplos y Xargs de múltiples roscas con ejemplos.
Ejemplo 3: citas dobles dentro de subshells y sub-subshells!
echo "$ (echo" $ (echo "funciona") "| sed 's | it | it seguramente |')" Seguramente funciona
Genial, no? Aquí vemos que se pueden usar citas dobles dentro de la subshell sin generar ningún error de análisis. También vemos cómo se puede anidar una subshell dentro de otra subshell. ¿Puedes analizar la sintaxis?? La forma más fácil es comenzar "en el medio o el núcleo de todas las subshells", que en este caso sería el simple Echo "Funciona"
.
Este comando saldrá funciona
Como resultado de la llamada de subshell $ (echo "funciona")
. Imagen funciona
en lugar de la subshell, yo.mi.
echo "$ (echo" funciona "| sed 's | it | it seguramente |')" Seguramente funciona
Esto ya se ve más simple. A continuación, es útil saber que el sed
El comando hará un sustituto (gracias a la s
comando justo antes del |
separador de comando) del texto él
a Seguramente
. Puedes leer el sed
ordenar como reemplazar __it__ con __it seguramente__. La salida de la subshell será así
seguramente funciona ', yo.mi.
echo "seguramente funciona" seguramente funciona
Conclusión
En este artículo, hemos visto que subshells seguramente trabaja (juego de palabras), y que pueden usarse en una amplia variedad de circunstancias, debido a su capacidad de insertarse en línea y dentro del contexto del comando general. Las subshells son muy poderosas y una vez que comiences a usarlas, bueno, es probable que no se detenga. Muy pronto estarás escribiendo algo como:
$ Var = "adiós"; echo "gracias $ (echo" $ var "| sed 's |^| y |')" | sed 's | k | k you |'
Este es para que intentes jugar con! Gracias y adiós
Tutoriales de Linux relacionados:
- Cómo usar subshells Bash dentro de declaraciones
- Subshells de Linux avanzados con ejemplos
- Cosas para instalar en Ubuntu 20.04
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Una introducción a la automatización, herramientas y técnicas de Linux
- Scripting de bash y gestión de procesos multiprocesos en el ..
- Mastering Bash Script Loops
- Comandos básicos de Linux
- Comandos de Linux: los 20 comandos más importantes que necesitas ..
- Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
- « Tutorial de depuración de GDB para principiantes
- Cómo configurar crontab para ejecutar cada 5 minutos »