我想创建一个可以运行的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它时
name从当前路径中提取(这是提示的最后一个值)别名可能无法胜任这项工作,但确实可以胜任.试试这段代码:
myfunc() {
command ew --constantswitch --anotherconstantswitch "${PWD##*/}"
}
Run Code Online (Sandbox Code Playgroud)
诀窍是${PWD##*/}.你知道自动变量$PWD正是你运行时得到的pwd,以及Bash的内置字符串替换${var##pattern},它pattern从变量的左边删除了最大匹配.因此,${PWD##*/}删除除最后一个斜杠之后的名称之外的所有内容,正如您所描述的那样是您正在寻找的内容.
在实践中,函数比别名更通用.如果仍需要为命令添加额外的参数,请追加"$@"到函数内部命令的末尾,因此传递给函数的任何参数都将转发到命令.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |