Intereting Posts
Не возникают ли специальные символы на дорожках при подключении сетевых ресурсов? Невозможно установить переменную LC_TIME для текущего процесса Мониторинг кластера графического процессора USB-накопители Automount без требования GUI (замена halevt) Ошибка создания и компиляции GCC 5.2.0 с нуля на Vortex86DX Найти, какие файлы в папке не известны менеджеру пакетов apt команда прогресса не показывает прогресс mv При установке обновленной версии Linux, как повторно использовать старый домашний каталог? Автоматическая копия для сканирования нескольких URL-адресов не может запустить команду «lspci», используя rsh из пакетного файла Windows Сопоставьте ключ символа с некоторым ключом-модификатором ? проблема с find (shell script) Почему непривилегированные пользователи не могут вкладывать монтирования FUSE, но они могут монтировать FUSE внутри NFS с помощью root_squash? Как просмотреть все команды с момента последней установки системы (5 месяцев)? Как постоянно менять цвет STDOUT и STDERR на серый?

Рекурсивный поиск не работает для grep on solaris

На нашем сервере Solaris я обнаружил, что grep -r не работает, что является обычным способом использования grep . Кажется, что egrep имеет такое же поведение.

Учитывая, что у меня нет контроля над машиной, есть ли способ, чтобы grep выполнял рекурсивный поиск? Или мне нужно вывести вывод find в grep ?

Я не знаком с Solaris, но если вы переключаетесь с GNU / linux на Solaris, вы обнаружите, что большинство команд будут немного отличаться. Версия Unix для GNU имеет дополнительные функции, отсутствующие в «фирменных» Unix.

Вы можете скачать GNU grep (ы) здесь, затем скомпилировать и установить.

Если у вас есть root-доступ, вы можете запустить configure –prefix = / usr / local. Чтобы утилиты устанавливались в / usr / local

Если у вас нет доступа root, вы можете запустить configure –prefix = $ {HOME}. Чтобы утилит устанавливался в ваш домашний каталог

Если вы хотите использовать find , это будет самый быстрый способ:

 find . -type f -exec grep pattern {} + 

Однако Gnu grep, скорее всего, уже установлен на вашем компьютере.

Это часть установки по умолчанию на Solaris 11 в /usr/gnu/bin/grep . То же самое для Solaris 10, где вы найдете его в /usr/sfw/bin/ggrep . В старых версиях он мог быть установлен из sunfreeware или других репозиториев, проверьте /usr/local/bin/grep и /opt/csw/bin/grep для общих местоположений.

Вместо этого используйте ggrep, если он установлен.

Например, найдите «mysearchstring» из текущего каталога до всех подкаталогов ( -R ) и покажите имя файла и путь для совпадений ( -H ) и проигнорируйте двоичные файлы ( -I ). Не забывайте * в конце команды.

 /usr/sfw/bin/ggrep -H -R -I "mysearchstring" * 

ggrep находится в /usr/sfw/bin Вы можете добавить его в свой профиль с помощью команды EXPORT, чтобы вы могли напрямую ее вызвать из командной строки.

 PATH=$PATH:/usr/sfw/bin export PATH 

Версия Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise

Загрузите автономный скрипт ack perl из http://betterthangrep.com/ , поместите его в свой файл $HOME/bin и научитесь его использовать. Я считаю, что это, как рекламируется, лучше, чем grep для многих применений в моей повседневной работе.

Solaris grep не имеет опции -r .

Вы можете использовать следующую команду.

 find . -type f | xargs grep 'sometext' 

Да, вам понадобится GNU grep. Лично я не пропускаю флаг «-r», потому что вы можете сделать то же самое с комбинацией find и grep но это напоминает, что наличие инструментов GNU, доступных в вашей коробке Solaris, – это то, что я считаю лучшей практикой. Итак, вот мы идем:

Я бы не стал загружать исходный код из разных мест в Интернете, а затем строить самостоятельно. Это не обязательно. Если вы просто хотите, чтобы в Solaris были доступны обычные инструменты GNU, сделайте следующее:

Если вы находитесь на Solaris 10, вы должны получить компакт-диск Solaris 10 Companion. Раньше это распространялось Sun, но теперь оно живет здесь . Лично я хотел бы всегда устанавливать содержимое этого диска или, по крайней мере, наиболее важные части GNU. Сделайте его частью своего JumpStart (или любого другого использования) для новых серверов в вашей организации!

Если вы работаете в Solaris 11, жизнь намного проще. Обычно инструменты GNU устанавливаются по умолчанию, но не все они распространяются в локальные зоны. IFS, система упаковки на Solaris 11, делает вашу жизнь намного проще, поэтому вы действительно должны перейти в Solaris 11 (множество других причин). Список пакетов, которые вы должны всегда учитывать для любой зоны, следующие:

 упак: // Солярис / архиватор / гну-тар
 PKG: // Solaris / разработчик / гну-Binutils
 упак: // Солярис / диагностики / топ
 PKG: // Solaris / файл / гну-Coreutils
 PKG: // Solaris / файл / гну-Findutils
 упак: // Солярис / текст / поглазеть
 PKG: // Solaris / текст / гну-Diffutils
 упак: // Солярис / текст / гну-Grep
 упак: // Солярис / текст / гну-СЭД

и если вы используете хост для цели разработки / сборки, вы можете добавить:

 упак: // Солярис / разработчик / строить / гну-макияж
 упак: // Солярис / разработчик / строить / сделать
 упак: // Солярис / разработчик / НКУ-45
 упак: // Солярис / система / заголовок
 упак: // Солярис / разработчик / строить / Autoconf
 упак: // Солярис / разработчик / строить / Automake-110

Лично я хотел бы сделать вышеописанную (возможно, меньше инструменты для разработчиков) частью установки моей компании по умолчанию для новых серверов / зон. Системные администраторы Solaris часто настаивают на том, что они отличаются от мира Linux, но в этом нет необходимости. Просто сделайте это и сделайте его частью вашей установки по умолчанию. Вы не пожалеете об этом.