Неожиданное поведение отступа, когда я устанавливаю терминал в сырой режим - почему это происходит?

27

Исходя из того, что я прочитал, когда терминал находится в необработанном режиме, символы не обрабатываются драйвером терминала, а передаются напрямую.

Я установил терминал в необработанном режиме, используя команду stty raw, и заметил, что вывод выводится вправо каждый раз, когда места больше нет. Это то, что я имею в виду:

введите описание изображения здесь

Почему это происходит ?!

Павел
источник

Ответы:

45

Один из sttyпараметров ( onlcr) указывает драйверу терминала преобразовать новую строку (которая фактически является переводом строки ASCII) в возврат каретки плюс перевод строки.

Unix-подобные системы просто пишут новую строку в конец строки, позволяя драйверу терминала делать правильные вещи (конвертировать перевод строки в возврат каретки плюс перевод строки).

Возврат каретки «идет влево» и перевод строки «идет вниз».

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

Томас Дики
источник
и для всестороннего обзора, вы можете взглянуть на действительно хороший пост @ stéphane-chazelas: unix.stackexchange.com/questions/151916/… , который показывает много интересных вещей о терминальных преобразованиях (и их побочных эффектах) , В двух словах: только "ssh -t" для использования интерактивных команд, но в ваших сценариях используйте просто ssh, если вы хотите получить именно то, что сгенерировала команда (например: файлы tar, созданные на одной стороне ssh и доступные для чтения / записи) с другой стороны: не добавляйте "-t", иначе это может (... будет?) испортить ваши файлы)
Оливье Дюлак