作为一名系统管理员,我经常将rdp和ssh放入远程机器中进行管理。
我已经创建了一个文件${SERVER_FILE},每行包含一个条目,表示连接到给定服务器时要使用的主机名和协议。
示例:
...
server1,ssh
winsrv,rdp
...根据上面的条目,我希望下面的内容是created+evaluated (rdp本身就是我系统上的一个脚本):
alias server1='ssh server1' winsrv='rdp winsrv'当我将生成的输出剪切并粘贴到alias命令中时,以下代码可以完美地工作:
$ echo $(sed "s/\(.*\),\(rdp\|ssh\)/\1='\2 \1' /g" ${SERVER_FILE} | tr -d '\n')
server1='ssh server1' winsrv='rdp winsrv'
$ alias server1='ssh server1' winsrv='rdp winsrv'
$ alias
alias server1='ssh server1'
alias winsrv='rdp winsrv'因此,我将其更改为以下内容,以实际导致创建别名,并得到错误:
$ alias $(sed "s/\(.*\),\(rdp\|ssh\)/\1='\2 \1' /g" ${SERVER_FILE} | tr -d '\n')
bash: alias: server1': not found
bash: alias: winsrv': not found
$ alias
alias server1=''\''ssh'
alias winsrv=''\''rdp'建议?
发布于 2011-09-24 04:56:06
嗯,看起来alias和echo对一些反斜杠有不同的解释。诚然,这是一种黑客行为,但我会尝试这样做:
alias $(echo $(sed "s/\(.*\),\(rdp\|ssh\)/\1='\2 \1' /g" ${SERVER_FILE} | tr -d '\n')):-)
https://stackoverflow.com/questions/7534685
复制相似问题