I'd tried command cat with an executable file:

cat /bin/ls

Now I can't read any word in this terminal (Linux console). How can I fix it?

up vote 143 down vote accepted

Often times when in a Unix/Linux terminal (Bash) for example you'll use the commands more or less or cat to view a file. When you do this and the file isn't meant to be viewed (such as /bin/ls) you'll get output like this:

                ss of binary output

What's going on here is that you just tried to view a file that's a program. An executable which aren't meant to be viewed with standard viewers as I mentioned above.

method #1 - reset

To fix this issue you can do the following:

  1. Hit Control + C a couple of times (Ctrl+C)
  2. Type the command reset and hit return

This should usually put your terminal back into a more normal mode. I'll mention one more thing, when you do the steps above, you'll by typing them blind into your terminal. So just make sure you're typing it correctly.

method #2 - stty sane

As suggested in the comments by @sendmoreinfo you might have better luck using the following commands instead if the above doesn't work:

$ stty sane
$ tput rs1

determining a files' type

Incidentally, if you come across a file and aren't sure if it's going to mess up your terminal you can inspect the file using the command file which will report back the type of file it is.

For example, with /bin/ls that file shows the following 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
  • 14
    reset is not a 100% cure for terminal madness. Try stty sane followed by tput rs1. – sendmoreinfo Jun 17 '13 at 14:22
  • @sendmoreinfo - thanks I've added your suggestion to the answer. I'd used stty sane but never tput. – slm Jun 17 '13 at 15:01
  • 1
    actually, I need to research this more. reset is supposed to send rs1 string. A good test (for xterm, at least) is to make cursor invisible and see if reset brings it back. – sendmoreinfo Jun 17 '13 at 17:15
  • 4
    reset worked in my case – code_monk Mar 8 '15 at 14:06
  • 1
    clear also works for mild cases. – Navin Nov 2 '15 at 5:41

I've had an occasion where none of the usual tricks, reset or stty sane, worked (after accidentally calling print on a python bytearray). I had success with method 2 listed on this helpful blog.

I've since created a most helpful alias:

alias fix='echo -e "\033c"'
  • 2
    I know this is old, but this is the only answer above that worked for me! Thanks – jredd Jun 1 '16 at 18:31
  • This echo -e "\033c" helped me to clean up a character-garbled SSH login terminal session that was mixed up after a cat /etc/localtime. – Pro Backup Dec 20 '16 at 21:17
  • This worked with OpenBSD, when all others did not. – DHW Apr 19 '17 at 5:38
  • 1
    further experimentation with screen(1) found force detatching of all sessions (-D) then issuing the reset commands to the underlying terminal screen was run in, could fix the issue. may also need to rename corrupted window names that may re-display the same binary data at the terminal causing it to corrupt (and then reset yet again). – math Oct 18 '17 at 4:41
  • 1
    My terminal size ( LINES ) was cut in roughly half after using vi while connecting to the console of a remote linux host via SOL. The remote session had LINES=24 whereas my local MAC session had LINES=51. echo -e "\033c" worked for me but none of the other fixes I tried did ( 'stty sane', tput rs1 , tput sgr0, reset ). – Mark Dec 19 '17 at 19:33

No single prior answer worked for me. But this seemed to do the trick in .bashrc add:

alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'

and then when the problem occurs type this (even though you probably can't see it!)

(ctl-c, ctl-c, ctl-c)
fix

Much thanks to the prior submitters. Also, as a side note, the reason that your terminal goes wonky when showing those executable files (or keystores, etc) is that those files often contain binary sequences that are control codes. The control codes may do random things like switch to a graphics character set, set foreground and background colors to the same thing, etc.

  • Same happened. Nothing worked for me, just this combo... – TrueY Feb 16 at 16:56

I have almost the same alias as the previous post, with one small change (tput reset instead of rs1) and one added command (setterm -reset):

alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'

tmux users might be able to send all these commands to their shell, but the resetting doesn't get elevated to the tmux pane.

Make new tmux window: ctrl-B c tmux list-panes Note the pane number you think is borked, typically 0. Let's call it PPP

Select the tmux window, where XXX is the window number which is borked, not necessarily the same as pane number. ctrl-B XXX tmux send-key -R -t PPP

You will then see all the commands in the other answers to this question which made it to your shell, but didn't work! Maybe a blind tmux send-key -R -t PPP will work, but I can't test.

Nothing above helped me. However, Jack Wasey mentioned tmux, so I just ran tmux, exited again and everything was back to normal.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.