bash - 使用 fzf 从目录中查找并执行程序
问题描述
我正在尝试为fzf创建一个命令行,它可以让我轻松地选择并运行我下载的众多方便实用程序(即 appimages)之一。
例如,这个 shell 命令会查找我的下载目录中的所有可执行文件:
find ~/Downloads -maxdepth 1 -perm -111 -type f
我可以将它们通过管道传输到 fzf,但是我无法将其转换为将执行所选文件并可以从我的桌面运行此脚本的脚本。
解决方案
我在这些帮助下弄清楚了:
https
://unix.stackexchange.com/questions/108782/pass-the-output-of-previous-command-to-next-as-an-argument https://askubuntu .com/questions/46627/how-can-i-make-a-script-that-opens-terminal-windows-and-executes-commands-in-the
我创建了这个脚本“find-n-exec2.sh”(将其保存在某个地方,例如 ~/Downloads)并确保更改其可执行权限:
#!/bin/bash
find ~/Downloads -maxdepth 1 -perm -111 -type f | fzf | xargs -I{} lxterminal -e {}
然后我创建了第二个脚本“find-n-exec.sh”并将其保存到我的 ~/Desktop 中(并确保更改其可执行权限):
#!/bin/bash
lxterminal --title="test" --command="bash -c '~/Downloads/find-n-exec2.sh'"
注意:我使用的是 lxterminal,所以如果您使用的是 xterm 或终端等,请确保适当地对其进行 chg。
现在我可以双击桌面上的“find-n-exec.sh”,它会打开一个窗口,列出我下载目录中的所有可执行文件...向上/向下光标以找到我想要的 pgm,然后按 Enter。它会打开一个新的终端窗口并执行该程序。
希望你觉得这个有用!
推荐阅读
- java - 如何解决 java.lang.module.ResolutionException:模块 stax.api 和 java.xml 将包 javax.xml 导出到模块 log4j
- verilog - 在系统verilog的嵌套for循环中初始化和增加一个genvar变量
- rtmp - 如何将 RTMP url 的查询部分发送到 RTMP 服务器
- javascript - Google Maps API:如何捕捉“DIRECTIONS_ROUTE:NOT_FOUND”?
- google-colaboratory - Colab:如何在不关闭选项卡的情况下断开会话?
- php - PHP Laravel 将文件 doc 转换为 pdf
- php - Kubernetes k3s:我需要从 nginx Web 服务器 pod 访问 nats 服务器
- usb - jetson XAVIER NX USB 批量失败
- laravel - 如何通过IP地址查看城市
- php - 各种结果链接