Linha de comando para ir no diretório passado por qual comando

1

Eu quero usar um comando como este:

 which node && cd $_

para pular no diretório quando o arquivo binário reside, mas o comando which retorna todo o caminho + nome do binário, então eu recebo um erro:

 bash: cd: node: No such file or directory

Estou procurando um novo comando para me mover no lugar certo.

    
por CiccioSgamino 29.08.2015 / 13:56

3 respostas

3

Não use o (a menos que você esteja em csh ou tcsh variants), está quebrado. Usando o comando -v node .

POSIX oferecer o comando dirname para obter a parte do diretório do nome do caminho:

cd "$(dirname -- "$(command -v node)")"

ou usando uma variável para armazenar o nome do caminho, evita que você chame dirname :

nodepath=$(command -v node)
cd "${nodepath%/*}"
    
por 29.08.2015 / 14:11
1

Enquanto isso, no ZShell, isso requer o constructo bastante feio e desajeitado:

cd -- $commands[node]:h

Isso funciona mesmo quando há diretórios com espaços em seus nomes (a menos que por motivos insondáveis você tenha ativado a opção shwordsplit ).

    
por 29.08.2015 / 17:31
-1
cd $(dirname $(which bash))

Boa sorte:)

    
por 31.08.2015 / 15:56