Lo siguiente se comporta igual en Fedora y CentOS.
cd mydirectory
trabajos.
cd notadirectory
funciona (obtiene un error de Bash).
Sin embargo,
cd `
me da algún tipo de aviso:
>
Nada de lo que pensé ingresar da respuesta, simplemente se dirige a la siguiente línea para solicitar nuevamente. Simplemente uso CTRL+ Cpara volver a mi root@localhost
.
¿Cuál es el propósito de esto y qué se puede hacer con él?
¡Gracias!
>
backtick, ya que eso también puede ocurrir en otras situacionesRespuestas:
Lo que ha escrito es una marca de retroceso : es el comienzo de una instrucción para golpear y evaluar lo que escribe como comando. Se
>
muestra para indicar que todavía está ingresando el comando en la línea siguiente.Si cierra el backtick, encontrará que se ejecutará todo el comando. P.ej
fuente
cd `dirname \`which ls\``
= cd al directorio donde se encuentra el binario "ls". (es decir,cd /bin
ya que es/bin/ls
) [edit: phew, escapar de ese descuento es DURO]$()
a``
. Su ejemplo (más la cita correcta) se volveríacd "$(dirname "$(which ls)")"
mucho menos loco.$()
sobre comillas inversas.La respuesta de JohnC ya explica el backtick. Pero lo que también se está preguntando es el
>
aviso. Este es un mensaje de continuación, y no solo se activa por un retroceso, sino siempre cuando su shell claramente sabe que no ha terminado de ingresar un comando. El ejemplo más fácil es poner una continuación de línea explícita\
al final de una línea de entrada (que ayuda a dividir la entrada larga):Tenga en cuenta que al igual que
PS1
controla el aspecto del símbolo del sistema, también puede configurarloPS2
para cambiar el mensaje de continuación, p. Ej.Hay muchas razones para que ocurra la continuación. Un solo backtick está incompleto, pero también podría ingresar algo como
en una sola línea (nota al margen: se recomienda su uso
$(
y)
, en cambio, los paréntesis hacen que sea obvio dónde comienza y termina la expansión, mientras que los backticks simples hacen que sea más difícil ver dónde falta uno. Y anidar ...). Otras posibles razones para un aviso de continuación:done
despuéswhile
ofor
fi
después de unif
esac
despuéscase
(cd $HOME; cat .bashrc)
|
, así como la ejecución condicional||
y&&
(&
aunque no , ya que eso solo hace que el comando se ejecute en segundo plano)'
o"
)Curiosamente, una llave faltante
}
después de una expansión variable${
también provoca una solicitud de continuación, pero fallará debido al espacio insertado:fuente
Significa que su comando aún no está completo. De hecho, el carácter de retroceso del carácter
`
, se usa para delimitar un comando en línea.Ejemplo:
fuente
El backtick inicia / finaliza la sustitución del comando. El shell lee el comando dentro de los backticks, interpreta los resultados y coloca esos resultados en el comando. P.ej:. ls
which cp
produce la ejecución de "which cp" y el resultado de ese comando, es decir, / bin / cp se utilizará como argumento para el comando ls. Sin embargo, este comportamiento está en desuso, a favor de la sustitución de comandos $ (cmd) más explícita y legible.Al escribir cd `El shell espera que se ejecute un comando para seguir, y, para estar cerca con una tecla de retroceso.
En el caso de la expansión variable usando llaves, el shell presenta la solicitud de continuación porque esas llaves se evalúan léxicamente antes de que se complete la expansión.
fuente