1

我尝试为我的Midnight Commander设置自动化一些事情,并希望从菜单条目或键绑定中调用内部 Midnight Commander 命令。

比如我在.ssh/config中定义了大量的ssh站点,

# ssh (secure shell) configuration file
Host test1
    HostName 123.456.789.0
    Port 980
    User MyUserName

Host test2
    HostName test.mynet.local
    User test
    CheckHostIP no
    ..
  1. 我想过滤和排序来自 .ssh/config 的别名(例如):

    grep '^Host ' .ssh/config | cut -d ' ' -f 2 | sort
    
  2. 将结果列表存储在 Midnight Commander 内部列表框或选择面板中。

  3. 选择其中一项并调用右侧文件面板的远程 shell(如 mc sh://%s...)。

至少我想将程序存储到键绑定或 Midnight Commander 菜单项。

这可以通过 Midnight Commander 板工具或配置文件来完成吗?

4

1 回答 1

1

您正在尝试的是不可能的,因为mc不是可编写脚本的文件管理器。它甚至没有键盘宏。

但我可以想到一些较弱的替代方案。

  1. 使用F2-称为菜单(请参阅手册的格式,“菜单文件编辑”部分)。在菜单中运行您的grep命令,将主机列表传递给程序,例如dialog选择主机并运行mc sh://$host. 方法的问题:你需要学习dialog;会有第二个副本mc检测第一个副本的存在并询问您是否真的要运行第二个副本。哎哟!

  2. 或者编写一个脚本来运行grep命令,获取主机列表并以编程方式编辑~/.cache/mc/history. 该文件是类似ini的文件。您需要编辑部分[inp:fishlink_cmd: Shell link to machine ]。键只是连续的数字,值是主机名。例子:


[inp:fishlink_cmd: Shell link to machine ]
0=Host1
1=Host2

现在按F9, R[ight], h(对于Shell命令)——在打开的对话框中会有主机列表。按Alt-p/Alt-n表示上一个/下一个主机或用鼠标打开列表。

于 2018-12-13T16:00:36.910 回答