当前位置: 首页 > 科技观察

如何SSH到Linux服务器中的特定目录并执行命令?

时间:2023-03-14 16:45:55 科技观察

你遇到过这样的场景吗?使用SSH命令进入服务器,然后使用cd命令进入相应目录,然后继续你的工作。这种操作对于新手来说很常见,在梁旭之前也是如此。本文老司机带你进行更高效的操作,一步搞定你想要的效果。而且,不仅是快速进入Linux服务器的具体目录,还可以在连接服务器的时候执行相应的命令。低效的操作方法如果你不知道本文介绍的方法,你大概分为两步:1:使用SSH命令进入远程服务器sshuser@remote-system步骤2:使用cd命令进入你想要的远程服务器directorycd一条命令快速进入服务器指定的目录。上面说的方法当然可以,但是效率太低了。这个需要用到两个命令,但其实用一个命令就可以达到你想要的效果,比如:ssh-tpi@192.168.0.116'cd/home/pi/tests;bash'通过这个命令,我们可以直接进入树莓派(远程服务器)中对应的目录(即/home/pi/tests)。然后您可以继续您的工作。这里,-t选项是强制伪终端分配,即使标准输入不是终端。如果不添加,可能会有如下提示:Pseudo-terminalwillnotbeallocatedbecauseestdin这里我们用另外一个动画来直观演示这个过程:另外,也可以使用如下命令:ssh-tpi@192.168.0.116'cd/home/pi/tests;execbash'或:ssh-tpi@192.168.0.116'cd/home/pi/tests&&execbash-l'这里,-l选项将此bash设置为登录shell。上面三个命令,参数都是bash,因为我的远程服务器默认的shell解释器是bash。如果您不知道远程服务器使用的shell解释器,可以使用以下命令:ssh-tpi@192.168.0.116'cd/home/pi/tests&&exec$SHELL'远程执行服务器命令的命令如在在本文开头,我们不仅可以使用命令进入远程服务器的指定目录,还可以使用命令远程执行服务器命令。甚至,我们可以使用命令进入远程服务器的指定目录,然后执行命令。其实用的方法都是一样的。比如我们要进入树莓派的/home/pi/tests目录,然后执行ls-al命令,可以这样输入命令:ssh-tpi@192.168.0.116'cd/home/pi/tests&&ls-al&&exec$SHELL'执行结果如下:[Alvin.Alvin-computer]?ssh-tpi@192.168.0.116'cd/home/pi/tests&&ls-al&&exec$SHELL'total48drwxr-xr-x4pipi4096Apr514:36。drwxr-xr-x21pipi4096Apr2119:26..drwxrwxrwx7pipi4096Apr517:28GICdrwxrwxrwx3pipi4096Apr517:37gitchat-rw-r--r--1pipi474Apr511:21liangxu.json-rwxr-xr-x1pipi8184Mar1715:34test-rwxr-xr-x1pipi8184Mar1715:34test2-rwxr-xr-x1pipi8184Mar1715:34test3-rw-r--r--1pipi131Mar1715:34test.c一个折衷的方案如果觉得这个命令太长打不出来,就得先进入服务器,然后cd到对应的目录。那么,我们可以修改远程服务器的.bashrc文件。Vim~/.bashrc把你要执行的命令写在里面。比如这个场景,我们可以添加:cd/home/pi/tests>&/dev/null然后执行:wq保存文件,然后执行如下命令使修改生效:source~/.bashrc或.~/.bashrc这样,我们一旦进入服务器,就会自动进入/home/pi/tests目录。如下动画所示:但是,这样有一个明显的缺点,就是我们只能进入我们指定的目录。如果我们想换到别的目录,只能改.bashrc文件。本文经授权转载自公众号“良墟Linux”。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!