Можно ли определить чувствительные к каталогу псевдонимы в zsh (или любой другой оболочке)?

Я хочу использовать разные псевдонимы (или, возможно, один и тот же псевдоним по-разному) в зависимости от текущего рабочего каталога. Например, я мог бы использовать l как сокращенное для ls с некоторыми дополнительными опциями. Я хочу использовать два варианта:

 alias l="ls --sort=extension" # variant A alias l="ls --quoting-style=literal" # variant B 

Обычно я хотел бы использовать вариант A. Однако я хочу использовать вариант B при отображении изображений, то есть когда мой рабочий каталог ~/pictures . (Это всего лишь минимальный пример. Мой фактический прецедент более сложный.)

Я знаю, что я мог бы просто написать функцию l() с дифференцированием case на выходе $(pwd) . Тем не менее, я хочу более надежное решение, которое позволяет мне переименовывать конкретные каталоги без изменения псевдонима (и это не .zshrc моему .zshrc ).

Но возможно ли перезаписывать или добавлять псевдонимы, например, настраивая локальный .zshrc в соответствующем каталоге (например, это возможно для vim и локального .vimrc )?

Кроме того, возможно ли это в bash или любой другой оболочке?

  • Почему urxvtc не активирует функции zsh при вызове с аргументом «-c»?
  • Как увидеть man-страницу предыдущей команды?
  • Связь между исполняемым скриптом zsh и конфигурацией compsys / zstyle
  • Как изменить оболочку по умолчанию на ZSH - chsh говорит «Недопустимая оболочка»
  • Обратитесь к элементу `dirs`
  • Заполнение имени файла zsh без учета регистра
  • Как получить полное завершение в диалоговом окне запуска приложения?
  • Тестирование диска на стоянке
  • 3 Solutions collect form web for “Можно ли определить чувствительные к каталогу псевдонимы в zsh (или любой другой оболочке)?”

    Вы можете создать функцию или скрипт, чтобы проверить файл в текущем каталоге и изменить поведение на основе этого:

     l() { if [ -f ./.ls-literal-quote ] ; then ls --quoting-style=literal "$@" else ls --sort=extension "$@" fi } 

    Что-то вроде этого позволит вам сохранить конфигурацию в самом каталоге, а не в каком-то централизованном месте, если это то, что вы хотите.

    Теперь это требует засорения задействованных каталогов дополнительными файлами, но вы можете обойти это, используя расширенные атрибуты (если ваша система поддерживает это).

    Если вы хотите, чтобы чистый псевдоним был надежным, сложным и расширяемым, первым вариантом, который приходит на ум, является создание сценария bona-fide (например, l ), который вы храните в ~/bin . Затем вы можете добавить этот каталог в свой PATH или создать псевдоним, который явно вызывает его для вас.

    Конечно; просто добавьте псевдоним в некоторый код оболочки, который выполняет тест для вас:

     alias l="[[ $PWD =~ /pictures$ ]] && ls --quoting-style=literal || ls --sort=extension" 
    Linux и Unix - лучшая ОС в мире.