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

标签 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 尝试打开的文件仅位于我的主/登录目录中。

我该如何创建这个别名,以便在我发出命令时使用我所在的当前目录?我的搜索不太走运。

最佳答案

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

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

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

然而,即使是 ls 也是多余的。这对我有用:
alias nanc='nano *.c'

关于linux - 创建动态别名,是否可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335941/

相关文章:

子进程在协进程中读取后挂起

macos - 为什么这个简单的 AppleScript 不起作用?

c# - c# 是否提供了一种直接的方法来为属性名称起别名?

php - 命名空间常量和用途

linux - 在 AWS linux AMI 上使用 sudo rm -rf 意外删除了目录

c++ - 关于图书馆的一些疑问

zsh - 如何在zsh中拆分数组的每个元素?

angular - zsh : command not found : ng on new Mac OS Catalina

arrays - 如何通过当前 shell (zsh/bash) 检测数组开始索引?

linux - 使用 ncurses 接口(interface)编译 Linux perf?