Avevo provato il comando cat
con un file eseguibile:
cat /bin/ls
Ora non riesco a leggere nessuna parola in questo terminale (console Linux). Come posso ripararlo?
Avevo provato il comando cat
con un file eseguibile:
cat /bin/ls
Ora non riesco a leggere nessuna parola in questo terminale (console Linux). Come posso ripararlo?
Risposte:
Spesso quando in un terminale Unix / Linux (Bash), ad esempio, utilizzerai i comandi more
o less
o cat
per visualizzare un file. Quando lo fai e il file non è pensato per essere visualizzato (come /bin/ls
) otterrai un output in questo modo:
Quello che sta succedendo qui è che hai appena provato a visualizzare un file che è un programma. Un eseguibile che non è pensato per essere visualizzato con i visualizzatori standard come ho detto sopra.
Per risolvere questo problema è possibile effettuare le seguenti operazioni:
reset
e premi InvioIn genere ciò dovrebbe riportare il terminale in una modalità più normale. Citerò un'altra cosa, quando eseguirai i passaggi precedenti, digitandoli ciechi nel tuo terminale. Quindi assicurati di digitarlo correttamente.
Come suggerito nei commenti di @sendmoreinfo potresti avere più fortuna usando i seguenti comandi se quanto sopra non funziona:
$ stty sane
$ tput rs1
Per inciso, se ti imbatti in un file e non sei sicuro che rovinerà il tuo terminale, puoi ispezionare il file usando il comando file
che riporterà il tipo di file che è.
Ad esempio, con /bin/ls
quel file mostra il seguente output:
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
reset
non è una cura al 100% per la follia terminale. Prova stty sane
seguito da tput rs1
.
stty sane
ma mai tput
.
reset
ha funzionato nel mio caso
clear
funziona anche per casi lievi.
Ho avuto un'occasione in cui nessuno dei soliti trucchi, reset
o stty sane
, ha funzionato (dopo aver richiamato accidentalmente print
uno strappo di pitone). Ho avuto successo con il metodo 2 elencato in questo utile blog .
Da allora ho creato un alias molto utile:
alias fix='echo -e "\033c"'
echo -e "\033c"
mi ha aiutato a ripulire una sessione terminale di login SSH confusa dai caratteri che è stata confusa dopo un cat /etc/localtime
.
Nessuna risposta precedente ha funzionato per me. Ma questo sembra fare il trucco in .bashrc aggiungere:
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
e quindi quando si verifica il problema, digita questo (anche se probabilmente non riesci a vederlo!)
(ctl-c, ctl-c, ctl-c)
fix
Mille grazie ai precedenti autori. Inoltre, come nota a margine, il motivo per cui il tuo terminale diventa instabile quando mostra quei file eseguibili (o keystore, ecc.) È che quei file spesso contengono sequenze binarie che sono codici di controllo. I codici di controllo possono fare cose casuali come passare a un set di caratteri grafici, impostare i colori di primo piano e di sfondo sulla stessa cosa, ecc.
sane
tmux
gli utenti potrebbero essere in grado di inviare tutti questi comandi alla propria shell, ma il ripristino non viene elevato al tmux
riquadro.
Crea una nuova finestra di tmux:
ctrl-B c
tmux list-panes
nota il numero di riquadro che pensi sia corrotto, in genere 0
. ChiamiamoloPPP
Seleziona la finestra di tmux, dove si XXX
trova il numero della finestra che è inserito, non necessariamente uguale al numero del riquadro.
ctrl-B XXX
tmux send-key -R -t PPP
Vedrai quindi tutti i comandi nelle altre risposte a questa domanda che è arrivata alla tua shell, ma non ha funzionato! Forse un cieco tmux send-key -R -t PPP
funzionerà, ma non posso provare.
Ho quasi lo stesso alias del post precedente, con una piccola modifica ( tput reset
anziché rs1
) e un comando aggiunto ( setterm -reset
):
alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
Oltre ad altre risposte che suggeriscono come ripristinare il terminale, ho pensato che la corruzione non potesse essere evitata se non adeguatamente protetta. Quindi è meglio che invii l'output a un semplice convertitore testuale cat -v
:
docker logs myjenkinscontainer 2>&1 | cat -v
La visualizzazione e la modifica di file binari sembra possibile con hexdump -C
e vi -R
( :%!xxd -g1
per una vista esadecimale e :%!xxd -g1 -r
per salvare le modifiche esadecimali).
reset
.