34

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.

snakesonatoni
  • 343
  • 1
  • 3
  • 4

2 Answers2

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
  • 2
    I'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
  • I ended up making a function exactly like that. Thank you! – snakesonatoni Oct 09 '13 at 16:06
  • @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