Псевдоним fish shell только в определенном каталоге

Вам необходимо исключить файлы из подпапок, подобных этой:

tar --wildcards --exclude='*/*' -xvzf images.tar.gz '*.jpg'

Пояснение:

 --wildcards

означает, что мы указываем файлы для извлечения с помощью подстановочного знака, т.е.*.jpg-указано позже

--exclude='*/*'

возможность исключить (из выбора для извлечения )все записи с /в них -т.е. все файлы в подпапках

-xvzf

eXtract, подробный вывод, сначала распаковать gunZip, архивировать из файла

images.tar.gz

имя архива, разумеется

'*.jpg'

шаблон имени файла -мы обещали tarодин, вот он -все, что заканчивается на .jpg.

1
17.10.2021, 01:40
1 ответ

Три возможности, которые я могу придумать, (помимо тех, что предложил Дамир ). Во-первых, если это вообще возможно, я бы просто проверил, находитесь ли вы в каталоге с помощью функции «ленивой -загрузки». Это похоже на то, что рекомендовал Дамир, но позволяет избежать накладных расходов, связанных с вашей конфигурацией запуска или исполняемым скриптом.

Ленивая -функция нагрузки -решение на основе

Создать~/.config/fish/functions/x.fish:

if [ (pwd) = "/path/to/project` ]
   ./x.py
else
    command x
end

Эта функция загружается только при первом вызове через x. Это позволяет избежать накладных расходов на добавление его в конфигурацию запуска. Это также все еще функция, поэтому она выполняется в текущей fishоболочке, а не запускает новую оболочку, как исполняемый скрипт.

Он также использует любую другую команду x, которая может быть установлена ​​в системе, если вы не находитесь в этом каталоге. Если вам это не нужно, просто удалите блок else.

Функция, которая создается при входе в каталог проекта

Если вам действительно нужно, чтобы функция существовала только тогда, когда вы находитесь в этом каталоге, есть еще два варианта. Во-первых, функции fish могут следить за изменением переменной и запускаться только тогда, когда это происходит. Эта переменная может быть $PWDдля наблюдения за изменением каталога.

Добавьте следующее в~/.config/fish/conf.d/create_x.fish:

function create_x --on-variable PWD
    if [ "$PWD" = "/path/to/project" ]
        function x
           ./x.py
        end
    else
        functions --erase x
    end
end

Для этого требуется, чтобы функция create_x.fishзагружалась при запуске, но она будет работать только при смене каталогов. Это определенно менее эффективно, чем первый вариант.

Подсказка -на основе функции

Наконец, вы можете изменить функцию приглашения для проверки текущего каталога. Это кажется расточительным, но:

  • funced fish_prompt

  • Добавьте следующее внизу:

    functions --erase x
    if [ (pwd) = "/path/to/project" ]
        function x
           ./x.py
        end
    end
    
  • funcsave fish_prompt

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

funcsaveпомещает копию «обычного» fish_promptв ваш каталог ~/.config/fish/functions. Удалите его, чтобы вернуться к нормальной функциональности подсказки.

Определенно, по возможности выбирайте первый вариант:-)

2
17.10.2021, 05:15

Теги

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