0

我有一个我在网上找到的函数可以添加到我的 .bashrc 中,它会使用主机名生成一个新的 SSH 会话:

# Opens SSH on a new screen window with the appropriate name.
screen_ssh() {
    numargs=$#
    screen -t ${!numargs} ssh $@
if [ $TERM == "screen" -o $TERM == "screen.linux" ] && [ ! -z "$PS1" ];  then
    alias ssh=screen_ssh
fi

if [[ $- == *i* ]]
then
  [ "$STY" ] && ssh() { screen -t "${1##*@}" ssh "$@"; } # Spawn new window in Screen  for SSH
fi

但它也会对别名执行此操作,如下所示:

lsrem(){ ssh $1 "ls -l" ; }

所以我的问题是如何阻止它使用别名/函数,并且只能以交互方式工作:

ssh somehost

提前致谢。

4

1 回答 1

0

我找到了一种(hacky)方式:

# Opens SSH on a new screen window with the appropriate name.
screen_ssh() {
    numargs=$#
        if [ "$numargs" -eq "1" ];
        then   
                screen -t ${!numargs} ssh $@
        else   
                ssh $@
        fi
}
if [ $TERM == "screen" -o $TERM == "screen.linux" ]; then
    alias ssh=screen_ssh
fi

这会检查 SSH 的 args 数量是否大于 1,因此当我这样做时不会产生新的屏幕会话:

ssh hostname

我绝对愿意接受更好的方法来做到这一点!

于 2013-04-11T10:10:15.337 回答