7

tramp的一般用法

 3 years ago
source link: https://www.lujun9972.win/blog/2016/11/17/tramp%E7%9A%84%E4%B8%80%E8%88%AC%E7%94%A8%E6%B3%95/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

tramp的一般用法

Table of Contents

1 使用tramp编辑远程文件

借助TRAMP,你可以像编辑本地文件一样来编辑远程文件.

tramp的用法很简单,只要你在 C-x C-f 选择文件时使用一种特殊的语法格式来标示文件就行了.

tramp标示文件的语法为:

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

例如 /ssh:[email protected]:~/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). 不过目前最常用的协议是 ssh, scp 以及 plink (适合于windows用户)

你也可以省略protocol,这样的话,tramp会使用 tramp-default-method 中设置的协议方式来进行连接.

2 Tramp与其他命令的整合

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

dired你可以使用dired管理远程服务器上的文件,甚至你还能够在本地与远程服务器之间相互拷贝文件! compileEmacs会在远程服务器上运行编译命令,并捕获编译结果 rgrepEmacs会在远程环境运行find和grep. 甚至点击结果中的文件链接还能正确地打开远程文件 shellEmacs会在远程服务器上开启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:[email protected]|ssh:[email protected]:/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.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK