Могу ли я использовать команду `which` для частичного совпадения?
347
ironsand
Я хочу найти все программы с такими именами, как "gcc", "gcc-4.2", "gcc-4.9" и так далее.
Чтобы найти все двоичные файлы, которые я пытался с which -a gcc* .
Но «*» не распознается как «любой» с which командой.
Есть ли способ найти все программы в переменной окружения PATH по совпадению с образцом?
В большинстве оболочек вы можете просто набрать `gcc` и дважды нажать клавишу Tab для его автозаполнения. Это работает для вас или какова ваша ситуация? То есть зачем тебе это?
slhck 11 лет назад
2
В UNIX и Linux `*` расширяется перед тем, как программа выполняется. Это означает, что интерпретация не зависит от программы. В этом случае `gcc *` раскрывается в текущем каталоге. Вот почему это не работает.
MSalters 11 лет назад
1
В OSX по умолчанию gcc основан на llvm, который помещается в `/ usr / bin / gcc`. и с помощью `brew` установленный gcc помещается в` / usr / local / bin / gcc-4.x`. Я хотел знать, что есть другие программы `gcc- *`. Конечно, я могу использовать `find`, но это занимает некоторое время.
ironsand 11 лет назад
0
Спасибо MSalters! Мне не было ясно об этом. Я думал, что это зависит от программ.
ironsand 11 лет назад
0
Если вы просто ищете те, что есть в вашей переменной $ PATH, самый простой способ - дважды нажать вкладку, как предложено в @slhck.
terdon 11 лет назад
1
Спасибо, Тердон. Я неправильно понял, что он написал. Я ударил только один раз.
ironsand 11 лет назад
0
2 ответа на вопрос
4
justbrowsing
Существует BASHвстроенная команда, compgenкоторая может быть использована для отображения всех команд, функций, псевдонимов и встроенных модулей .
На самом деле все функции в which( -aстатусы выхода, множественные входы совпадений файлов) также могут быть легко добавлены в этот контекст сценария оболочки, но я оставляю это как упражнение для читателя.