Na przykład, jeśli tail -f
tworzę plik lub read
wprowadzam dane wejściowe użytkownika, <Enter>
wygeneruje ^M
w terminalu zamiast kończyć read
lub dodawać nowy wiersz do standardowego wyjścia. ^J
działa w porządku.
Wchodzę ssh
w system Ubuntu, jeśli to ma znaczenie. Zdarza mi się to zarówno w Zsh, jak i Bash. Jednym z rozwiązań, w które grałem, jest ponowne mapowanie ^M
do ^J
w zsh, ale wygląda na to, że nie rozwiązałoby to problemu z rootem. Czy ktoś wie, co może być tego przyczyną?
Edycja: Aby odpowiedzieć na niektóre pytania, korzystam ssh
z Ubuntu z OSX. Używam iTerm i Zsh. Zapomniałem też wspomnieć, że używam tmux na maszynie Ubuntu.
Edycja 2: Nieodebrane pytanie. Kiedy piszę Ctrl-V Enter
, dostaję ^M
(zarówno w OSX, jak i Ubuntu).
Edycja 3: Na OSX i Ubuntu echo $TERM
produkuje screen-256color
.
źródło
Odpowiedzi:
W przypadku, gdy ktoś inny ma ten problem, najprawdopodobniej jest to problem z ustawieniem linii zacisków stty, a nie problem TERM. Jeśli to się powtórzy, spróbuj uruchomić
stty sane
i daj nam znać, czy to rozwiązuje problem.źródło
Spróbuj uruchomić,
stty -a
aby wyświetlić ustawienia terminala. Podejrzewam, że twojeicrnl
ustawienie nie jest ustawione i będzie pokazane jako-icrnl
(znak minus oznacza, że jest wyłączone) zamiast włączania zwykłego ustawienia. Oto jak zwykle mój terminal jest konfigurowany po zalogowaniu:I nie mam problemu z zakończeniami linii: albo return (^ M), albo enter (^ J) zakończy linie wejściowe. Ale jeśli się wyłączę,
icrnl
kody ^ M nagle pojawiają się za każdym razem, gdy rozmawiam z programem i wciskam Enter:Kod
icrnl
oznacza „zamień powrót karetki w nowe linie” i ukrywa przed uruchomionym programem, że możesz pisać ^ M, gdy Unix naprawdę chce ^ J. Stare klawiatury posiadały osobny klawisz Return i Enter (gdzie Return zwykle przechodził przez formularz, a Enter go przesyłał), ale dzisiaj zwykle mamy tylko jeden klawisz kończący wiersz, więc to ustawienie terminala pomaga połączyć dwa znaczenia.Dodaj
stty icrnl
polecenie do swojego.profile
lub.bashrc
jeśli okaże się, że to jest rzeczywiście ustawienie problemu.źródło