Как включить управление потоком в терминале MacOS?

Вопрос или проблема

В Linux, если я нажимаю Control-S, это приостанавливает вывод терминала, а затем Control-Q возобновляет вывод терминала.

Я хотел бы воспроизвести это поведение в MacOS, но, несмотря на попытки различных комбинаций ixon и ixoff, мне не удается заставить Control-S приостанавливать вывод.

Эксперимент:

$ cat
hello world # Нажимаю Control S
# Нажимаю foobar
# В Linux foobar не выводится.
# В MacOS foobar выводится.

Настройки терминала в Linux

speed 38400 baud; rows 58; columns 218; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc

Настройки терминала в MacOS

stty -a
speed 9600 baud; 43 rows; 175 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon ixoff ixany imaxbel iutf8
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
        -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;

Похоже, что настройка, которую я упустил, была:

stty -ixany

Согласно документации:

Если этот бит установлен, любой входной символ перезапускает вывод, когда вывод был приостановлен с помощью символа STOP. В противном случае только символ START перезапускает вывод.

Ответ или решение

Чтобы включить управление потоком в терминале macOS, что позволит вам использовать комбинации клавиш Control-S для приостановки вывода и Control-Q для его возобновления, выполните следующие шаги:

  1. Откройте терминал: Запустите приложение "Терминал" на вашем Mac.

  2. Настройка параметров терминала: Используйте команду stty, чтобы изменить параметры управления потоком. Вам нужно будет установить опции ixon и ixoff, а также отключить ixany.

    Введите следующую команду:

    stty ixon ixoff -ixany
    • ixon включает управление потоком, позволяя использовать символ контроля S (Control-S) для приостановки вывода.
    • ixoff включает символ контроля Q (Control-Q) для возобновления вывода.
    • -ixany гарантирует, что любые вводимые символы не будут автоматически разблокировать вывод, если он был остановлен.
  3. Проверка настроек: Вы можете проверить настройки терминала, выполнив следующую команду:

    stty -a

    Убедитесь, что в выводе перечислены ixon, ixoff и отсутствует ixany, что подтвердит, что настройки применены.

  4. Тестирование: Попробуйте запустить команду cat и напечатать что-нибудь, затем используйте Control-S, чтобы приостановить вывод. После этого нажмите Control-Q для возобновления вывода. Вы должны увидеть, что вывод действительно приостанавливается и возобновляется.

Теперь у вас должно получиться повторить поведение управления потоком, как в Linux. Если у вас возникнут дополнительные вопросы или потребуется другая помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...