在bash脚本中读取并完成目录名
我想提示用户输入一个目录名,并让他们能够将tab complete设置为一个有效的目录 到目前为止,我已经使用“read-e”实现了文件和目录的制表符完成。我只希望在用户按tab键时自动完成目录 以下是我所拥有的:在bash脚本中读取并完成目录名,bash,autocomplete,scripting,directory,Bash,Autocomplete,Scripting,Directory,我想提示用户输入一个目录名,并让他们能够将tab complete设置为一个有效的目录 到目前为止,我已经使用“read-e”实现了文件和目录的制表符完成。我只希望在用户按tab键时自动完成目录 以下是我所拥有的: echo "Enter a directory" read -e -p "> " DEST 当用户按tab键时,如何使bash只返回目录列表,而不是文件列表和目录列表?另一种给您很大灵活性的方法是使用compgen;有关详细信息,请参阅我的答案。以下是我对这个问题的快速理解。
echo "Enter a directory"
read -e -p "> " DEST
当用户按tab键时,如何使bash只返回目录列表,而不是文件列表和目录列表?另一种给您很大灵活性的方法是使用compgen;有关详细信息,请参阅我的答案。以下是我对这个问题的快速理解。由于某些原因,我不得不在我的计算机上使用bash而不是sh,因为使用了pushd和popd。我认为它的评论很好,我不想再进一步解释了
#!/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"
但是雅各布的回答可能比我的更有效、更清晰。read-e-p会自动完成目录和文件。您也可以使用
cd-
,而不必按下并弹出原始目录。听起来不错。你知道如何把它和标签结合起来吗?