Como encontrar o caminho do aplicativo na linha de comando?


109

Por exemplo, eu gitinstalei no meu sistema. Mas não me lembro onde o instalei, então qual comando é adequado para descobrir isso?


45
Heh, heh " whichcomando" na verdade :)
Tikhon Jelvis

Respostas:


123

Se estiver no seu caminho, você poderá executar type gitou which git. O whichcomando teve problemas para obter o caminho adequado (confusão entre o ambiente e os arquivos de ponto). Pois type, você pode obter apenas o caminho com o -pargumento.

Se não estiver no seu caminho, é melhor procurá-lo com locate -b git Ele encontrará qualquer coisa chamada 'git'. Será uma lista longa, portanto pode ser bom qualificá-la locate -b git | fgrep -w bin.


10
Uso locatesem parar (é muito rápido), mas, para quem não sabe, locateé tão atualizado quanto a atualização mais recente do banco de dados, que é executada automaticamente diariamente no meu Ubuntu. O comando refresh é sudo updatedb... Também locatepossui capacidade de regex locate -br "^git$"interna , portanto, comandos como este funcionam: ... -b` significa restringir a pesquisa apenas ao nome da base ... ou sem o -b, ele pesquisa o nome completo do caminho. , ele pesquisa apenas os caminhos que você configurou para pesquisar. não há controle de linha de comando disso além dos filtros regex.
precisa saber é o seguinte

7
Prefere typea which. whichfacilmente fica confuso .
Gilles

@Gilles, isso é engraçado para mim, o comportamento é exatamente o oposto: typeé um shell embutido que me diz aliases e tal, e whiché um programa externo que me mostra o caminho para um executável ... embora, se houver um embutido no diretório maneira que executável não será chamado.
quodlibetor

@quodlibetor Os problemas whichsão que ele não sabe sobre os recursos e funções do shell (o que é relevante quando você está se perguntando o que digitar o comando fará), e usa algo diferente $PATHem alguns sistemas.
Gilles

48

A maneira padrão POSIX de fazer isso é command -v git. Todos os sistemas do tipo UNIX devem suportar isso.


4
Eu sei que isso tem mais de um ano, mas era exatamente isso que eu estava procurando; surpreso que esta não seja a resposta aceita.
Akoi Meexx


13

As outras respostas aqui parece ser em grande parte voltado para versões modernos de Linux, por isso, se acontecer de você usar gitem um sistema operacional que não tem locate, whereis, which, ou apropos(como Solaris, HPUX, etc), então há sempre o velho standby find.

find / -name git 

Em algumas versões mais antigas dos sistemas listados acima, você pode precisar de uma -printopção fornecida find.

find / -name git -print

E se você usar locate, certifique-se de executar updatedbperiodicamente. ( locate.updatedbem alguns derivados do BSD)


8
Para programas no caminho, usetype ; é confiável e portátil (exceto para sistemas com 30 anos de idade).
Gilles

Obrigado, @Gilles. Eu nunca soube disso type. :) Isso definitivamente está no repertório!
Tim Kennedy

Provavelmente vale ressaltar que findfaz uma pesquisa completa e aprofundada do sistema de arquivos a partir de onde você o enraizar. Então find / -name git, atravessará todo o seu sistema. Se você sabe que o programa está no seu caminho, normalmente pode fazê-lo IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, embora os sistemas de arquivos Unix sejam permissivos o suficiente para que isso possa ocorrer de várias maneiras se houver caracteres estranhos no seu PATH.
quodlibetor

Na verdade, o comando que eu dei anteriormente quebrará o seu PATH, a coisa correta (com as mesmas ressalvas de antes) é IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Além disso, para reiterar, essa resposta deve ser usada apenas por pessoas que não têm acesso a typeou which ou locate , ou seja, quase ninguém. A resposta do @ Arcege está correta.
quodlibetor

5

Para obter o caminho para o programa instalado, use whereisou which. Se você esquecer o nome, você pode usar aproposcom um sinônimo ou descrição do seu utilitário, por exemplo, apropos "version control"irá encontrar git. A seguir, é claro, o whatiscomando para resumir brevemente a função de um programa. No entanto, isso não se aplica a todos os programas e funções em seu sistema. Tente por exemplo whatis "the meaning of life, universe and everything".


2
Eu pensei que ia voltar com "42"! RI MUITO.
Joe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.