I'm a bash user, starting a new job at a place where people use fish shell.

I'm looking at the history command which I often use in bash. When I use it in fish I get a long list of my history which I can scroll up and down on with the arrow keys.

There are no numbers like in bash and pressing enter is the same as the down key.

How can I run a past command with fish shell's history?


The history command here isn't bash-compatible, it's just displaying it in a pager (e.g. less).

To select an old command, you'll probably want to enter the part you remember right into the commandline, press up-arrow until you have found what you want and then press enter to execute.

E.g. on my system I enter mes, press up and rm -I meson.build appears (with the "mes" part highlighted). I then press enter and it executes.

  • But what if you don't remember the command, but read your history and find it out? E.g. “whichever command I ran immediately after that one” or “that command contained the name of a Chinese emperor but I don't remember which one”. Apr 18 '17 at 23:25
  • Thanks faho and yes @gilles another big downside is that you can't really use a double grep. Apr 18 '17 at 23:41
  • 1
    You can search the history with the usual pager command (usually '/'), or pipe it through grep or other commands. Like git, or systemctl, the pager is only used if the output is directly to a TTY.
    – Zanchey
    Apr 19 '17 at 0:30
  • 3
    Documentation can be found here: fishshell.com/docs/current/commands.html#history
    – dave
    Aug 12 '19 at 13:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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