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.