EDIT (ранее ответ был неправильным, я неправильно понял вопрос):
команда more
меняется конфигурация терминала.
Узнайте TTY, где вы запускаете свой ./a.out | more
и запустить эту команду из другого TTY (или любой другой therminal):
stty -F /dev/yourTTY echo
И вы будете иметь эхо снова на консоли
Возможно, вы используете псевдотерминал, но команда stty
должна работать.
Например:
- Узнайте свой текущий терминал:
ps ax | grep $$ | awk '{ print $2 }'
- Запускайте команды:
./a.out | more
- Открыть новый терминал и выполните следующую команду:
stty -F /dev/resultFromFirstStep echo
- Проверьте, что вы снова эхо на вашем первом терминале.
EDIT:
Кстати, если кому-то интересно, вы можете увидеть, как more
меняет терминал чтения в code source:
void set_tty() {
otty.c_lflag &= ~(ICANON|ECHO);
otty.c_cc[VMIN] = 1; /* read at least 1 char */
otty.c_cc[VTIME] = 0; /* no timeout */
stty(fileno(stderr), &otty);
}
Он забирая ECHO и ICANON.
Может ли быть разница между 'stdout' и' stderr'? Что в вашем коде? –
У вас есть псевдоним для "больше"? Если вы используете псевдоним более = меньше, тогда вы можете захотеть «экспортировать LESS = -X» –
@glennjackman № 'more is/bin/more' –