Вы можете воспроизвести поведение, наблюдаемое с помощью cat
, манипулируя характеристиками терминала вашей оболочки с помощью команды stty
.
Когда терминал находится в каноническом режиме, ввод собирается в строки, редактирование строк разрешено и, возможно, стандартный ввод выводится на экран (Флаг IEXTEN ).
В неканоническом -режиме некоторые управляющие символы передаются оболочке.
Пример:
stty -icanon
cat > testfile # end with ctrl-c
#typed ls | space | backspace | ctrl-h | al | ctrl-d | ctrl-c
od -a testfile
0000000 l s sp del bs a l nl eot
0000011
Для возобновления канонического режима:
stty icanon
Для опроса текущего оконечного устройства:
stty
# OR for more info
stty -a
speed 9600 baud; rows 62; columns 255; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; 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
Вывод секции флагов этой команды таков, что предшествующий -
указывает, что флаг не установлен, поэтому icanon
включен, а -icanon
выключен для канонического флага.
Из справочной страницы:
Optional - before SETTING indicates negation. An * marks non-POSIX settings.