27 ms·
In a lot of terminals, Alt+. (or Option+. on Mac) will paste in the last argument of the previous command. $ mkdir hi $ cd <alt+.> You can hit . sever
by hiisukun 4y ago
In a lot of terminals, Alt+. (or Option+. on Mac) will paste in the last argument of the previous command.
$ mkdir hi
$ cd <alt+.>
You can hit . several times to cycle through earlier final args.
- burner556 4y agoor <esc> .
- schoen 4y agoWow, I did not know that! I would have referred to this using !$, which is one of the Bourne shell history substitutions. Like $ mkdir awesome $ cd !$ (The "!" has the connotation "history" in the shell, while the "$" has the connotation "last", as in regular expressions.) An advantage of the way you mentioned is that you could actually see the history item displayed on the command line before running the command!
- senjin 4y agoI use !$ multiple times every day but you just helped me make the connection to try !^ for the first argument and I think I'm going to start using that as well. Thanks!
- schoen 4y agoThere is also "!!" for the entire prior command line. Someone elsewhere in this thread mentioned the usefulness of sudo !! for "run the entire previous command under sudo". Another example could be echo "!!" > myscript for "save the previous command into the file myscript".
- senjin 4y agoI also use cat `which !!` every once in a while
- aasasd 4y agoAt least in zsh, there are also !:1 for the first argument, et cetera with the rest of natural numbers, and something like !:* for all the arguments without the command. The generic form is !n:m for n-th last command line and m-th argument, with an omitted n being a shortcut for the last line. Not sure if all of this works the same in bash.
- senjin 4y agoI use zsh so this is also going in my toolbox. I think I've reached for !:* in the past and didn't know it so this is useful
- deleted 4y ago[deleted]
- gnubison 4y agoHistory expansion originated in csh, and was never in the Bourne shell. Bash, certainly.
- schoen 4y agoThanks for the correction. I often recognize when bashisms are bashisms, but I didn't realize that was.
- sph 4y agoHoly shit, I have gone 35 years without ever learning this fact.
- I_complete_me 4y agozsh has "take" to mkdir and cd to it. Something like take() { mkdir -p "$1" && cd "$1" }
- sbergjohansen 4y ago!! substitutes the last command: sudo !! and cd - takes you to the previous directory.
- Beldin 4y ago!$ substitutes the last command's arguments, if memory serves.
- kmarc 4y agoMore precisely, this is not a feature of the terminals but of readline. https://www.man7.org/linux/man-pages/man3/readline.3.html https://www.man7.org/linux/man-pages/man3/readline.3.html All engineers working with the command line (even after 35 years) really, really should open and read man bash and man readline
- mikevin 4y agoman 3 readline to make sure you don't end up with something like urxvt-readline(1)
- mkl 4y agoAnd if you don't want the last argument but the nth one, press Alt-n before Alt-. (n starts at 0, so Alt-0 Alt-. in the above situation would get you "mkdir"). There are several other ways to do this sort of thing too. See e.g. https://stackoverflow.com/questions/4009412/how-to-use-arguments-from-previous-command https://stackoverflow.com/questions/4009412/how-to-use-argum...
- pards 4y agoOr ^r to search through the command history (bash only?): $ grep blah * $ ^r (reverse-i-search)`g': grep blah * This is far and above my most commonly used shell command