Me gustaría usar echo
en bash para imprimir una cadena de caracteres seguida de solo un retorno de carro. He buscado en la página de manual y he descubierto que echo -e
hará que echo
interprete caracteres de escape de barra invertida. Usando lo que puedo decir echo -e 'hello\r'
y se imprimirá como esto¿Cómo hacer que echo interprete escapes de barra invertida y no imprimir una nueva línea final?
$>echo -e 'hello\r'
hello
$>
lo que parece que se manejó el retorno de carro correctamente. También encontré echo -n
en la página del manual se detendrá echo
de insertar un carácter de nueva línea y parece que funciona cuando hago esto
$>echo -n 'hello\r'
hello\r$>
El problema que estoy teniendo es en la combinación de ambos -e
y -n
. He intentado cada uno de echo -e -n 'hello\r'
, echo -n -e 'hello\r'
, echo -en 'hello\r'
y echo -ne 'hello\r'
y nada se imprime de este modo:
$>echo -ne 'hello\r'
$>
¿Hay algo que me falta aquí o puedo los -e
y -n
opciones no se pueden utilizar juntos?
'$> echo -ne 'hello \' ' dejará el cursor al comienzo de la línea que contiene el' hola '. Entonces, si su mensaje es más largo que el '$>' que tiene aquí, sobrescribirá el saludo. –
"no se imprime nada"? Seguramente obtendría '' $> llo'' porque su cadena de caracteres de 2 caracteres no sobrescribiría completamente los 5 caracteres de 'hola'. Tenga en cuenta que 'retorno de carro' no es lo mismo que 'nueva línea' (vea 'hombre ascii'). Por lo tanto, parece que ha reemplazado con éxito la nueva línea con retorno de carro, pero le sorprende que el retorno de carro no se comporte como una nueva línea. ¿Por qué querías hacer esto? Soy curioso. Además, sin las comillas, el shell interpreta la barra diagonal inversa como un carácter de escape, por lo que '\ r' simplemente se convierte en' r'. Eso significa que tu primer comando realmente imprime '' hellor'' no '' hello''. –
¿Ejecutó estos comandos en el mismo shell? 'echo -n hello \ r' debería tener exactamente el mismo resultado que' echo -ne hello \ r'; ambos imprimen '' hellor'' (sin una nueva línea, por lo que el mensaje aparece como '' hellor $> ''). El '-e' es irrelevante aquí porque no hay escape de barra invertida después de que el shell lo haya eliminado. 'echo -ne 'hello \ r'' o' echo -ne hello \\ r' ambos pasan el argumento' 'hello \ r'' a 'echo'. –