На нашем сервере Solaris я обнаружил, что grep -r
это не работает, и это обычный способ, которым я пользуюсь grep
. Кажется, что egrep
имеет такое же поведение.
Учитывая, что у меня нет контроля над машиной, есть ли способ grep
выполнить рекурсивный поиск? Или мне нужно передать вывод find
в grep
?
Ответы:
Я не знаком с Solaris, но если вы переходите с GNU / linux на Solaris, вы обнаружите, что большинство команд будут немного отличаться. GNU-версия инструментов Unix имеет дополнительные функции, отсутствующие в "проприетарных" Unixes.
Вы можете скачать GNU grep (s) здесь, затем скомпилировать и установить.
Если у вас есть root-доступ, вы можете запустить configure --prefix = / usr / local, чтобы утилиты устанавливались в / usr / local
Если у вас нет доступа с правами root, вы можете запустить configure --prefix = $ {HOME}, чтобы утилиты устанавливались в ваш домашний каталог.
источник
--prefix=${HOME}}/.local
вероятно, более целесообразно ... не нужно загромождать домашний каталогshare
иlib
папкиshare
Это должен быть мусорный каталог!»rm -rf
Doh!Если вы хотите использовать
find
, это будет самый быстрый способ:Однако Gnu grep, скорее всего, уже установлен на вашем компьютере.
Это часть установки по умолчанию на Solaris 11 in
/usr/gnu/bin/grep
. То же самое для Solaris 10, где вы найдете его/usr/sfw/bin/ggrep
. В старых выпусках он мог быть установлен из sunfreeware или других репозиториев, проверить/usr/local/bin/grep
и/opt/csw/bin/grep
для общих мест.источник
-name
опцию сfind
.-name
не будет искать внутри файлов, а будет только искать имена файлов, что не то, что запрашивает OP.Вместо этого используйте ggrep, если он установлен.
Например, найдите «mysearchstring» из текущего каталога во всех подкаталогах (
-R
), покажите имя файла и путь для match (-H
) и игнорируйте двоичные файлы (-I
). Не забывайте в*
конце команды.ggrep находится в.
/usr/sfw/bin
Вы можете добавить его в свой профиль с помощью команды EXPORT, чтобы вы могли вызывать его из командной строки напрямую.Версия Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
источник
ggrep
действительно GNU grep. Благодарность!Загрузите автономный
ack
скрипт на Perl с http://betterthangrep.com/ , вставьте его в свой$HOME/bin
и научитесь использовать его вместо этого. Я считаю, что это, как рекламируется, лучше, чем grep, для многих применений в моей повседневной работе по разработке.источник
У соляриса grep нет
-r
варианта.Вы можете использовать следующую команду.
источник
find /opt/ -name "*.sh" -type f | xargs grep "start"
Да, вам понадобится GNU grep. Лично я не пропустите «-r» флаг , потому что вы можете сделать то же самое с комбинацией
find
и ,grep
но это напоминает , что наличие инструментов GNU доступны на коробке Solaris является то , что я хотел бы рассмотреть наилучшую практику. Итак, поехали:Я бы не стал загружать исходный код из разных мест в Интернете, а затем создавать себя. Это не обязательно. Если вы просто хотите, чтобы в Solaris были доступны стандартные инструменты GNU, выполните следующие действия:
Если вы используете Solaris 10, вы должны получить Solaris 10 Companion Disk. Раньше она распространялась Sun, но сейчас она живет здесь . Лично я бы сделал привычкой всегда устанавливать содержимое этого диска или, по крайней мере, самые важные части GNU. Сделайте это частью вашего JumpStart (или что вы используете) для новых серверов в вашей организации!
Если вы находитесь на Solaris 11, жизнь намного проще. Инструменты GNU обычно устанавливаются по умолчанию, но не все они распространяются в локальные зоны. IFS, система упаковки в Solaris 11, делает вашу жизнь намного проще, поэтому вам действительно стоит перейти на Solaris 11 (и по многим другим причинам). Вот список пакетов, которые вы должны всегда иметь в наличии для любой зоны:
и если вы используете хост для целей разработки / сборки, вы можете добавить:
Лично я бы включил вышеописанное (возможно, меньше инструментов разработчика) в стандартную установку моей компании для новых серверов / зон. Системные администраторы Solaris часто настаивают на том, чтобы отличаться от мира Linux, но в этом нет необходимости. Просто сделайте это и сделайте это частью вашей установки по умолчанию. Вы не пожалеете об этом.
источник