E 'possibile echo un backspace in bash?Echoing di un backspace
Qualcosa di simile
echo $'stack\b'
Non dovrebbe uscita stac
? O mi manca qualcosa?
Più in particolare, mi piacerebbe usare che in:
ls | wc -l; echo $'\b items'
E 'possibile echo un backspace in bash?Echoing di un backspace
Qualcosa di simile
echo $'stack\b'
Non dovrebbe uscita stac
? O mi manca qualcosa?
Più in particolare, mi piacerebbe usare che in:
ls | wc -l; echo $'\b items'
\b
fa muovere cursore a sinistra, ma non cancella il carattere. Emetti uno spazio se vuoi cancellarlo.
Per alcune distribuzioni si può anche essere necessario utilizzare -e
interruttore di echo
:
-e enable interpretation of backslash escapes
Così sembrerà
echo -e 'stack\b '
Inoltre, files=(*) ; echo "${#files[@]} items"
.
non è esattamente quello che stai chiedendo, ma anche, nella linea di risposta di Ignacio, è possibile utilizzare per questo caso:
echo "$(ls | wc -l) items"
per quanto ne so non è possibile stampare un personaggio che cancella quello precedente , nemmeno stampando il carattere il cui numero esadecimanl corrisponde al backspace. Puoi comunque tornare indietro e stampare uno spazio vuoto da eliminare. Con cput puoi fare molte cose e stampare dove vuoi sullo schermo.
Quindi, per rispondere alla domanda reale circa backspace questo simulerà un backspace:
echo -e "\b \b"
Sarà muovere il personaggio indietro di un, then echo uno spazio di sovrascrivere qualunque personaggio era lì, per poi passare di nuovo - a tutti gli effetti cancellando il carattere precedente. Non tornerà su una riga anche se l'output prima non dovrebbe creare una nuova riga:
echo -n "blahh"; echo -e "\b \b"
Hmm, e ovviamente non è possibile backspace su una nuova riga, giusto? Ecco perché la mia soluzione iniziale non ha funzionato (credo). Grazie per la bella soluzione per il conteggio dei file. Darei +2 se potessi :-) – sidyll
Perché questo metodo di eliminazione non funziona per le nuove righe? – Geremia
'\ b' torna indietro di un singolo carattere, fino al bordo sinistro del terminale. Una nuova riga è letteralmente una * nuova riga *, quindi la seconda riga ha il suo bordo sinistro. –