创建动态别名,是否可能?

时间:2015-03-29 22:56:05

标签: linux alias zsh

我正在使用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尝试打开的文件只位于我的home / login目录中。

如何创建此别名,以便在发出命令时使用我当前的目录?我的搜索没有太多运气。

2 个答案:

答案 0 :(得分:4)

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

顺便说一下,你的别名还有另外一个问题:ls命令会扩展任何恰好是目录名的通配符(对于名称以&#34结尾的目录来说,这是完全合法的; .c&#34 )。为了防止奇怪的结果,你可能想要使用&#34; -d&#34;选项,例如,

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

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

alias nanc='nano *.c'

答案 1 :(得分:0)

我认为您可以创建一个函数,然后创建该函数的别名。在功能一个condiction中检测你想要的东西。即使是一个短名称的功能。了解如何使用参数创建函数,然后你可以使用'nan -c'或'nan -h'。 bash选项getopt为您提供了这种可能性。