У меня есть ~/bin
каталог (который у меня есть PATH
), где я храню много маленьких или двухстрочных скриптов. Некоторые из них просто cd
попадают в каталог и запускают команду для файла, например vim
или чего-то подобного . Но у меня также есть много псевдонимов в моем .bash_aliases
файле, которые служат той же цели.
Как вы решаете между написанием небольшого сценария bash и написанием псевдонима? Имеет ли значение вообще, по какому пути вы идете?
Ответы:
Если я использую их достаточно часто, чтобы оправдать накладные расходы на их загрузку в каждую оболочку. Я напишу их как функции.
Если они относятся к конкретному проекту, я мог бы записать их как набор псевдонимов и функций, которые могут быть включены в оболочку, когда я работаю над этим проектом.
Только если они работают в автономном режиме, в моем ~ / bin что-нибудь превращается в скрипт. Есть некоторые лайнеры, которые в основном являются псевдонимами, но они предназначены для запуска из других мест, кроме оболочек (например, запускать запросы в других программах). По большей части они должны быть довольно существенными сценариями.
источник
В общем, функции сценариев оболочки более гибкие, чем псевдонимы, и вы должны их предпочесть. Например, в псевдониме вы не можете проверить, является ли ожидаемое число аргументов или их типы. Я согласен с Калебом, что псевдонимы хорошо подходят для простых однострочных, например
alias cp='cp -i'
источник
Для всего более сложного подстановки строки одной команды, сценарий, вероятно, является более подходящим. Кроме того, все, что будет использоваться другими сценариями или может использоваться другими людьми, вероятно, лучше использовать в качестве сценариев. Хотя запуск программ из чужого каталога bin не является хорошей идеей, это лучше, чем поиск файла чьего-либо личного псевдонима.
Псевдонимы лучше всего подходят для персонализации вашей интерактивной среды. Например,
e='emacs -nw'
и тому подобное.источник
Я использую самый простой подход.
В основном, если команда не имеет параметров, я обычно использую псевдонимы.
Если команда имеет параметры, я использую функцию.
например, создание и переход в каталог:
Я также использую функцию, если команда использует установленную функцию, которая сама имеет параметры
например, добавив -v к git:
источник