bash 脚本中的自动完成

Autocompletion in bash script

我正在尝试为我的垃圾文件夹创建恢复功能。当您 运行 脚本时,它会询问您文件夹的内容并询问您要恢复哪个文件夹,如下所示:

yedenn@hal:~/Cours$ res
-rw-r--r-- exemple
-rw-r--r-- test1
-rw-r--r-- test2
-rw-r--r-- test3   

Which to restore? _

我想知道是否有一种方法可以通过按 <TAB>(例如)来完成文件名?
到目前为止我看到的解决方案似乎只在命令行上输入时有效,而不是在脚本 运行ning.

时有效

您可以读取输入 this way-e 启用 readline 已为您准备好完成 (man readline),但您必须为文件名完成为你的垃圾目录工作,并在读取文件后,将其更改回当前目录,可能是这样的:

#!/bin/bash

trash="path/to/trash/directory"

cd "$trash"
read -e -p "Which to restore? " f
cd -

printf "\nInput: %s" "$f"
[ -e "${trash}/$f" ] && printf "\nFile: %s" "${trash}/$f"
printf "\nCurrent directory: %s\n" "$PWD"

请注意,稍后在您的脚本中您必须像上面那样引用该文件,因为 f 输入是相对于垃圾路径的。