Sé cómo cambiar el directorio desde la terminal escribiendo
cd <directory>
Pero aquí está el escenario. Estaba usando terminal para ir a la carpeta de mi repositorio git.
- repositorios glenn
- repositorio-glenn-remdroid
Dada la estructura de carpetas anterior, quiero cambiar glenn-remdroid-repository
porque es mi repositorio haciendo.
cd glennRepositories
Antes de cambiar al repositorio glenn-remdroid, escribí el comando por error
cd &
en lugar de cd *
. Solía cd *
porque el nombre de la carpeta es largo para mí, perdón por ser flojo.
Cuando ejecuto el cd &
, el terminal responde
[1] 7519
Cuando ejecuto cd *
esto ahora sucede
[1]+ Done cd (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)
¿Alguien lo que cd &
significa y su salida? Google no sabe mi pregunta :)
shell
cd-command
GLenn
fuente
fuente
cd <TAB>
y el nombre de la carpeta única se expandirá automáticamente.Respuestas:
Al escribir el
&
final de la línea de comando, le está indicando a su shell que tome la canalización de comandos (en este caso, un solo comando) y lo ejecute en un sub-shell en segundo plano (sin esperar un resultado).cd
es un bash incorporado, pero eso no es importante aquí. No afectará a su shell "padre" de ninguna manera, por lo que su directorio de trabajo no cambiará.Esta línea informa que hay un trabajo ejecutándose en segundo plano identificado por el número 1 y la ID del proceso es 7519. Se imprimirá algo similar si ejecuta, por ejemplo,
vim
y luego presiona Ctrl+ Zpara suspenderlo. Cuando finalice el proceso, el shell no informará de eso hasta el próximo ciclo de procesamiento (por ejemplo, simplemente presione Returnuna vez más) y luego imprimirá los trabajos de listado de actualización finalizados.Para más detalles por favor lea
man bash
y la secciónJOB CONTROL
.Como referencia, la pregunta ¿Por qué
exit &
no funciona? tiene alguna similitud.fuente
fish
yzsh
, se informa de inmediato. Enbash
y otros shells POSIX o (t) csh, depende de la configuración de lanotify
opción (desactivado de forma predeterminada) (zsh
ser un shell similar a POSIX también tiene unanotify
opción, pero está apagado de manera predeterminada a menos que se le indique que emule otro shell)El
&
operador envía un proceso a segundo plano; comocd
se puede ejecutar sin argumentos, lo está ejecutando y enviándolo a segundo plano. Si toma la página de manual:Puedes ver que los argumentos son opcionales. Entonces
cd &
se procesa comocd
y luego se envía al fondo. Cuandocd
se llama sin argumento, no se necesita procesamiento. Entonces pasa al fondo como "hecho" (procesado).Alguna información sobre
&
The Bash&
(ampersand) es un operador de control incorporado que se utiliza para bifurcar procesos. Desde la página de manual de Bash, "Si el operador de control termina un comando&
, el shell ejecuta el comando en segundo plano en un subshell".Si inicia sesión en un shell interactivo, al proceso se le asigna un número de trabajo y se muestra el PID secundario. El número de trabajo a continuación es uno.
Tenga en cuenta que cuando se bifurca un proceso, el PID secundario se almacena en la variable especial
$!
Puede terminar el trabajo por su número de trabajo de la siguiente manera:
fuente
cd
se ejecuta y luego se envía a un segundo plano. El proceso en segundo plano se crea realmente antes de que el programa se ejecute en el caso de un comando regular; en el caso de un incorporado, este comportamiento es emulado. El comando se ejecuta mediante este proceso en segundo plano, reemplazándolo. Segundo,cd
sin argumentos hace algo: te lleva a tuHOME
directorio. Pero, dado que lo bifurcas en el fondo, no hay ningún efecto en este caso.