【问题标题】:Dynamically pipe user input into a variable for ls bash动态地将用户输入通过管道传输到 ls bash 的变量中
【发布时间】:2021-11-13 07:46:35
【问题描述】:

我有以下一个 sed 衬垫,用于美化 lsing 我的所有 .desktop 文件的输出。

ls -1 | sed -e 's/\.desktop$//' | sed -e 's/\org.gnome.//' | grep "$name" | head -1

目前我有一个读取命令,我通过管道将其输入到 $name 变量中以供输入。你能给我一些关于如何使其动态输出或自动完成我输入的内容的想法吗?就像 Rofi 或其他应用启动器一样?

【问题讨论】:

  • 查看readline 的制表符补全。在您键入时,我不知道有任何基于终端的自动建议。你可以搜索“命令行自动完成 Linux”,看看会出现什么。了解ls 到 4 管道、sed 的 2 次调用以及 grephead 各一次的调用远非理想。 find 命令可能可以满足您的所有需求。
  • 谢谢伙计,当我说自动完成时,我的意思是 ls 命令看起来像是自动完成您输入的 ls 搜索,而不是命令自动完成只是为了澄清。
  • 当然,我理解你的意思是你开始输入,然后显示一个列表或类似的列表,其中包含以该前缀开头的所有命令。如果我弄错了,我深表歉意。在使用 Linux 桌面将近两个十年之后,我不知道有任何东西可以为命令行提供您会看到的东西,例如在文本编辑器中。没有技术原因它不能,但按照惯例,命令行通常依靠readline 使用tab 循环浏览或显示前缀命令。 history 允许搜索过去的命令行,并且 shell 提供了快捷方式。

标签: bash


【解决方案1】:

您可以尝试peco 实用程序。 (也为several distributions打包。)

来自其 github 页面:

peco 可以成为过滤日志、处理统计信息、查找文件等内容的好工具,因为与 grep 不同,您可以随心所欲地输入并查看当前结果。

fzf“命令行模糊查找器”实用程序 (repos) 类似:

它是一个交互式 Unix 命令行过滤器,可用于任何列表;文件、命令历史记录、进程、主机名、书签、git 提交等。


还有其他选项列表:https://alternativeto.net/software/peco/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2019-12-05
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多