LINUX.ORG.RU

Баг в автодополнении bash?

 


0

2

Создайте в $HOME файл <«ошибка» на нем и англ> (вместе с кавычками, но без <>). Автодополнение по tab работает, когда набираешь

ls \"
но не работает при
ls \"ош
или
ls \"оши
При
ls \"о
мне вообще возвращается другой файл, без кавычек, начинающийся на «о». GNU bash, version 4.2.37(1)-release (i486-pc-linux-gnu) В чем подвох?

★★★★★

так ты укажи какой дистр, его почти во всех дистрах патчат как кто хочет.

redhat ()
Ответ на: комментарий от redhat

я не понял, проблема в баше или в пакете bash-completion, по которому указан тег?

redhat ()
Ответ на: комментарий от redhat

Linux crunchbang 3.2.0-4-686-pae. Если я правильно понимаю, bash-completion отвечает за автодополнение, например, нажатием табуляции. Поэтому я вписал bash-completion. У меня в репах этот пакет версии 1:2.0-1.

denton ★★★★★ ()
Ответ на: комментарий от denton

так впили тег крюнчбанг, потому как у меня на генте bash-completion-2.1_p20141224 и такой проблемы нет.

redhat ()

Все так, как ты написал.

Fedora 20, bash-4.2.53-2.fc20.x86_64, bash-completion-2.1-3.fc20.noarch.

Подтверждаю багу

Deleted ()

я не понял, при чем здесь кавычки, но у меня ls на ошибка - как на файл, так и на диру — нормально дополняет.

redhat ()
Ответ на: комментарий от redhat

Так весь прикол с кавычками. Попробуй со словом «ошибка» в кавычках (только кавычки обычные двойные, а не «елочки», которые подставляет ЛОР).

denton ★★★★★ ()
Ответ на: комментарий от denton

работает, но без экранирования — как это делаешь ты, зачем ты экранируешь слешом перед кавычкой?

redhat ()
$ bash --version
GNU bash, version 4.3.30(1)-release (i586-pc-linux-gnu)
$ ls \"ощибка\"\ wow 
"ощибка" wow
$ ls \"ощи<вот тут был нажат tab>бка\"\ wow 
"ощибка" wow
$ echo "у меня не работает ;_;"
у меня не работает ;_;
anonymous ()

В Арчике не воспроизводится. Автодополнение отрабатывает во всех случаях.

$ pacman -Ss bash|grep /
core/bash 4.3.033-1 (base) [установлено]
extra/bash-completion 2.1-5

blexey ★★★★ ()
Ответ на: комментарий от redhat

Ты в курсе, что двойные кавычки используются в bash, чтобы не было разбиения на месте пробела?

pete@crunchbang:~$ ls|grep ^о
общее электричество.xls
pete@crunchbang:~$ ls общее электричество.xls 
ls: невозможно получить доступ к общее: Нет такого файла или каталога
электричество.xls
pete@crunchbang:~$ ls "общее электричество.xls"
общее электричество.xls
Поэтому и экранирую, чтобы bash знал, что это не «системные» кавычки. Кроме того,
ls "о<TAB>
превращается не в
ls \"ошибка\"\ на\ нем\ и\ англ
, а в
ls "общее электричество.xls"

denton ★★★★★ ()
Последнее исправление: denton (всего исправлений: 2)
Ответ на: комментарий от denton

Только что проверил, всё работает норм.

$ touch '"ошибка" на нем и англ'
$ touch '"ошибка2" на нем и англ'
$ ls -1
"ошибка2" на нем и англ
"ошибка" на нем и англ
$ ls '"          ### <-- Тут нажал tab
$ ls '"ошибка    ### <-- Тут нажал ещё два раза tab
"ошибка2" на нем и англ  "ошибка" на нем и англ

justAmoment ★★★★★ ()
Ответ на: комментарий от justAmoment

OK, а если мне еще понадобятся одиночные кавычки в названии, например:

pete@crunchbang:~$ touch /tmp/te\'s\"t\`\ OK\!
pete@crunchbang:~$ ls /tmp/te\'s\"t\`\ OK\! 
/tmp/te's"t` OK!

denton ★★★★★ ()
Последнее исправление: denton (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.