Eu tenho um comando que gera um diretório e eu quero cd para esse diretório

2

Eu esperava poder fazer cd | [my command] , mas parece que cd não funciona de um pipe.

Eu quero simplesmente cd na saída de [my command] sem escrever um script de tipos Espero que haja uma maneira simples de fazer isso.

    
por trafalgar 13.05.2017 / 00:25

2 respostas

7

Em shells POSIX:

cd -P -- "$(mycommand)"
  • $(cmd) é substituição de comandos . Ele se expande para a saída padrão de cmd menos os caracteres de nova linha à direita.
  • %código%. Sem as aspas, essa expansão estaria sujeita a split + glob que não queremos aqui.
  • "$(cmd)" separa as opções dos argumentos. Se você souber que a saída de -- não começará com mycommand nem - , você poderá omiti-la. Se não for + output, seja considerado como opção para that
  • cd é o comando para alterar o diretório atual. No entanto, sem cd , ele pode não mudar para o diretório fornecido como argumento se ele contiver -P components.

Ou você pode escrever .. . Isso seria muito desleixado, mas funcionaria desde que a saída de cd $(mycommand) não contenha espaços, tabulações, nova linha, mycommand , * , ? caracteres ou [ componentes e não comece com .. ou - .

Agora eu ouço você perguntar, como eu mudaria em um diretório que termina em caracteres de nova linha com esses comandos?

    
por 13.05.2017 / 00:30
0

Para casos simples:

cd 'my command'

onde my command está entre os carrapatos.

Isso não funciona se a saída do comando contiver caracteres "estranhos". Veja a resposta de Stéphane Chazelas para mais detalhes.

    
por 13.05.2017 / 05:58