2012-06-20 5 views
0

Хорошо, так я бегу простую команду:Найти команду в Linux

find/-name ssh | grep bin 

вывод, что это:

/usr/bin/ssh 

Теперь я хочу, чтобы это выглядело, как это, когда Я кд к нему

/usr/bin/ 

Я не могу понять, как сделать его умным, потому что я могу перебирает его работать только для этого, но то, что аб когда я хочу запустить этот же код на другой машине, а местоположение ssh - в другом месте.

+2

Вы пытаетесь найти ssh на своем пути? Установлен ли на этом сервере что-то вроде mlocate? –

+0

Я вижу, что никто не задал очевидный вопрос: почему вы пытаетесь «cd» указать местоположение исполняемого файла ssh? –

+0

хорошо использование ssh было простым примером. У меня есть программа, которую я хочу выполнить, и ее в каталоге, который я не могу найти, если я использую метод грубой силы. – shade917

ответ

3

Вы не хотите этого?

cd $(dirname $(which ssh)); 
+0

Как объяснить, что каждый бит делает в вышеуказанном? –

+0

Hm, что [dirname] (http://www.google.com/search?q=man+dirname), [который] (http://www.google.com/search?q=man+which) или [CD] (http://www.google.com/search?q=man+cd)? Или снаряды .. могут быть раковинами, которые нуждаются в объяснении, хм ... – Wrikken

+0

Я думал о запятой. –

0

Если вы пытаетесь найти, где команда ssh живет у вас есть несколько вариантов:

which ssh 

и

whereis ssh 

даст вам эту информацию (which даст вам один путь, в то время как whereis будут содержать пути со всеми ссылками на ssh)

Что касается find команды, изменить (стартовый) каталог, заданный в команде find:

find /usr/bin -name ssh 

начнет поиск в каталоге/USR/бен.

Это то, что вы пытаетесь сделать? Я не уверен на 100%, что понял последнюю часть вашего сообщения. Если нет, не могли бы вы перефразировать его, пожалуйста?

+0

видеть, что он может даже не находиться в каталоге/usr /, он может быть где угодно. – shade917

+0

Вам не нужен '| grep bin', потому что все результаты будут иметь «bin» в нем –

+0

, может быть, это мой недостаток опыта, но дело в том, что это может быть не в каталоге usr, что я имел в виду. например, он может быть в каталоге var или что-то еще – shade917

2

Является имя_директории то, что вы ищете?

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

head -1 часть только чтобы убедиться, что только одна вещь, которую получает передается Dirname, в противном случае она не будет выполнена.

0

Вы можете использовать xargs, чтобы получить часть каталога.

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

имя_директории программа, часть Coreutils, может быть использован для сдирать последнюю часть в последовательности имени пути:

dirname `find/-name ssh | grep bin` 

выведет

/usr/bin 

затем.

Смежные вопросы