I am currently looking for a way to easily store and run commands, usually syncing files between two deeply nested directories whenever I want.
So far I found these projects:
Other solutions:
- Bash history using ^+r
- Bash aliases
- Bash functions
What do you guys use?
aliases in .bashrc
If you use
fish
you can use abbreviationsAn alias file is what I’ve found to be the simplest. Just have to add one line to either .zshrc or .bashrc that links to the file. I store the alias file and some custom scripts that a few aliases call in a git repo so it’s literally just a matter of git pull, add one line to the rc file and then close and reopen the terminal and everything is ready to go.
Fish shell. Out of the box it autocompletes taking into account in which directory you are. It’s like bash Ctrl+r but without actually invoking it before. Really ergonomic.
I wouldn’t install a program for this if your use case is simple. You will end up relying on it when there are already some built in tools that can get you 99% of the way there.
- Bash scripts placed in ~/bin or ~/.local/bin
- Can have simple or complex scripts setup to do whatever you want
- Easily called from terminal or automated through cron or systemd
- Environment variables set in -/.bashrc
- Great for storing common paths, strings, etc.
- Can be easily incorporated into bash scripts
- Aliases set in ~/.bashrc
- Ideal (IMO) for common commands with preferred options
- for example you could setup your most used
rsync
command to an alias:alias rsync-cust=“rsync -avuP”
Edit: rephrased to not discount the tools shared. I am sure if you had a specific reason to use them they could be helpful. But I think for many users the above options are more than enough and are supported pretty universally.
I more or less was just looking for a general survey of what other people used.
I agree installing a binary for this small kind of thing might be excessive.
Yeah, potentially overkill, but all the power to anyone who wants to try them out. Freedom of choice is one of the best parts of Linux.
And sorry for the long response. It’s hard to gauge the proficiency that someone might have with Linux, so I tend to lean towards detailed explanations just in case
I like bash scripts + auto key! Custom commands with custom keybinds.
I use vi as the command line editor, so fetching history commands is quick:
ESC /searchstring
But if it’s something really frequent or may benefit from parameters, I usually throw a perl or bash script in /usr/local/bin.
Fish (or zsh with some addons) will give you tab completion based on previous commands, might be something of interest?
Here’s some addon tips if you’d rather run zsh instead of fish:
https://gist.github.com/abhigenie92/a907cdf8a474aa6b569ebe89aeee560d
McFly for better ”ctrl+c”. It also keeps track of what commands you ran in what directory.
Try
fzf
. The default hooks will launch fuzzy finders forC-r
: history searchAlt-c
: change directoryC-t
: fill in argument for a nested path
All seem pretty good for your use case.
I use this method from Luke smith for bookmarking.
https://vid.puffyan.us/watch?v=d_11QaTlf1I
I just have another file for commands.
You can use rofi/dmenu/bemenu. I use kickoff though.