tramp 的一般用法

发布于 2023-02-09 20:45:47 字数 2216 浏览 125 评论 0

1 使用 tramp 编辑远程文件

借助 TRAMP,你可以像编辑本地文件一样来编辑远程文件,tramp 的用法很简单,只要你在 C-x C-f 选择文件时使用一种特殊的语法格式来标示文件就行了,tramp 标示文件的语法为:

/[protocol]:[user@]hostname[#port]:path-to-file 

例如 /ssh:cnaps2@10.8.6.10:~/tmp/t.log 会通过 ssh 协议,以 cnaps2 用户登录 10.8.6.10 这台机,并访问上面的 ~/tmp/t.log 文件,当你用 tramp 打开 remote 文件时,会在 modeline 上显示一个 @10.8.6.10 这样的标识,说明这个是一个 10.8.6.10 上的远程文件。

tramp 支持通过多种协议来编辑远程文件(具体 tramp 支持哪些协议,请参见 tramp-methods),不过目前最常用的协议是 sshscp 以及 plink (适合于 windows 用户),你也可以省略 protocol,这样的话,tramp会使用 tramp-default-method 中设置的协议方式来进行连接。

2 Tramp与其他命令的整合

Tramp对其他命令来说几乎都是透明的. 下面是一些与 tramp 实现无缝结合的常用命令:

dired
你可以使用dired管理远程服务器上的文件,甚至你还能够在本地与远程服务器之间相互拷贝文件
compile
Emacs会在远程服务器上运行编译命令,并捕获编译结果
rgrep
Emacs会在远程环境运行 find 和 grep,甚至点击结果中的文件链接还能正确地打开远程文件
shell
Emacs会在远程服务器上开启 shell
eshell
在eshell中你可以直接 cd 到远程服务器上的目录中,随后执行的命令皆为在服务器环境上执行的命令
bookmark
你可以将远程文件记录为书签,当打开书签时,Emacs 会自动连接上远程服务器打开服务器上的文件

3 其他用法

3.1 用户切换

除了编辑远程文件外,tramp 还能让你以另一个客户的身份来打开文件,方法是使用 sudosu 协议,例如 /sudo:root@localhost:/etc/fstab 就会以 root 用户的身份打开本地 /etc/fstab 文件。

我们也可以省略其中的 root@ 这是它的默认值,所以上面的例子可以缩写为 /sudo:localhost:/etc/fstab

3.2 多重跳转

若连接远程主机时需要通过一个中间跳板机,则需要使用 tramp 的多重跳转格式了,tramp 的多重跳转格式为

/protocol:user@hop1|protocol:user@hop2|protocol:user@dest-host:/path-to-file

例如 /ssh:cnaps2@10.8.6.10|ssh:cnaps2@10.8.6.9:/tmp/t.log 会先以 cnaps2 连接 10.8.6.10,然后再以 cnaps2 连接上 10.8.6.9 并访问上面的 /tmp/t.log 文件,另外,由于 sudo/su 理论上也是一个新的链接,因此你也可以将其用在多重跳转中。

例如 /ssh:homer@powerplant|sudo:powerplant:/root/salary.txt 会先以 homer 用户连接上 powerplant 主机,然后再通过 sudo 以 root 身份打开 /root/salary.txt

需要注意的是,上例中 sudo 后面的主机名 powerplant 需要重复输入

如果经常需要通过代理访问远程主机上的文件的话,还可以通过配置变量 tramp-default-proxies-alist 来指定通过哪个代理来访问 user@host。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
28 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文