【问题标题】:Define alias that references other aliases定义引用其他别名的别名
【发布时间】:2015-09-10 11:19:34
【问题描述】:

我需要能够在包含其他别名的 Debian shell 中为我目前正在进行的项目定义一个别名。

让我们看一个代码示例,让事情更清楚。

  1. alias foo=foo
  2. alias bar=bar

如果我运行type foo,它将返回foo is aliased to 'foo',而type bar 返回bar is aliased to 'bar'。到这里一切都好。现在,我遇到了问题。

  1. alias foobar=$foo$bar

不起作用。 type foobar 返回foobar is aliased to ''

我试过alias foobar=${foo}${bar},也不管用。

一旦我得到这个工作,在最终版本中,我实际上需要在两个别名之间添加一些文本,想象一下:alias fooandbar=${foo}and${bar}

有人可以帮忙吗?

【问题讨论】:

  • 您混淆了别名和变量。它们是两种不同的东西。您不能使用 $xx 语法来引用别名。

标签: linux bash shell unix


【解决方案1】:

要在另一个别名中重用别名,请使用:

foobar='foo;bar'

但是我建议您考虑使用 shell 函数来更好地控制这一点。

【讨论】:

  • 我试过alias foobar='foo;bar',但是当我运行type foobar它返回foobar is aliased to 'foo;bar'
  • 是的,没错。当您执行foobar 时,它会先执行foo,然后再执行bar
【解决方案2】:

遵循@anubhava 的明智建议:

foo() { echo foo; }
bar() { echo bar; }
foobar() { echo "$(foo)$(bar)"; }
fooandbar() { echo "$(foo)and$(bar)"; }

{} 中需要空格和分号。

【讨论】:

    【解决方案3】:

    这是我正在使用的别名示例

    #clear
    alias cls='clear; ls'
    alias ccls='cd; cls' # used alias cls
    

    【讨论】:

      【解决方案4】:

      我在 csh 中使用了它,它对我有用:

      别名 new_alias 'vi old_alias'

      【讨论】:

      • 你的例子到底是做什么的?如果我将您的示例复制到我的 csh 并运行它,别名将打开一个名为“old_alias”的文件
      猜你喜欢
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多