使用BASH select命令从文件列表中打开文件

时间:2017-05-06 15:21:02

标签: bash select

我有一个文件list.txt,其中包含文件列表:

file-1.txt
file-2.txt
...
file-n.txt

我想使用Bash select命令生成菜单,以便我可以打开我选择的文件。

我尝试了这个,但它不起作用:

select d in list.txt; 
do test -n "$d" && break; 
echo ">>> Invalid Selection"; 
done
open "$d"

2 个答案:

答案 0 :(得分:1)

$ help select
select: select NAME [in WORDS ... ;] do COMMANDS; done    
...

选择会获取单词列表,就像for一样,而不是文件名。

您需要使用select d in $(cat list.txt)之类的内容来读取文件中的选项。但要注意分词和文件名通配的常见问题,即如果列表中的名称可以包含空格则设置IFS=$'\n',如果它们可以包含glob字符,则使用set -f

答案 1 :(得分:0)

这是最终工作的所有内容,归功于@ eush77和@ilkkachu。

我添加了一个额外的部分:文件列表由搜索程序(ripgrep)生成。代码似乎处理文件名中的空格。

HOLDLOCK