0

Say I do:

ls somedir

is there a way I could re-run it with a different command?

Example:

ls somedir
<run same command as above but with cd instead of ls>
Nickotine
  • 467

1 Answers1

1

The variable $_ is the last argument of the previous line you typed. So, for example, cd $_ would do what you described

bash-4.2$ ls X
1
bash-4.2$ cd $_
bash-4.2$ ls
1

There's also some command substitution options as well; eg ^ will replace commands on the previous line

bash-4.2$ ls X
1
bash-4.2$ ^ls^cd
cd X
bash-4.2$ ls
1
  • Damn I should've known that, I use $_ a lot. – Nickotine Nov 22 '23 at 03:25
  • Also, depending on your shell editing mode... if you've done set -o emacs then . will bring the last word in. So ls <ESC>. I'm not sure there's an equivalent in vi mode, but I could be wrong. – Stephen Harris Nov 22 '23 at 03:42
  • are there any advantages or use cases where your 2nd option would be better? So do you mean for your emacs example that if I done ls <ESC> emacs would open with the ls output written in? – Nickotine Nov 22 '23 at 03:51
  • No, the . is purely a command line "insert at this point the last word". It actually shows up as if you've typed the last word. It doesn't open an editor at all. – Stephen Harris Nov 22 '23 at 03:53
  • can you give an example please? – Nickotine Nov 22 '23 at 05:41