【问题标题】:How do I call an internal Midnight Commander command from menu entries or key bindings?如何从菜单条目或键绑定调用内部午夜指挥官命令?
【发布时间】:2019-05-14 08:19:11
【问题描述】:

我尝试为我的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 板工具或配置文件来完成吗?

【问题讨论】:

    标签: configuration customization mc


    【解决方案1】:

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

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

    1. 使用 F2 调用菜单(有关格式,请参见 the manpage,“菜单文件编辑”部分)。在菜单中运行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
    

    现在按 F9R[ight]、h(对于 Shell 命令)- 在打开的对话框将显示主机列表。按 Alt-p/Alt-n 选择上一个/下一个主机或用鼠标打开列表。

    【讨论】:

      猜你喜欢
      • 2013-01-26
      • 2013-02-04
      • 2017-01-06
      • 1970-01-01
      • 2016-01-01
      • 2016-12-25
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      相关资源
      最近更新 更多