我可以在命令之间添加参数吗?

时间:2019-06-05 15:47:28

标签: bash alias

编码是我较弱的领域之一,这是我关于堆栈溢出的第一个问题。

我要在命令之间添加一个参数,我认为可以使用别名或函数来完成此操作。

我正在使用的命令是telnet,它用于登录我们的交换机。

完整命令:

$ telnet switchname.compname.com 

我要输入的内容

$ enter 'switchname'

反过来,只需简单地输入telnet命令,而不必每次都始终输入.compname.com

3 个答案:

答案 0 :(得分:1)

一个简单的函数就很好:

enter() { telnet $1.compname.com; }

答案 1 :(得分:1)

创建一个函数,以打开telnet会话至第一个参数指定的开关名(如果没有提供参数,则打开默认的开关名),例如在.bashrc中,您可以这样做:

mytelnet() {
    local swname=${1:-defaultname}  ## use local vars within function
    telnet $swname.compname.com     ## connect to your switch
}

然后为alias创建所需的enter,例如

alias enter='mytelnet'

现在可以在命令行中输入:

$ enter                 ## to go to defaultname.compname.com

$ enter switchname      ## to go to switchname.compname.com

要进行测试,您只需在命令行上输入函数和别名即可,例如

$ mytelnet() { local swname=${1:-defaultname}; telnet $swname.compname.com; }
$ alias enter='mytelnet'

然后远程登录...

注意:,您只需命名函数enter()并取消使用alias。我发现在{的顶部定义函数很方便{1}},然后根据需要在下面的各个部分中创建别名,但绝非必须使用别名)

答案 2 :(得分:0)

尝试在alias文件中使用rc,例如~/.bashrc

alias mytelnet='telnet the.desired.site'

然后source您的rc文件,例如

source ~/.bashrc

或等价物

. ~/.bashrc

并键入mytelnet来执行命令。

或者仅使用bash变量,例如

VAR="the.desired.site"

并以这种方式执行telnet

telnet $VAR

您还可以将函数添加到rc文件中,例如提到的David C. Rankin。

function mytelnet () {
    telnet <<< "$@"
}
export -f mytelnet

<<< "$@"将以相同的方式提供telnet,就像在命令行上使用其他命令及其附加参数一样,例如bash $1$2等等。 export -f标记功能 mytelnet 传递给您环境中的子进程。