编码是我较弱的领域之一,这是我关于堆栈溢出的第一个问题。
我要在命令之间添加一个参数,我认为可以使用别名或函数来完成此操作。
我正在使用的命令是telnet,它用于登录我们的交换机。
完整命令:
$ telnet switchname.compname.com
我要输入的内容
$ enter 'switchname'
反过来,只需简单地输入telnet命令,而不必每次都始终输入.compname.com
。
答案 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 传递给您环境中的子进程。