W każdej dystrybucji Linuksa, z której korzystałem przez ostatnie 10 lat, pojawiały się następujące niedogodności: uruchamiasz program w terminalu za pomocą bash. Po zatrzymaniu lub przerwaniu programu, cokolwiek wpiszesz, wydaje się czasem niewidoczne. Następnie możesz wprowadzić polecenie „reset”, a ekran zostanie wyczyszczony, a kursor ponownie widoczny.
Z powodu tego błędu zawsze zmieniałem powłokę na zsh za każdym razem, gdy loguję się do nowego terminala. W ZHS niewidzialny błąd tekstowy nigdy się nie zdarza. Ponieważ błąd istnieje już od ponad 10 lat, zacząłem podejrzewać, że jest to cecha bash. Czy ktoś może mi powiedzieć, do czego jest dobry?
Ponadto, gdzie faktycznie znajduje się strona główna / narzędzie do śledzenia błędów. Wydaje się, że Bash.org dotyczy „bashowania IT”, podobnie jak kanał IRC #bash. Dlaczego większość dystrybucji Linuksa zawiera powłokę, na którą tak trudno jest wyrazić opinię, skoro kilka alternatyw jest co najmniej tak samo dobrych?
cat
pliki binarne ...Odpowiedzi:
To tylko znaczy, że w Zsh nie możesz zrobić czegoś takiego:
W bash powyższe polecenie działa zgodnie z oczekiwaniami - wyłącz echo polecenia. Właśnie wypróbowałem w Zsh - nie działa. Kto ma błąd? ;)
Wyłączenie echa jest możliwe dzięki sekwencjom ESC, więc jeśli twój program losowo wysyła sekwencje binarne do terminala, {lub gdy CTRL- \ jakiś program zorientowany na ekranie), czasami zachowuje się podobnie
stty -echo
i musiszreset
. To nie jest błąd - po prostu tak działają terminale (i emulatory terminali).Co dziwne, dlaczego w Zsh
stty -echo
nie działa.źródło
ttyctl -f
zabronić wprowadzania zmian w trybach terminalowych ittyctl -u
zezwolić na nie.