【问题标题】:Creating a dynamic alias, is it possible?创建动态别名,可以吗?
【发布时间】:2015-03-29 22:56:04
【问题描述】:

我正在用 C 语言创建一个库,并且每个头文件/源文件都有单独的文件夹。我最近需要进入许多文件夹并更改 .c 和 .h 文件中的一些代码。所以我经常使用命令:

nano <some-detailed-filename.c>
nano <some-detailed-filename.h>

我想看看如何创建一个别名,如下所示:

alias nanc="nano $(ls ./*.c)"
alias nanh="nano $(ls ./*.h)"

这个想法是它将打开当前目录中的任何 .c/.h 文件。但是当我将这些行添加到我的 .zshrc 文件中时,我得到以下别名:

# alias nanc
nanc='nano ./xh.c       ./yp.c'
# alias nanh
nanh='nano ./xh.h       ./yp.h'

这是不希望的,因为 nano 尝试打开的文件仅位于我的主/登录目录中。

如何创建此别名,以便在发出命令时它使用我所在的当前目录?我的搜索结果不太好。

【问题讨论】:

    标签: linux alias zsh


    【解决方案1】:

    不要在作业中使用双引号;使用单引号。如果使用双引号,则会立即替换该值。

    顺便说一句,您的别名还有另一个问题:ls 命令将扩展任何恰好是目录名称的通配符(目录名称以“.c”结尾是完全合法的)。为了防止由此产生的额外结果,您可能需要使用“-d”选项,例如,

    alias nanc='nano $(ls -d ./*.c)'
    

    但是,即使ls 也是多余的。这对我有用:

    alias nanc='nano *.c'
    

    【讨论】:

    • 回答您的问题。我不担心隐藏文件,因为这个别名只会在我创建的目录中使用,每个目录只包含一个 .c/.h 文件。
    【解决方案2】:

    我认为您可以创建一个函数,然后为该函数创建一个别名。在功能一个条件来检测你想要什么。甚至是一个短名称的函数。了解如何创建带参数的函数,然后您可以使用“nan -c”或“nan -h”之类的东西。 bash 选项 getopt 为您提供了这种可能性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-30
      • 2019-03-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      相关资源
      最近更新 更多