我经常必须登录到几个服务器中的一个,然后进入这些机器上的几个目录中的一个。目前我做的事情是这样的:
localhost ~]$ ssh somehost
Welcome to somehost!
somehost ~]$ cd /some/directory/somewhere/named/Foo
somehost Foo]$
我有脚本,可以确定哪个主机和哪个目录,我需要进入,但我不知道如何做到这一点:
localhost ~]$ go_to_dir Foo
Welcome to somehost!
somehost Foo]$
有没有简单、聪明或任何方法可以做到这一点?
根据@rogeriopvl的回答,我建议如下:
ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted && bash"
使用&&链接命令将使下一个命令只在前一个命令成功时运行(与使用;相反,它按顺序执行命令)。当需要cd到执行该命令的目录时,这特别有用。
想象一下这样做:
/home/me$ cd /usr/share/teminal; rm -R *
目录teminal不存在,这导致您停留在主目录中,并使用以下命令删除其中的所有文件。
如果你使用&&:
/home/me$ cd /usr/share/teminal && rm -R *
如果找不到目录,该命令将失败。
我的答案可能与你真正想要的不同,但我在这里写的可能对一些人有用。在我的解决方案中,您必须进入该目录一次,然后每个新的ssh会话都将进入相同的目录(在第一次登出之后)。
如何ssh到相同的目录,你已经在你上次登录。
(我假设您在远程节点上使用bash。)
将这一行添加到~/。远程节点上的Bash_logout (!):
echo $PWD > ~/.bash_lastpwd
这些到~/的直线。Bashrc文件(仍然在远程节点上!)
if [ -f ~/.bash_lastpwd ]; then
cd $(cat ~/.bash_lastpwd)
fi
这样在每次登出时保存当前路径,登录后.bashrc将您放入该目录。
ps:你可以进一步调整它,比如使用SSH_CLIENT变量来决定是否进入该目录,这样你就可以区分本地登录和ssh,甚至不同的ssh客户端。