Chciałbym użyć echo
w bash, aby wydrukować ciąg znaków, po którym następuje tylko powrót karetki. Przejrzałem stronę podręcznika i stwierdziłem, że echo -e
spowoduje interpretację znaków ułamkowych odwrotnych ukośników. Korzystanie że mogę powiedzieć echo -e 'hello\r'
i będzie drukować takJak interpretować echo odwrotne ukośniki odwrotne, a nie drukować końcowy znak nowej linii?
$>echo -e 'hello\r'
hello
$>
Wygląda więc na to, że zajmował się powrotu karetki prawidłowo. Znalazłem również echo -n
w manualu zatrzyma echo
z wstawiając znak nowej linii i wygląda na to, że działa, kiedy to zrobić
$>echo -n 'hello\r'
hello\r$>
Problem Mam to w połączeniu zarówno -e
i -n
. Próbowałem każdej echo -e -n 'hello\r'
, echo -n -e 'hello\r'
, echo -en 'hello\r'
i echo -ne 'hello\r'
i nic nie zostanie wydrukowany tak:
$>echo -ne 'hello\r'
$>
Czy coś mi tu brakuje lub może opcje -e
i -n
nie mogą być używane razem?
'$> echo -ne 'hello \ r'' spowoduje opuszczenie kursora na początku wiersza zawierającego' hello '. Więc jeśli twój monit jest dłuższy niż '$>', który masz tutaj, to nadpisze powitanie. –
"nic nie zostanie wydrukowane"? Z pewnością dostaniesz '' $> llo', ponieważ twój 2-znakowy tekst zachęty nie całkowicie zastąpi 5 znaków "cześć". Zwróć uwagę, że "powrót karetki" nie jest tym samym, co "nowa linia" (patrz "man ascii"). Wygląda więc na to, że udało ci się zastąpić nową linię zwrotem karetki, ale jesteś zaskoczony, że powrót karetki nie zachowuje się jak nowa linia. Dlaczego chcesz to zrobić? Jestem ciekawy. Również bez cudzysłowów powłoka interpretuje ukośnik odwrotny jako znak ucieczki, więc '\ r' po prostu staje się' r'. Oznacza to, że twoje pierwsze polecenie wypisuje "hellor", a nie "' cześć ". –
Czy uruchomiłeś te polecenia w tej samej powłoce? 'echo -n hello \ r' powinno wypisać dokładnie to samo, co' echo -ne hello \ r'; obaj drukują "hellor" (bez nowej linii, więc pytanie pojawia się jako "hellor $>"). "-e" nie ma tutaj znaczenia, ponieważ po usunięciu powłoki nie ma ucieczki wstecz. 'echo -ne 'hello \ r'' lub' echo -ne hello \\ r' oba przekazują argument' 'hello \ r' 'do' echo'. –