在bash中,“read -e -r”显示ls为选项卡,tab在同一行上按,而不是在输入以\开头时的新行

时间:2014-08-11 14:28:04

标签: bash

我正在使用" read -e -r filelocation"在bash中将文件位置读入变量。

当用户(我们使用fedora 20)用" \ a"开始输入时并按两次Tab键执行一个目录的ls(正如你可能期望的那样./,但是由于某种原因,它不是当前目录,它是当前目录parent中的另一个目录),但它显示当前行上的ls查询的第一个输出,而不是新行,它看起来像这样:

  

请输入此报告的位置(输入0表示退出):

然后,一旦用户输入了" \ a"然后显示两次按下标签:

  

audit.csv这个报告的位置(输入0到退出):\ a

有没有人知道解决这个问题的方法,还是我不得不忍受的错误?

P.S。在任何地方放置一个反斜杠,但第一个字符很好并且表现得像你期望的那样,即" / a \ pps \"然后选项卡将输入行更改为" / apps /"因此,当您按Tab键时,再次选项卡将会显示在/ apps /目录中。

编辑。 我的代码如下:

echo -n "Please enter the location of this report (type 0 to exit): "
read -e -r filelocation

1 个答案:

答案 0 :(得分:1)

你没有提到你是如何产生这种提示的。

您应该使用以下内容:

read -p "Please enter the location of this report (type 0 to exit): " -e -r filelocation

如果你这样做了:

echo -n "Please enter the location of this report (type 0 to exit): "
read -e -r filelocation

然后你会发现你所期待的,因为readline不会意识到有提示。