Eu sei como mudar o diretório do terminal digitando
cd <directory>
mas aqui está o cenário. Eu estava usando o terminal para ir na pasta do meu repositório git.
- glennRepositories
- glenn-remdroid-repository
Dada a estrutura de pastas acima, desejo mudar glenn-remdroid-repository
porque é o meu repositório.
cd glennRepositories
Antes de mudar para o glenn-remdroid-repository, digitei o comando por engano
cd &
em vez de cd *
. Eu usei cd *
porque o nome da pasta é longo para mim, desculpe por ser preguiçoso.
Quando executo o cd &
, o terminal responde
[1] 7519
Quando executo cd *
isso agora aconteceu
[1]+ Done cd (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)
Alguém o que cd &
significa e sua saída? O Google não sabe minha pergunta :)
shell
cd-command
GLenn
fonte
fonte
cd <TAB>
e o nome da pasta exclusiva será expandido automaticamente.Respostas:
Ao escrever
&
no final da linha de comando, você está instruindo seu shell a pegar o pipeline de comando (nesse caso, um único comando) e executá-lo em um sub-shell em segundo plano (sem esperar por um resultado).cd
é um bash embutido, mas isso não é importante aqui. Isso não afetará seu shell "pai" de forma alguma, portanto seu diretório de trabalho não será alterado.Esta linha está relatando que há um trabalho em execução em segundo plano identificado pelo número 1 e o ID do processo é 7519. Uma coisa semelhante será impressa se você executar, por exemplo,
vim
e depois pressionar Ctrl+ Zpara suspendê-lo. Quando o processo terminar, o shell não informará isso até o próximo ciclo de processamento (por exemplo, basta pressionar Returnmais uma vez) e, em seguida, imprimirá a atualização listando os trabalhos concluídos.Para mais detalhes, leia
man bash
e a seçãoJOB CONTROL
.Para referência, a pergunta Por que
exit &
não funciona? tem alguma semelhança.fonte
fish
ezsh
, é relatado imediatamente. Embash
e outros shells POSIX ou (t) csh, depende da configuração danotify
opção (desativado por padrão) (zsh
sendo um shell semelhante ao POSIX também tem umanotify
opção, mas é desativado por padrão, a menos que seja solicitado a emular outro shell)O
&
operador envia um processo para segundo plano; comocd
pode ser executado sem argumentos, você o está executando e enviando para segundo plano. Se você acessar a página de manual:Você pode ver que os argumentos são opcionais. assim
cd &
é processado comocd
e depois enviado para segundo plano. Quandocd
é chamado sem argumento, não é necessário processamento. Por isso, passa para segundo plano como "pronto" (processado).Algumas informações sobre
&
o Bash&
(e comercial) são um operador de controle interno usado para bifurcar processos. Na página de manual do Bash, "Se um comando for finalizado pelo operador de controle&
, o shell executará o comando em segundo plano em uma subshell".Se conectado a um shell interativo, o processo recebe um número de trabalho e o PID filho é exibido. O número do trabalho abaixo é um.
Observe que quando um processo é bifurcado, o PID filho é armazenado na variável especial
$!
Você pode finalizar o trabalho pelo número do trabalho da seguinte forma:
fonte
cd
é executado e depois enviado para o plano de fundo. O processo em segundo plano é realmente criado antes do programa ser executado no caso de um comando regular; no caso de um interno, esse comportamento é emulado. O comando é executado por esse processo em segundo plano, substituindo-o. Segundo,cd
sem argumentos , algo é feito: leva você ao seuHOME
diretório. Mas, como você o colocou em segundo plano, não há efeito nesse caso.