Настроить grep exclude dirs для каждого проекта

Нет необходимости в стирании, так как вы уже даете оба игнорирования.

Ignoreboth позаботится о дубликатах и ​​командах с пробелами.

Просто попробуйте игнорировать оба или удалить дубликаты.

"HISTCONTROL=ignoreboth"

Используйте только это и перезагрузите bash. Спасибо.

1
08.05.2019, 21:16
2 ответа

У меня работает следующий скрипт

#!/bin/bash

if [ -r.grepignore ]; then
    while read -r line; do
        if [[ "$line" =~ '#' ]] || [[ "$line" =~ ^$ ]]; then
            continue
        fi
        EXCLUDE="$EXCLUDE --exclude-dir=\"$line\""
    done <.grepignore
fi

eval grep -r "$EXCLUDE" '"$@"'

Сценарий проверяет, существует ли файл .grepignoreи доступен ли он для чтения. Если это так, он создает строку EXCLUDE, содержащую --exclude-dir="$line", для любой строки $lineв этом файле (без начального и конечного пробела ), при условии, что она не пуста или содержит #. Затем сценарий передает эту строку EXCLUDEв grep, а также добавляет аргументы, которые вы передали сценарию.

Чтобы выполнить скрипт, сохраните код в файле mygrep, сделайте его исполняемым с помощью chmod +x /path/to/mygrepи вызовите его с помощью /path/to/mygrep, а затем укажите любые параметры, которые вы указали бы для grepи, конечно же, по поисковому запросу.

1
27.01.2020, 23:30

Похоже, флаг --exclude-from=FILE— это то, что вам нужно. Вам придется вручную создавать и заполнять каждый проект -для конкретного FILEтакими записями, как:

onedir/*
twodir/*

Для удобства вы также можете создать псевдоним оболочки, чтобы запуск grepавтоматически вызывал флаг --exclude-from=FILE.

1
27.01.2020, 23:30

Теги

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