如何在zsh中使用别名或函数来检查套接字并运行相应的命令?

时间:2013-05-29 22:13:09

标签: ruby-on-rails shell zsh zeus

Zeus与Rails一起使用时,我遇到了一个有趣的问题。我的shell脚本编写至少缺乏说法。

好的,所以zeus会在一秒钟内启动一个rails应用程序,并使测试等更快。但是,您必须在任何rails命令之前附加zeus。示例,zeus generate controllerzeus rake db:migrate。我宁愿在运行zeus时保留常规rails命令。示例,rails generate controllerrake db:migrate

我有这三个命令别名

alias rails='zeus'

alias rspec='zeus rspec'

alias rake='zeus rake'

但是,如果zeus没有运行,我会收到此错误

error: Can't connect to master. Run zeus start first.

所以我试图解决的问题是我想使用相同的rails命令是否运行zeus

现在,当我运行zeus start时,似乎zeus.sock存在。所以我想我可以检查函数中是否存在zeus.sock,然后相应地设置别名。我只是不确定最好的方法来做到这一点。我知道如果文件存在并且是套接字,则-S为真。

之类的东西
if [ -S zeus.sock ]; then 
  # not sure where to go from here

有人建议最好的方法吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

你可以使用一个函数,也许是这样的:

zrail() {
    if [ -S zeus.sock ]; then
        zeus $*
    else
        rails $*
    fi
}

然后你称之为:

zrail generate controller