我正在尝试为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。它会打开一个新的终端窗口并执行该程序。
希望你觉得这个有用!
如果要在同一终端中运行命令:
#!/bin/bash
executable=$(find ~/Downloads -maxdepth 1 -perm -111 -type f | fzf)
$executable