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

栏目: 服务器 · 发布时间: 6年前

内容简介:你是不是有遇到过这样的场景?使用 SSH 命令进入到服务器,然后再用 cd 命令进入到对应目录,再继续进行你的工作。这种操作对于新手来讲特别常见,良许之前也是这样。在本文,老司机将带你来进行更高效的操作,只需一步即可达到你想要的效果。

你是不是有遇到过这样的场景?使用 SSH 命令进入到服务器,然后再用 cd 命令进入到对应目录,再继续进行你的工作。

如何 SSH 到  <a href='https://www.codercto.com/topics/18170.html'>Linux</a>  服务器里的特定目录及执行命令?

这种操作对于新手来讲特别常见,良许之前也是这样。在本文,老司机将带你来进行更高效的操作,只需一步即可达到你想要的效果。

而且,不仅仅是实现快速进入到 Linux 服务器特定的目录,还可以实现在连接上服务器的时候即执行一个对应的命令。

低效操作方式

如果你不知道本文介绍的方法,你很可能是分成两步来操作的:

第一步:使用 SSH 命令进入到远程服务器

ssh user@remote-system 

第二步:使用 cd 命令进入到你想要的目录

cd <some-directory> 

一条命令快速进入到服务器指定目录

上面提到的这种方式当然是可以的,但过于低效。这样操作你需要使用两条命令,但实际上,你完全可以使用一条命令即可实现你想要的效果,比如:

ssh -t pi@192.168.0.116 'cd /home/pi/tests ; bash' 

通过这条命令,我们可以直接就进入到树莓派(远程服务器)中对应的目录里(即 /home/pi/tests)。后续你就可以再继续你的工作了。

在这里, -t 选项是表示强制伪终端分配,即使标准输入不是终端。如果不加的话,可能会有如下提示:

Pseudo-terminal will not be allocated because stdin 

这里我们再用一个动画来直观地演示这个过程:

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

除此之外,你还可以使用下面这个命令:

ssh -t pi@192.168.0.116 'cd /home/pi/tests ; exec bash' 

或者:

ssh -t pi@192.168.0.116 'cd /home/pi/tests && exec bash -l' 

在这里,-l 选项将这个 bash 设置为登录 shell。

在上面的三条命令里,最后的参数都是 bash,是因为我的远程服务器默认的 shell 解释器是 bash 。如果你不知道你远程服务器所使用的 shell 解释器,可以使用以下命令:

ssh -t pi@192.168.0.116 'cd /home/pi/tests && exec $SHELL' 

一条命令远程执行服务器命令

正如本文开头所讲的,我们不仅可以使用一条命令进入到远程服务器指定目录,还可以使用一条命令远程执行服务器命令。甚至,我们还可以使用一条命令进入到远程服务器的指定目录,再执行一条命令。

其实所使用的方法都是一样的,比如我们想进入到树莓派的 /home/pi/tests 目录,再执行ls -al 命令,我们可以这样输入命令:

ssh -t pi@192.168.0.116 'cd /home/pi/tests && ls -al && exec $SHELL' 

执行的结果如下:

[Alvin.Alvin-computer] ➤ ssh -t pi@192.168.0.116 'cd /home/pi/tests && ls -al && exec $SHELL' 
total 48 
drwxr-xr-x  4 pi pi 4096 Apr  5 14:36 . 
drwxr-xr-x 21 pi pi 4096 Apr 21 19:26 .. 
drwxrwxrwx  7 pi pi 4096 Apr  5 17:28 GIC 
drwxrwxrwx  3 pi pi 4096 Apr  5 17:37 gitchat 
-rw-r--r--  1 pi pi  474 Apr  5 11:21 liangxu.json 
-rwxr-xr-x  1 pi pi 8184 Mar 17 15:34 test 
-rwxr-xr-x  1 pi pi 8184 Mar 17 15:34 test2 
-rwxr-xr-x  1 pi pi 8184 Mar 17 15:34 test3 
-rw-r--r--  1 pi pi  131 Mar 17 15:34 test.c 

一个折中的方案

如果你觉得这条命令太长了不好敲,非要先进入到服务器,再 cd 到对应的目录。那么,我们可以修改远程服务器的 .bashrc 文件。

vim ~/.bashrc 

将你要执行的命令写在里面。比如在这个场景下,我们可以这样加:

cd /home/pi/tests >& /dev/null 

然后我们再执行 :wq 保存文件,再执行以下命令使更改生效:

source ~/.bashrc 
或者 
. ~/.bashrc 

这样,我们一进入到服务器后,就会自动进入到 /home/pi/tests 目录里。如下动图所示:

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

但是,这个有个明显的弊端,就是我们只能进入到我们指定的目录,如果要换成其它目录,那只能再改 .bashrc 文件了。

本文授权转载自公众号「良许Linux」。良许,世界500强外企Linux开发工程师,公众号里分享大量Linux干货,欢迎关注!

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


以上所述就是小编给大家介绍的《如何 SSH 到 Linux 服务器里的特定目录及执行命令?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective Java

Effective Java

Joshua Bloch / Addison-Wesley Professional / 2018-1-6 / USD 54.99

The Definitive Guide to Java Platform Best Practices—Updated for Java 9 Java has changed dramatically since the previous edition of Effective Java was published shortly after the release of Jav......一起来看看 《Effective Java》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具