В zsh, как установить псевдоним для 'меньше' для получения вывода stderr?

Это рассмотрено в Переменное расширение:

${parameter:?word}

If parameter is null or unset, the expansion of word (or a message to that effect if word is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of parameter is substituted.

Поэтому, если при выполнении скрипта отсутствует аргумент, то переменная cmd становится help и записывается в оболочку в стандартном виде и обратно.

Однако, она просто считывается и не выполняется. Если вы окружите его бэктиками, то он будет выполнен и запустит функцию Usage funtion:

help() {
  echo "Usage: $0 {build|upload|log}"
}
cmd=${1:? `help`}

К сожалению, в ней все равно будет присутствовать stderr, так как для этого и предназначено расширение переменной.

Вы можете сделать следующее:

cmd=${1:-help}
$cmd

1
02.10.2014, 06:08
2 ответа

Попробуйте:

alias -g LL='2>&1 | less'

У вас было место в назначении псевдонима, что привело к неудаче псевдонима.

1
27.01.2020, 23:38

Также можно попробовать

alias -g LL='|& less'

|& - это сокращение для 2>&1 |, так что в принципе обе версии должны работать. Возможно, Вы использовали псевдонимы ранее менее , а теперь эта команда означает что-то другое?

.
1
27.01.2020, 23:38

Теги

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