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?

Anders Lind
fonte
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.

Arcege
fonte
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.

Richard Hansen
fonte
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

whereis git e você obtém o caminho para o comando.

isto é, apenas se o git estiver na sua variável PATH, caso você não o tenha instalado através do gerenciador de pacotes, é mais complexo e você deve usar os comandos findou locate.

Hanan N.
fonte
1
O uso de whichtambém é incentivado.
precisa saber é o seguinte
5
@ Nikhil type, sim, não which. Consulte Como usar whichem um comando com alias?
Gilles
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)

Tim Kennedy
fonte
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".


fonte
2
Eu pensei que ia voltar com "42"! RI MUITO.
Joe