使用当前路径的值创建shell别名

时间:2018-01-26 01:50:59

标签: bash shell alias

我想创建一个运行

的shell别名
command ew --constantswitch --anotherconstantswitch <name>

现在需要从当前路径中提取值name。当前路径看起来像这样

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

如何创建别名,以便在我运行aliasX

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

2 个答案:

答案 0 :(得分:7)

别名可能无法胜任这项工作,但确实可以胜任。试试这段代码:

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

技巧是${PWD##*/}。您知道自动变量$PWD正是您运行pwd时获得的,以及Bash的内置字符串替换${var##pattern}从左侧删除pattern具有最大匹配的变量。因此,${PWD##*/}会删除除最后一个斜杠之后的名称之外的所有内容,正如您所描述的那样,这是您正在寻找的内容。

在实践中,功能比别名更通用。如果仍需要为命令添加额外的参数,请将"$@"附加到函数内部命令的末尾,这样您传递给函数的任何参数都将转发到命令。

答案 1 :(得分:2)

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

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

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

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

请注意,别名必须采用单引号,或者$PWD会在您定义时展开,而不是在您使用时展开。

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