【问题标题】:Adding ZSH alias添加 ZSH 别名
【发布时间】:2019-11-28 18:31:28
【问题描述】:

我是一个完全的初学者。我正在尝试将此命令添加为 ZSH 别名(我想这就是我正在尝试的)。

git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d

我试过添加这一行:

alias delete-local-branches="git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d"

在 iTerm 中获取更新文件后,我得到了这个:

~ source ~/.zshrc
-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'
_='sudo '
afind='ack -il'
...

rd=rmdir
run-help=man
which-command=whence

显然,不是预期的结果。 关于如何添加它以具有自动完成功能并将其用作别名的任何帮助?

谢谢。

【问题讨论】:

  • 不要使用别名;而是定义一个函数。
  • @chepner 有什么区别?我已经尝试更改引号并按预期工作。谢谢@phd
  • 定义一个函数不需要任何会与函数体中的引号冲突的引号,它允许您在需要时对命令进行参数化,并且像任何其他命令一样执行,而不是被命令行中的纯文本替换。
  • @sebazelonka:egrep -v 之后的双引号关闭了 git 之前的开头双引号。
  • 有趣的是,我需要在 iTerm 中创建的第一个别名与删除本地合并分支的 git 命令完全相同

标签: git alias zsh oh-my-zsh


【解决方案1】:

只需将函数定义放在您的 .zshrc 文件中即可。

delete-local-branches () {
  git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d
}

【讨论】:

    【解决方案2】:

    我确定问题出在引用上。你引用了这部分:

    alias delete-local-branches="git branch --merged | egrep -v "
    

    然后不引用(^\*|master|dev),然后引用尾部

    " | xargs git branch -d"
    

    我的建议是尝试使用不同的引号:

    alias delete-local-branches='git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d'
    

    或转义内部引号:

    alias delete-local-branches="git branch --merged | egrep -v \"(^\*|master|dev)\" | xargs git branch -d"
    

    【讨论】:

      猜你喜欢
      • 2020-04-17
      • 2016-10-21
      • 2011-06-11
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2012-12-26
      • 2016-03-24
      相关资源
      最近更新 更多