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

Em *_* Ae 1 bash shell alias

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

command ew --constantswitch --anotherconstantswitch <name>
Run Code Online (Sandbox Code Playgroud)

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

[username@path-to-shell-xxxxxxxx]/path/to/directory/with/name%
Run Code Online (Sandbox Code Playgroud)

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

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

iBu*_*Bug 7

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

myfunc() {
  command ew --constantswitch --anotherconstantswitch "${PWD##*/}"
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • @EmAe该函数已经是一个命令.只需运行`myfunc`.(或者,显然,如果这是你想要的名字,将其重命名为`xxy`) (2认同)