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-repositoryporque 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).cdes 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,
vimy 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 bashy la secciónJOB CONTROL.Como referencia, la pregunta ¿Por qué
exit &no funciona? tiene alguna similitud.fuente
fishyzsh, se informa de inmediato. Enbashy otros shells POSIX o (t) csh, depende de la configuración de lanotifyopción (desactivado de forma predeterminada) (zshser un shell similar a POSIX también tiene unanotifyopció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; comocdse 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 comocdy luego se envía al fondo. Cuandocdse 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
cdse 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,cdsin argumentos hace algo: te lleva a tuHOMEdirectorio. Pero, dado que lo bifurcas en el fondo, no hay ningún efecto en este caso.