使用当前路径中的值创建外壳别名



我想创建一个可以运行的shell别名

command ew --constantswitch --anotherconstantswitch <name>

现在需要从当前路径中提取值name。 当前路径如下所示

[username@path-to-shell-xxxxxxxx]/path/to/directory/with/name%

如何创建一个别名,以便在运行时aliasX

它会
  1. 从当前路径中提取name(这是提示符的最后一个值(
  2. 将此路径添加到上面的命令中并执行。

别名可能不能胜任这项工作,但函数肯定可以。 试试这段代码:

myfunc() {
  command ew --constantswitch --anotherconstantswitch "${PWD##*/}"
}

诀窍是${PWD##*/}.你知道自动变量$PWD正是你运行pwd时得到的,以及 Bash 的内置字符串替换${var##pattern},它以最大匹配从变量的左侧删除pattern。因此,${PWD##*/}删除除最后一个斜杠后面的名称之外的所有内容,正如您所描述的,这就是您要查找的内容。

实际上,函数比别名更通用。如果仍需要向命令添加额外的参数,请将"$@"追加到函数内命令的末尾,以便传递给函数的任何参数都将转发到命令。

由于您没有尝试执行任何涉及参数的操作,因此别名实际上是可能的:

alias aliasX='echo "${PWD##*/}"'

这将在使用 aliasX 时打印当前目录名称。或者,使用您的示例:

alias aliasX='command ew --constantswitch --anotherconstantswitch "${PWD##*/}"'

请注意,别名必须用单引号引起来,否则$PWD定义别名时(而不是使用时(将展开。

对于稍微复杂的任何内容,您应该使用函数而不是别名,如iBug的答案所示。

最新更新