¿Cómo encontrar la ruta de la aplicación desde la línea de comandos?

111

Por ejemplo, he gitinstalado en mi sistema. Pero no recuerdo dónde lo instalé, entonces, ¿qué comando es adecuado para averiguarlo?

Anders Lind
fuente
45
Je, je " whichcomando" de hecho :)
Tikhon Jelvis

Respuestas:

125

Si está en su camino, puede ejecutar cualquiera type gito which git. El whichcomando ha tenido problemas para obtener la ruta correcta (confusión entre el entorno y los archivos de puntos). Para type, puede obtener solo el camino con el -pargumento.

Si no está en su camino, entonces es mejor buscarlo locate -b git . Encontrará cualquier cosa llamada 'git'. Será una lista larga, por lo que podría ser bueno calificarla locate -b git | fgrep -w bin.

Arcege
fuente
10
Lo uso locatesin parar (es muy rápido), pero para aquellos que no lo saben, locateestá tan actualizado como su actualización más reciente de la base de datos, que se ejecuta automáticamente todos los días en mi Ubuntu. El comando de actualización es sudo updatedb... También locatetiene la capacidad de expresión regular incorporada, por lo que comandos como este funcionan: locate -br "^git$"... -b` significa restringir la búsqueda solo al nombre base ... o sin el -b, busca el nombre de ruta completo. , solo busca las rutas que ha configurado para buscar.
Peter.O
77
Prefiero typea which. whichSe confunde fácilmente .
Gilles
@Gilles, eso es gracioso para mí, el comportamiento es exactamente lo contrario: typees un shell incorporado que me dice alias y tal, y whiches un programa externo que me muestra el camino hacia un ejecutable ... aunque si hay un incorporado que entra en el forma en que ese ejecutable no será llamado.
quodlibetor
@quodlibetor Los problemas whichson que no conoce las funciones y funciones integradas del shell (lo cual es relevante cuando te preguntas qué tipo de comando hará el comando), y utiliza un sistema diferente $PATHen algunos sistemas.
Gilles
48

La forma estándar POSIX de hacer esto es command -v git. Todos los sistemas similares a UNIX deberían soportar esto.

Richard Hansen
fuente
44
Sé que esto tiene más de un año, pero esto era exactamente lo que estaba buscando; Sorprendido, esta no es la respuesta aceptada.
Akoi Meexx
13

whereis git y obtienes el camino hacia el comando.

eso es solo si el git está en su variable PATH, en caso de que lo haya instalado no a través de su administrador de paquetes, es más complejo y debe usar los comandos findo locate.

Hanan N.
fuente
1
El uso de whichtambién es alentado.
Nikhil Mulley
55
@Nikhil type, más bien, no which. Consulte Cómo usar whichen un comando con alias?
Gilles
13

Las otras respuestas aquí parecen estar orientado en gran medida hacia las versiones modernas de Linux, por lo que si quieres pasar a utilizar giten un sistema operativo que no tiene locate, whereis, which, o apropos(como Solaris, HP-UX, etc), entonces no es siempre el viejo recurso find.

find / -name git 

En algunas versiones anteriores de los sistemas enumerados anteriormente, es posible que necesite una -printopción find.

find / -name git -print

Y si lo usa locate, asegúrese de ejecutarlo updatedbperiódicamente. ( locate.updatedben algunos derivados de BSD)

Tim Kennedy
fuente
8
Para programas en la ruta, usetype ; Es confiable y portátil (excepto para sistemas de 30 años).
Gilles
Gracias, @Gilles. Nunca supe de eso type. :) Eso definitivamente va en el repertorio!
Tim Kennedy el
Probablemente valga la pena señalar que findrealiza una búsqueda completa en profundidad del sistema de archivos a partir de donde sea que lo arraigue. Entonces find / -name gitatravesará todo su sistema. Si sabe que el programa está en su camino, generalmente puede hacerlo IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, aunque los sistemas de archivos Unix son lo suficientemente permisivos como para que esto se rompa de varias maneras si tiene caracteres extraños en su PATH.
quodlibetor el
En realidad, el comando que di anteriormente romperá tu PATH, lo correcto (con las mismas advertencias que antes) es IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Asimismo, reiterar, esta respuesta sólo debe ser utilizado por personas que no tienen acceso a type, o which , o locate , o sea, casi nadie. La respuesta de @ Arcege es correcta.
quodlibetor
5

Para obtener la ruta al programa instalado, use whereiso which. Si olvida su nombre, puede usarlo aproposcon un sinónimo o una descripción de su utilidad, por ejemplo apropos "version control", encontrará git. A continuación, por supuesto, está el whatiscomando de resumir brevemente la función de un programa. Sin embargo, esto no se aplica a todos los programas y funciones de su sistema. Prueba por ejemplo whatis "the meaning of life, universe and everything".


fuente
2
¡Pensé que iba a volver con "42"! Jajaja
Joe