псевдоним составной команды на левой стороне в Bash - PullRequest
3 голосов
/ 08 июня 2011

У меня есть команда (в Linux Bash), которую я хочу запретить запуску какой-либо конкретной опции.Тем не менее, я хочу запустить эту команду с другими параметрами.Так, к примеру, все в порядке:

command opt1
command opt2

Но я хочу отключить

command badopt

Я думал об этом, наложив псевдоним на несуществующую команду в моем профиле, например

alias "command badopt"=djskagldjkgldasg

но это не похоже на работу.Любые другие предложения (легко) отключить мою способность использовать эту конкретную опцию, сохраняя при этом мою способность использовать другие опции?

Ответы [ 2 ]

3 голосов
/ 08 июня 2011
$ cat >> $HOME/.bashrc
shutdown () {
  if [ "x$1" = x-h ]; then
    echo Please do not run shutdown with the -h option.
    return
  fi
  /sbin/shutdown "$@"
}

# обновлено

0 голосов
/ 09 июня 2011

bash - это то, что вы хотите.Предполагая, что команда, которую вы хотите перехватить, называется «foo»:

foo () {
    case "$1" in 
        badopt) 
            echo "do not push this button again" >&2
            return 1
            ;;
    esac
    command foo "$@"
}

Ключевое слово command используется для предотвращения рекурсивного вызова функции.

...