【问题标题】:How to create shell alias with args?如何使用 args 创建 shell 别名?
【发布时间】:2017-12-30 17:25:04
【问题描述】:

我经常使用这个命令:

ack searchexpre -l --print0 | xargs -0 -n 1 sed -i -e sedexpression

我想创建一个别名,如:

searchandreplace searchexpre  sedexpression

我该怎么做?

【问题讨论】:

  • 顺便说一句——请标记 bash or zsh or sh,但不要同时标记其中的两个或三个。它们是不同的 shell,彼此不兼容(除了 bash 几乎是 POSIX sh 的超集,但它不符合 echo 实现),而在这种特殊情况下,只有一个对所有人都有效的答案,(1) 这并不总是正确的,(2) 过多的标记意味着有人需要在多个 shell 中测试每个答案以评估该答案的正确性。
  • 您还应该考虑使用 ag 而不是 ack 在我的测试中它快 10 倍; github.com/ggreer/the_silver_searcher

标签: bash shell sh zsh


【解决方案1】:

使用别名的经验法则是,如果你不得不问,你应该使用一个函数来代替:

searchandreplace() {
    ack "$1" -l --print0 | xargs -0 -n 1 sed -i -e "$2"
}

您现在可以拨打searchandreplace searchexpre sedexpression

【讨论】:

  • 有没有办法给参数命名?比如 doint searchandreplace(arg1,arg2) { .... } ?
  • 不,shbash 不支持命名参数。您可以将 $1$2 分配给具有您想要的任何名称的变量
猜你喜欢
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 2015-06-28
  • 2019-05-12
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多