Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用当前路径中的值创建shell别名_Bash_Shell_Alias - Fatal编程技术网

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

Bash 使用当前路径中的值创建shell别名,bash,shell,alias,Bash,Shell,Alias,我想创建一个可以运行的shell别名 command ew --constantswitch --anotherconstantswitch <name> 如何创建别名,以便在运行aliasX时它将 从当前路径(提示的最后一个值)中提取名称 将此路径添加到上面的命令并执行 别名可能无法胜任该工作,但函数肯定胜任。请尝试以下代码: myfunc() { command ew --constantswitch --anotherconstantswitch "${PWD##*/}"

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

command ew --constantswitch --anotherconstantswitch <name>
如何创建别名,以便在运行
aliasX
时它将

  • 从当前路径(提示的最后一个值)中提取
    名称
  • 将此路径添加到上面的命令并执行

  • 别名可能无法胜任该工作,但函数肯定胜任。请尝试以下代码:

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


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

    别名可能无法胜任此任务,但函数肯定可以胜任。请尝试以下代码:

    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
    将展开,而不是使用别名时展开


    对于稍微复杂一点的内容,您应该使用函数而不是别名,如所示。

    因为您不想做任何涉及参数的事情,所以实际上可以使用别名:

    alias aliasX='echo "${PWD##*/}"'
    
    当您使用
    aliasX
    时,这将打印当前目录名。或者,以您的例子:

    alias aliasX='command ew --constantswitch --anotherconstantswitch "${PWD##*/}"'
    
    请注意,别名必须用单引号括起来,否则定义别名时,
    $PWD
    将展开,而不是使用别名时展开


    对于稍微复杂一点的内容,您应该使用函数而不是别名,如所示。

    谢谢。如何将此函数绑定到命令?我能做点什么吗?@EmAe当然可以。只需执行
    别名xyz=myfunc
    。调用函数时不需要括号,只需要定义它。您也可以像任何其他命令一样直接调用该函数:
    myfunc
    @EmAe该函数已经是一个命令了。只需运行
    myfunc
    。(或者,很明显,如果你想要的话,可以将其重命名为
    xxy
    )@EmAe函数不是与别名一起使用的,而是您使用的,而不是别名。谢谢。如何将此函数绑定到命令?我能做点什么吗?@EmAe当然可以。只需执行
    别名xyz=myfunc
    。调用函数时不需要括号,只需要定义它。您也可以像任何其他命令一样直接调用该函数:
    myfunc
    @EmAe该函数已经是一个命令了。只需运行
    myfunc
    。(或者,很明显,如果你想要的话,可以将其重命名为
    xxy
    )@EmAe函数不是与别名一起使用的东西,而是用来代替别名的东西。