Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

By pressing up, I can go through previously entered commands. I've noticed though that if I modify one of them, that alters the history. For instance, if I type:

echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]

the history now shows that the second command was echo d, not echo b. How do I keep the first echo b in the history?

For instance, say I run a really long command, with a lot of options. then I want to run it again, with a minor change, so I go back through the history to find it, make the change, but then realize that actually I don't need to re-run it, having just thought of another option to do instead. then later, I want to go back and remind myself what the command I ran was - but wait, the history is now showing the wrong thing!

This comes up very rarely, but when it does I find it really irritating. Is there some way to automatically preserve the original history?

share|improve this question
1  
with history you can see all the command. After you can select what you need. Which shell are you using now? –  Hastur May 23 at 11:37
3  
I can't reproduce that. If I change c to d, press CTRL+C and press [up] again, it still says echo c. –  Martin von Wittich May 23 at 11:38

2 Answers 2

up vote 3 down vote accepted

Try to put in your ~/.inputrc

 set revert-all-at-newline on

In some case you can find it in the default value (Off).
It should force readline to undo all changes to history lines before returning when accept-line is executed. (more info in man bash).

share|improve this answer
    
Nice, this is the better solution. Interestingly, CTRL-c will actually cause it to remember the modified value, though fully erasing the line or arrowing down and then pressing enter or running another command will restore the history. –  Dean Serenevy May 24 at 13:25
    
@DeanSerenevy: Thanks I've like your workaround too and I start to use CTRL-a in nano too :-) –  Hastur May 27 at 6:03

Usually:

CTRL-a # ENTER

will do it.

The original command will be remembered if you execute the modified command. Of course, you don't want to actually execute, so you can comment out the line with #.

In your example, you would then have in your history: echo a, echo b, echo c, # echo d.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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