Как расширить псевдонимы bash

Да, похоже, что RedHat решил скомпилировать systemd без systemd-timesyncd .

11
10.01.2016, 03:13
1 ответ

Функция - лучший вариант, чем расширяемый псевдоним.

grep_options=( )
grep() {
  exec /usr/bin/grep "${grep_options[@]}" ${GREP_OPTIONS} "$@"
}

Таким образом, у вас есть два варианта добавления параметров в среду:

  • Изменить массив grep_options ; это правильно поддерживает параметры с пробелами, буквальные символы глобуса и другие угловые случаи:

     grep_options + = (--exclude-dir = classes --exclude-dir = '* /. sass-cache') 
     
  • Используйте традиционную скалярную переменную GREP_OPTIONS , несмотря на ее подводные камни (см. BashFAQ # 50 , чтобы понять некоторые из них):

     GREP_OPTIONS + = '--exclude-dir = classes' 
     

Тем не менее, если вы хотите, чтобы ваши параметры отражались экземплярами grep , вызываемыми вне оболочки, ни псевдоним, ни функция не подойдут. Вместо этого вам понадобится сценарий оболочки, помещенный в ваш PATH раньше, чем настоящая команда grep . Например:

# in ~/.bash_profile
[[ -e ~/bin ]] && PATH=$HOME/bin:$PATH

... и в ~ / bin / grep :

#!/bin/bash

# load overrides to grep_options on GREP_OPTIONS from local dotfiles
source ~/.bash_profile
source ~/.bashrc

# ...and use them:
exec /usr/bin/grep "${grep_options[@]}" ${GREP_OPTIONS} "$@"
2
27.01.2020, 19:57

Теги

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