我正在使用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目录中。
如何创建此别名,以便在发出命令时使用我当前的目录?我的搜索没有太多运气。
答案 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为您提供了这种可能性。