I'm using Oh My Zsh, and was wondering if there is a way to create a function or alias to run multiple commands. Just as an example, running an 'update' command will update specific gems, but not all of them.
Asked
Active
Viewed 2.6k times
34
-
1Figured it out alias name="something; something else" – snakesonatoni Oct 08 '13 at 19:37
2 Answers
72
As you've discovered, you can chain commands in a single alias using ;
:
alias update_my_gems="echo foo; echo bar"
Alternatively, you can write a function very easily in your ~/.zshrc
file:
update_my_gems() {
echo foo
echo bar
}
For readability, I'd personally go for a function for anything that's semi-complex.

simont
- 68,704
- 18
- 117
- 136
-
2I'd default to using a function for *anything*, unless there is a reason why an alias is better (which will rarely be the case). – chepner Oct 09 '13 at 14:30
-
-
@snakesonatoni, do you know of an effective way to replace an OMZ alias with one that accepts parameters? I haven't had much luck: https://stackoverflow.com/questions/61109665/ohmyzsh-override-git-plugin-aliases-with-custom-multi-line-aliases-functions – Steven Choi Apr 12 '20 at 20:29
2
If there are many commands, I find it useful to alias the execution of a .sh file located on my home directory
alias start_containers="./start-containers.sh"
To throw the alias inside the config file, you can do
echo alias start_containers="./start-containers.sh" >> ~/.zshrc

cesartalves
- 1,507
- 9
- 18