Sé que el signo y &al final ejecuta un comando en segundo plano, pero nunca lo he visto en combinación con el signo de dólar más los corchetes alrededor del comando.
Conozco ese tipo de uso $( ), pero no hay descanso. Es solo $(command) &que eso es lo que me confunde.
AlphaOmega
Respuestas:
20
Respuesta corta
Teniendo en cuenta la sintaxis $(command) &, el resultado es el mismo que si se toma la salida de correr solo commandy luego trató de correr que como un comando. Y todo esto se haría en segundo plano, lo que significa que no habría salida visible o colgando en el terminal.
Por ejemplo, si tuviéramos un archivo de texto mycommand.txtcon el contenido:
echo "Hello World"
Entonces el comando
$(cat mycommand.txt)&
sería equivalente a correr
echo "Hello World"&
Pero como agregamos el ampersand ( &), no veríamos ningún resultado de este comando, por lo que sería bastante inútil en este ejemplo.
Respuesta larga (explicación)
Signo de dólar $(variable)
El signo de dólar antes de la cosa entre paréntesis generalmente se refiere a una variable. Esto significa que este comando está pasando un argumento a esa variable desde un script bash o está obteniendo el valor de esa variable para algo. La diferencia en las secuencias de comandos bash para invocar y declarar variables es la siguiente:
Declare una variable sin el signo de dólar y llámela con un signo de dólar. Por ejemplo, un script que contiene esto
#!/bin/bash
STR="Hello World!"
echo $STR
Daría salida a esto
HelloWorld!
Paréntesis ()- Sustitución de comandos
La sustitución de comandos permite que la salida de un comando reemplace el comando en sí. La sustitución de comandos ocurre cuando un comando se incluye de la siguiente manera:
$(command)
o
`command`
Bash realiza la expansión ejecutando el comando en un entorno de subshell y reemplazando la sustitución del comando con la salida estándar del comando, con cualquier nueva línea final eliminada. Las líneas nuevas incrustadas no se eliminan, pero pueden eliminarse durante la división de palabras. La sustitución del comando $(cat file)se puede reemplazar por el equivalente pero más rápido $(< file).
Ampersand &- Proceso de fondo
Y luego, el &símbolo de unión, o símbolo, es como usted dijo, utilizado para ejecutarlo en segundo plano.
Es un símbolo presente en la ventana del terminal que, según lo que intente hacer, puede no ser necesario para que usted ingrese. Cuando abra una terminal, la verá allí inmediatamente.
monkeyman_stones
No entiendo. Aunque breve, esto responde a la pregunta real, mientras que la respuesta aceptada no.
$( )
, pero no hay descanso. Es solo$(command) &
que eso es lo que me confunde.Respuestas:
Respuesta corta
Teniendo en cuenta la sintaxis
$(command) &
, el resultado es el mismo que si se toma la salida de correr solocommand
y luego trató de correr que como un comando. Y todo esto se haría en segundo plano, lo que significa que no habría salida visible o colgando en el terminal.Por ejemplo, si tuviéramos un archivo de texto
mycommand.txt
con el contenido:Entonces el comando
sería equivalente a correr
Pero como agregamos el ampersand (
&
), no veríamos ningún resultado de este comando, por lo que sería bastante inútil en este ejemplo.Respuesta larga (explicación)
Signo de dólar
$
(variable)El signo de dólar antes de la cosa entre paréntesis generalmente se refiere a una variable. Esto significa que este comando está pasando un argumento a esa variable desde un script bash o está obteniendo el valor de esa variable para algo. La diferencia en las secuencias de comandos bash para invocar y declarar variables es la siguiente:
Declare una variable sin el signo de dólar y llámela con un signo de dólar. Por ejemplo, un script que contiene esto
Daría salida a esto
Paréntesis
()
- Sustitución de comandosLa sustitución de comandos permite que la salida de un comando reemplace el comando en sí. La sustitución de comandos ocurre cuando un comando se incluye de la siguiente manera:
o
Bash realiza la expansión ejecutando el comando en un entorno de subshell y reemplazando la sustitución del comando con la salida estándar del comando, con cualquier nueva línea final eliminada. Las líneas nuevas incrustadas no se eliminan, pero pueden eliminarse durante la división de palabras. La sustitución del comando
$(cat file)
se puede reemplazar por el equivalente pero más rápido$(< file)
.Ampersand
&
- Proceso de fondoY luego, el
&
símbolo de unión, o símbolo, es como usted dijo, utilizado para ejecutarlo en segundo plano.fuente
toma la salida de "comando" como un comando y lo ejecuta en segundo plano. Su funcionalidad es comparable con "eval"
fuente