午夜指挥官——多项选择

午夜指挥官——多项选择

Ctrl在 MC 中,我可以按+将当前文件的名称从文件列表复制到控制台Enter

假设我想要将多个文件复制到控制台。示例:想要创建*.zip多个文件:

zip new_zip.zip a.txt b.txt c.txt 231202fkfo3f.txt 

我可以使用 Insert (或等效的Ctrl+ t) 选择多个文件。我希望在此之后使用一个快捷方式,让所有选定的文件名直接进入控制台。类似于Ctrl+ Enter

有哪些方法可以实现?

答案1

如果您按下Ctrl+ ,它会将您用+或x t标记的所有文件的名称粘贴到命令行。CtrltInsert

答案2

用户菜单中有一个类似的内置解决方案F2。它被称为“对标记文件执行某些操作”,并逐个对文件运行给定的命令。

可以向此菜单添加新命令。这是一个有点棘手的解决方案,但对我来说很有效。(需要 Subshel​​l 支持。)

用户菜单配置文件通常位于:

/etc/mc/mc.menu

我的解决方案基于“对标记文件执行某些操作”。我复制了它的几行并进行了如下修改:

+ t t
p       Put selected files to history
    set %t
    while [ -n "$1" ]; do
      STR="$STR \\\"$1\\\""
      shift
    done
    bash -ic "history -s $STR" > /dev/null

第一行表示只有选择了多个文件时才显示。第二行包含标题和用户菜单内的快捷方式 ( p)。之后是一个将选定文件名添加到历史记录的 shell 脚本。

添加这几行mc.menu并注意制表符。第一行和第二行没有制表符,并且脚本是用制表符制表的。否则mc将无法解析它。

之后,您应该选择一些文件并按下F2。按下新添加的“将选定文件放入历史记录”。现在它们已添加到历史记录中,但需要重新读取才能使用。按下Ctrl+ O,然后您应该history -r在命令行中键入。最后,您将通过按下 键找到选定的文件名UP

也可以使用替代解决方案。也许更简单的方法是将字符串直接打印到终端,然后复制粘贴即可。以下脚本实现了这一点:

+ t t
p       Print selected files to subshell
    set %t
    while [ -n "$1" ]; do
      STR="$STR \"$1\""
      shift
    done
    echo "$STR"

相关内容