Rechercher la commande dans Linux

Bon alors je lance une commande simple comme ceci:

find / -name ssh | grep bin 

la sortie de ceci est la suivante:

 /usr/bin/ssh 

Maintenant, je veux que ça ressemble à ça quand je cd

 /usr/bin/ 

Je ne peux pas comprendre comment le rendre intelligent parce que je peux le forcer à fonctionner uniquement pour celui-ci, mais qu’en est-il quand je veux exécuter ce même code sur une autre machine et l’emplacement de ssh est ailleurs.

Tu ne veux pas ça?

 cd $(dirname $(which ssh)); 

Dirname est ce que vous cherchez?

 $ dirname `find / -name ssh | grep bin | head -1` /usr/bin 

La partie head -1 ne sert qu’à s’assurer qu’une seule chose est transmise à dirname, sinon elle échouera.

 find / -name ssh|grep bin|xargs dirname 

Vous pouvez utiliser xargs pour obtenir la partie répertoire de la commande.

 find / | filter1 | xargs -I_VAR_ dirname _VAR_ 
 find / -name ssh | grep bin|sed "s/ssh//g" 

Si vous essayez de trouver où réside la commande ssh vous avez plusieurs options:

  which ssh 

et

  whereis ssh 

vous donnera cette information ( which vous donnera un chemin unique, alors que whereis contiendra des chemins avec toutes les références à ssh )

Comme pour la commande find , modifiez le répertoire (de départ) que vous avez spécifié dans la commande find :

  find /usr/bin -name ssh 

va commencer sa recherche dans le répertoire / usr / bin.

Est-ce ce que vous essayez de faire? Je ne suis pas sûr à 100% d’avoir compris la dernière partie de votre message. Si non, pourriez-vous envisager de le reformuler s’il vous plaît?

Le programme dirname , qui fait partie des coreutils, peut être utilisé pour supprimer la dernière partie de la séquence de chemin:

 dirname `find / -name ssh | grep bin` 

va sortir

 /usr/bin 

puis.