Чтение и заполнение табуляции имени каталога в bash-скрипте - PullRequest
4 голосов
/ 29 июня 2009

Я хочу запросить у пользователя имя каталога и сделать так, чтобы он мог завершить табуляцию действительным каталогом.

Пока что у меня есть работа с завершением табуляции для файлов и каталогов с использованием "read -e". Я хочу, чтобы каталоги автоматически заполнялись, когда пользователь нажимает на вкладку.

Вот что у меня есть:

echo "Enter a directory"
read -e -p "> " DEST

Как сделать так, чтобы bash возвращал список каталогов, только когда пользователь нажимает на вкладку, а не список файлов и каталогов?

Ответы [ 2 ]

3 голосов
/ 29 июня 2009

Альтернативный подход, который дает вам большую гибкость, заключается в использовании compgen; см. мой ответ здесь для деталей.

0 голосов
/ 29 июня 2009

Вот мой быстрый взгляд на проблему. По какой-то причине мне пришлось использовать 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"
<Ч />

Но ответ Джейкоба, вероятно, более эффективен и чище, чем мой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...