使用当前路径的值创建 shell 别名
Create shell alias with value from current path
我想创建一个 shell 别名 运行
command ew --constantswitch --anotherconstantswitch <name>
现在需要从当前路径中提取值name
。当前路径看起来像这样
[username@path-to-shell-xxxxxxxx]/path/to/directory/with/name%
我怎样才能创建一个别名,这样当我 运行 aliasX
它会
- 从当前路径(提示的最后一个值)中提取
name
- 将此路径添加到上面的命令中并执行。
别名可能无法胜任这项工作,但功能肯定可以。试试这个代码:
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
将在您定义它而不是在您使用它时展开。
对于任何稍微复杂的东西,您应该使用函数而不是别名,如 所示。
我想创建一个 shell 别名 运行
command ew --constantswitch --anotherconstantswitch <name>
现在需要从当前路径中提取值name
。当前路径看起来像这样
[username@path-to-shell-xxxxxxxx]/path/to/directory/with/name%
我怎样才能创建一个别名,这样当我 运行 aliasX
它会
- 从当前路径(提示的最后一个值)中提取
name
- 将此路径添加到上面的命令中并执行。
别名可能无法胜任这项工作,但功能肯定可以。试试这个代码:
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
将在您定义它而不是在您使用它时展开。
对于任何稍微复杂的东西,您应该使用函数而不是别名,如