我想提示用户输入一个目录名,并让他们能够选项卡完成一个有效的目录。
到目前为止,我已经使用“read -e”为文件和目录提供了tab-completion工作。我只希望当用户按Tab键时自动完成目录。
这就是我所拥有的:
echo "Enter a directory"
read -e -p "> " DEST
如何让bash仅在用户按Tab键时返回目录列表,而不是文件列表和目录?
答案 0 :(得分:3)
使用compgen的另一种方法是提供很大的灵活性;有关详细信息,请参阅我的回答here。
答案 1 :(得分:0)
这是我对这个问题的快速看法。出于某种原因,由于使用了pushd和popd,我不得不实际使用bash而不是在我的计算机上。我认为这个评论已经足够让我不再解释了。
#!/bin/sh
tempdir=`mktemp -d`
# save the current directory
pushd .
# make a new folder, then make a bunch of new directories
# mirroring those in our current directory
for i in $(find . -type d); do mkdir "$tempdir/$i" ; done
# change to the temporary directory
cd "$tempdir"
echo "Enter a directory"
read -e -p ">" DEST
echo "You told me $DEST"
# return to our original directory
popd
# clear out that temporary directory we made
rm -rf "$tempdir"
但雅各布的反应可能比我的更有效率和更清洁。