Perilaku indentasi yang tidak terduga ketika saya mengatur terminal ke mode mentah - mengapa ini terjadi?

27

Berdasarkan apa yang saya baca, ketika terminal dalam mode mentah, karakter tidak diproses oleh driver terminal, tetapi dikirim langsung.

Saya mengatur terminal dalam mode mentah menggunakan perintah stty raw, dan saya perhatikan bahwa output indentasi ke kanan setiap kali sampai tidak ada lagi ruang. Inilah yang saya maksud:

masukkan deskripsi gambar di sini

Mengapa perilaku ini terjadi ?!

paul
sumber

Jawaban:

45

Salah satu sttypengaturan ( onlcr) memberi tahu driver terminal untuk mengonversi baris baru (yang sebenarnya merupakan umpan baris ASCII) ke carriage-return plus line-feed.

Sistem seperti Unix hanya menulis baris baru untuk mengakhiri baris, membiarkan pengemudi terminal melakukan hal yang benar (konversi baris baru ke carriage-return plus line-feed).

Carriage-return "belok kiri" dan line-feed "turun".

Saat Anda mengatur terminal ke mode mentah, baris baru tidak akan lagi dikonversi ke carriage-return plus feed-line. Karena tidak memiliki carriage-return, Anda mendapatkan efek tangga itu .

Thomas Dickey
sumber
dan untuk tampilan mendalam, Anda dapat melihat @ stéphane-chazelas postingan yang sangat bagus: unix.stackexchange.com/questions/151916/… , yang menunjukkan banyak hal menarik tentang konversi terminal (dan efek sampingnya) . Singkatnya: hanya "ssh -t" untuk menggunakan perintah interaktif, tetapi dalam skrip Anda gunakan hanya ssh jika Anda ingin mendapatkan hal yang sama persis dengan perintah yang dihasilkan (mis: file tar dibuat di satu sisi ssh dan baca / tulis pada sisi lain: jangan tambahkan "-t" atau itu bisa (... akan?) mengacaukan binari Anda)
Olivier Dulac