6

A couple of years ago, I did the automatic distribution update from 14.04 to 16.04. For the first time in my life, I was able to continue to use the computer after the automatic distribution update. As usual, the software repositories are all muntered, so system updates don't work properly, but I've gotten by.

I am going to do a clean installation of 18.04, however. In order to be able to configure my system more easily after the installation, I exported my command history to a text file.

$ history > /.../20180915_Command_history.txt

Beautifully, the resulting text file contains line numbers. Somewhat mysteriously, the first line number is 76. After looking at the first few lines, it looks like there were probably some previous commands.

  1. Do the line numbers just start at 76 for some reason?
  2. If not, is there any way that I can see lines 1 to 75?
2
  • 1
    Mine starts from 994 and ends with 1993. Sep 17, 2018 at 3:53
  • 1
    !-75 is a good command to pull requests
    – user610658
    Sep 28, 2018 at 5:11

1 Answer 1

14

First of all, If you need to get a backup of your command line history, then just copy this file:

~/.bash_history

Remember that you have to close all your terminals or run history -a to append all commands from those history sessions to the history file.


If not, is there any way that I can see lines 1 to 75?

Every command that has been saved in your history is available at ~/.bash_history file, to see all of them open a terminal and run:

cat ~/.bash_history

To get an output similar to history command with numbering run:

cat -n ~/.bash_history

Do the line numbers just start at 76 for some reason?

Run this command:

grep "^HIST" .bashrc

You have to get an output similar to:

HISTSIZE=1000
HISTFILESIZE=2000

As I said before ~/.bash_history keeps command-line's history.

  • The HISTFILESIZE show how many command should ~/.bash_history keeps track of, for mine it's 2000.

  • And HISTSIZE is the number of commands that history command (shell built-in actually) keeps track of.

When you open a terminal and run history, it will picks the last HISTSIZE number of commands from ~/.bash_history and shows that to you.

If you run new commands it will remove the older ones from session and append the new ones at the end of its list so the number of commands will match HISTSIZE.

I guess while asking the question you had 74 command more than of HISTSIZE in your .bash_history and that's the reason why it starts at 75.


From man bash:

  • HISTSIZE

    The number of commands to remember in the command history.

  • HISTFILESIZE

    The maximum number of lines contained in the history file.

5
  • I'll suggest my per-process bash history, see my answer at askubuntu.com/a/80882/25618
    – waltinator
    Sep 17, 2018 at 4:24
  • What's the rationale for keeping HISTSIZE < HISTFILESIZE? Is there some downside of having history lookup all available commands? Does it become slow? But then does 1000 vs 2000 really make a difference? I could understand if you had 100k vs 1000 maybe but I really don't see how that specific setting would achieve anything useful. Sep 17, 2018 at 7:11
  • @GiacomoAlzetta I don't think that the number is related to being able to perform the task faster, in my opinion it's for more convenience, I can look into 1000 line of history easier that of 2000. it's like caching data, we keep the most recent one because there is a higher chance that we run them again.
    – Ravexina
    Sep 17, 2018 at 8:06
  • @Ravexina Yes, but using Ctrl+R will show the most recent commands first, so I don't really see any inconvenience in keeping more. You can always do history | tail -n 1000 to keep just the last 1000 lines so it seems like an unnecessary limitation. Sep 17, 2018 at 8:10
  • @GiacomoAlzetta I think it's about being able to have a look into most recent commands really fast not searching about specific result (like using ctrl+r), it's really a pain in the neck to combine history with other commands, I prefer running history to get my desired output and when I need more then I can just run tail -2000 ~.bash_history. It's all about what you prefer if 1000 is not enough for you just increase it... But not to 100K as you said your self :)
    – Ravexina
    Sep 17, 2018 at 8:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .