Запрос псевдонима Bash

Я всегда использовал Для Каждого...

5
задан ae. 25 November 2009 в 23:28
поделиться

4 ответа

Как насчет использования функции? Добавьте это в свой .bashrc:

function searchFiles() {
       find . -name \*."$1" -print0 | xargs -0 grep --color -n "$2"
}

, а затем используйте его как:

$ searchFiles c include

8
ответ дан 18 December 2019 в 11:57
поделиться

Вы можете использовать псевдоним, но использование функции, как показывает Гонсало, - разумный поступок.

alias searchFiles=sh\ -c\ \''find . -name \*."$1" -type f -print0 | xargs -0 grep --color -Hn "$2"'\'\ -

Независимо от того, функция или псевдоним, я рекомендую использовать -print0 с помощью найдите и -0 с xargs . Это обеспечивает более надежную обработку имен файлов (чаще всего, пробелы в именах файлов).

5
ответ дан 18 December 2019 в 11:57
поделиться

Пока функция работает, ее нельзя вызывать из других программ и скриптов (без особых проблем). (С псевдонимом будет та же проблема.) Я бы выбрал отдельный сценарий, так как похоже, что вы хотите вызвать его напрямую:

#!/bin/bash
# since you're already using bash, depend on it instead of /bin/sh
# and reduce surprises later (you can always come back and look at
# porting this)

INCLUDE="*.$1"
PATTERN="$2"
grep --color -n "$PATTERN" --recursive --include="$INCLUDE" .

(Нет необходимости искать с тем, что у вас есть.)

Если бы это было только было бы проще использовать функцию внутри другого скрипта, а не напрямую.

1
ответ дан 18 December 2019 в 11:57
поделиться

Функции оболочки хороши, но вы также можете взглянуть на ack . Он обрабатывает поиск по конкретному файлу с цветовым кодированием, так что ваш пример будет просто

ack --php somepattern
1
ответ дан 18 December 2019 в 11:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: