提示文件路径:主目录别名和区分大小写的选项卡完成

时间:2012-12-18 01:34:55

标签: bash shell

我正在编写一个shell脚本,提示用户输入文件路径:

read -e -p "Enter the path to the file: " FILEPATH

然后我使用此文件路径执行操作 - 即压缩文件夹。

(cd "$FILEPATH"; tar -cvz *) > /tmp/torrent.tar.gz;

在提示符处,如果我使用~别名(主目录),那么shell脚本似乎不理解这一点,因为tar函数压缩了错误的路径。无论如何我可以允许这个别名吗?

此外,选项卡完成似乎在提示符下区分大小写。我想知道如何改变它?

2 个答案:

答案 0 :(得分:1)

使用eval的示例:

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH
cd $FILEPATH
echo $PWD

在你的情况下,它变为:

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH
(cd "$FILEPATH"; tar -cvz *) > /tmp/torrent.tar.gz;

要处理空格,您可以使用sed:

read -e -p "Enter the path to the file: " FILEPATH
FILEPATH=$(echo $FILEPATH | sed 's/ /\\ /')
eval FILEPATH=$FILEPATH
cd "$FILEPATH"
echo $PWD

答案 1 :(得分:0)

您可以像这样自己应用替换:

filepath=${filepath/\~/$HOME}

我不知道是否有办法让shell为你做这件事。

以下是您对其他问题的回答:https://superuser.com/questions/90196/case-insensitive-tab-completion-in-bash