Es feo, pero lo uso en sistemas más antiguos con solo sh disponible como hosts ESXi:
cat `printf %s $HISTFILE`
Это единственный случай, когда я предлагаю использовать псевдонимы bash, а не функции. В руководстве bash написано For almost every purpose, aliases are superseded by shell functions
, это исключение.
Обычно, если вы скажете
perl script *.txt
, то оболочка расширит *.txt. Это можно отключить с помощью «set +f». Проблема с использованием функции заключается в том, что к моменту вызова функции оболочка уже расширила шаблон, поэтому хитрость заключается в использовании комбинации псевдонима и функции.
alias script="set +f ; _script"
_script(){ set -f ; perl script "$@" ; }
Затем бег
script *.txt
будет обрабатываться как "set +f ; _script *.txt", поэтому расширение шаблона отключается до вызова функции скрипта _.Функция снова включает раскрытие шаблона, а затем вызывает сценарий perl.
Другой способ избежать этой проблемы — использовать кавычки оболочки и сказать
perl script '*.txt'
и кавычки предотвратят расширение шаблона оболочкой.