Сломалось автодополнение в bash
Сейчас заметил что не работает автодополнение (по tab’у) в bash, например не дополняет имена файлов, если просто протабать на пустой строке говорит
и потом выводит содержимое каталога в котором нахожусь, при этом выводи только половину информации — если поставить пробел и протабать выводит больше файлов. Если ввести первые несколько символов команды то тогда дополняет нормально. В общем как это можно вылечить? Google говорит о проблемах при обновлении bash-completion, но его я давно не обновлял, свежая версия только если из git тянуть.
ОС — Debian jessie/sid, версия bash-completion 1:2.1-2.
UPD. В процессе написания поста заметил что в, например, /etc нормально дополняет имена файлов.
Это известная проблема, фикс тоже известен:
chsh -s /bin/zsh
Нет, спасибо, этот вариант мне не подойдет.
Опаньки, у тебя сезонное обострение, срочно к доктору!
Так, снес bash-completion — без него работает нормально, хоть знаю куда копать.
-bash: words: неправильный индекс массива
Это нормальное и правильное поведение — bash не дополняет любые каталоги указанные в начале — он дополняет только команды, исполняемые файлы, и каталоги такие файлы содержащие. Дополнение каталога /etc (содержащего скрипты и пр. — тому подтверждение). И каталоги /bin, /usr/bin и т.п. он будет тоже дополнять А вот домашний каталог как правило не содержащий файлов с признаком x он дополнять не станет, и /usr/share так же не будет — надо указать хотя-бы /, а для просмотра текущего каталога следует сначала указывать ./ а затем уже жать tab. Чтобы получить полный перечень — лучше всего запрос предварять какой-нибудь командой, например ls.
ОК, это понятно и логично, но также он и имена файлов не дополняет, например
Источник
Терминал автозаполнения не работает должным образом
Если я начну вводить команду, например, apt-g после нажатия tab , оболочка завершит выполнение команды apt-get , но для второй части команды, например install , если я введу некоторые символы, например insta , нажатие tab , не завершит ее install .
Другой пример: после того, как я вхожу, sudo удар tab не завершает ничего. например: sudo apt-ge [ tab ] и ничего.
Я установил Ubuntu с помощью mini iso (сетевой установщик 40 МБ), так что, возможно, есть конфигурация, которую я пропустил!
Я добавил этот код в мой, .bashrc но все равно он не работает:
Я также проверил разрешение .bashrc и это -rw-r—r— .
Я также использую источник .bashrc изменений после изменения, source .bashrc чтобы применить изменения к новой среде, но по-прежнему никаких эффектов.
Я использую, xfce4-terminal поэтому я подумал, что это может быть терминал, а не bash.
Не имеет никакого значения тоже.
bash-completion это набор сценариев bash, который позволяет настраивать завершение для определенных команд.
Это не только для файлов и каталогов, но также, например, для команд. Таким образом, вы вводите частичные команды и, нажав, Tab мы получаем автоматическое завершение команд.
Монтаж
Шаг 1: Установите bash-complete
И иногда это работает, если мы переустановили его следующей командой:
Шаг 2: Включите bash-complete в вашем .bashrc файле
Откройте свой, gedit
/.bashrc и если этого контента там нет, добавьте его в конце и сохраните.
Важно: После изменений нужно исходный код своего
/.bashrc с source
/.bashrc или возобновить ваш терминал. Это должно быть исправлено сейчас.
/ .bashrc сработало для меня. Только один комментарий; вам не нужно выходить из системы и снова входить в систему, чтобы она работала (возможно, вы не захотите завершать то, в чем вы работаете), вы можете просто запустить source
Источник
автозаполнение не работает для «Sudo apt-get install»
Хорошо, мой колледж только что показал мне, что ты можешь сделать
Это автоматически завершает имя пакета. Просто для примера .
Sudo apt-get install ged приводит к Sudo apt-get install gedit
Сейчас я пытался сделать это, но это не работает для меня.
Как я могу решить это? Нужно ли устанавливать пакет? Мой колледж сказал мне, что он не установил ничего дополнительного для этого.
Bash поддерживает еще несколько видов автозаполнения, а не только завершение имени файла.
В файле /etc/bash.bashrc вы найдете абзац, подобный этому или подобный этому:
(этот пример взят из Debian, но, вероятно, идентичен версии Ubuntu)
Удаляя символ # в начале каждой строки, вы вводите в действие множество дополнительных правил завершения. (Не удаляйте # в первой строке . это действительно комментарий 😉
Я полагаю, что apt-get завершения относятся к числу тех, кому это позволено. Если нет, вы можете подумать о переходе на Zsh. Я знаю, что они поддерживают это 😉
Я обнаружил, что на моем это происходило, потому что bash-completion по какой-то причине не был установлен. Итак, это исправлено (12.04):
У меня была такая же проблема после установки Ubuntu 15.10.
Переустановка bash-completion сработала для меня:
В Ubuntu это тоже начало меня раздражать, поэтому я просто сделал (в терминале):
теперь это работает, как я хочу это снова . HTH 🙂
Это отличается от примера, приведенного Полом Хеншем, мой пришел из Ubuntu 12.04. Я не уверен, что именно будет делать версия Полса, может быть, он мог бы уточнить это немного?
Другой проблемой может быть сбой apt-get update . После удаления неправильных источников и запуска apt-get update я восстановил автозаполнение.
Откройте терминал и
После того, как я установил bash-complete, эта проблема исправлена в моей стороне.
это случается со мной, когда либо:
Я использую свой университетский компьютер, где я не могу использовать автозаполнение, потому что я не суперпользователь.
Ppa пакета, который вы пытаетесь загрузить, отсутствует в вашем source.list . Таким образом, терминал не может распознать пакет, который вы пытаетесь загрузить.
ПРИМЕЧАНИЕ. Это может относиться не ко всем. Делюсь своим опытом
Источник
автозаполнение не работает для «sudo apt-get install» [дубликат]
На этот вопрос уже есть ответ здесь:
Хорошо, мой колледж только что показал мне, что вы может сделать
Что он автоматически дополняет имя пакета. Просто для примера .
sudo apt-get install ged приводит к sudo apt-get install gedit
Я попытался сделать это, но у меня это не сработало.
Как я могу это решить? Мне нужно установить пакет? В колледже мне сказали, что он ничего для этого не устанавливал.
7 ответов
В Ubuntu это начало раздражать меня также, таким образом, я просто сделал (в терминале):
теперь это работает как, я хочу это к снова. HTH 🙂
Это отличается от примера, который дал Paul Hänsch, мой прибыл из человечности 12.04. Я не уверен, что версия Pauls сделала бы точно, возможно, он мог уточнить это немного?
Я обнаружил, что на моем это происходило, потому что bash-completion не был установлен по некоторым причинам. Так что это исправило это (12.04):
Другая проблема может быть неудачной apt-get update . После удаления неправильных источников и запуска apt-get update я восстановил автозаполнение.
Откройте Терминал и
После того, как я установил bash-complete, эта проблема исправлена на моей стороне.
Bash поддерживает некоторые виды автозаполнения, а не только завершение имени файла.
В файле /etc/bash.bashrc вы найдете абзац, подобный этому или подобный этому:
(этот пример взят из Debian, но, вероятно, идентичен версии Ubuntu )
Удаляя символ # в начале каждой строки, вы вводите в действие множество дополнительных правил завершения. (Не удаляйте символ # в первой строке . это действительно комментарий; -)
Я считаю, что дополнения apt-get входят в число тех, для которых это разрешено. Если нет, вы можете подумать о переходе на Zsh. Я знаю, что они поддерживают это; -)
Источник
автозаполнение не работает для «sudo apt-get install» [duplicate]
У этого вопроса уже есть ответ:
Хорошо, колледж мой только показал мне, что вы могли бы сделать
Это автоматически завершает имя пакета. Только для примера .
sudo apt-get install ged результат sudo apt-get install gedit
Теперь я попытался сделать это, но это не работает для меня.
Как я могу это решить? Нужно ли устанавливать пакет? Мой колледж сказал мне, что он ничего не установил для этого.
7 ответов
Bash поддерживает несколько видов автозаполнения, а не только завершение имени файла.
В файле /etc/bash.bashrc вы найдете абзац, подобный этому или похожий на это:
(этот пример относится к debian, но, вероятно, идентичен версии Ubuntu)
Удалив символ # в начале каждой строки, вы ввели много дополнительных правил завершения. (Не удаляйте # в первой строке . это действительно комментарий;)
Я считаю, что apt-get завершает работу с теми, кто включен с этим. Если нет, вы можете подумать о переключении на zsh. Я знаю, что они его поддерживают; -)
Я обнаружил, что это произошло, потому что по какой-то причине не был установлен bash-completion . Так это исправлено (12.04):
У меня была такая же проблема после установки Ubuntu 15.10.
Переустановка bash-completion работала для меня:
В Ubuntu это тоже меня раздражало, поэтому я просто сделал (в терминале):
теперь он работает, как будто я хочу его снова . HTH:)
Это отличается от примера, который дал Павел Хенш, мой пришел из ubuntu 12.04. Я не уверен, что версия Паулса будет делать точно, может быть, он может немного подумать об этом?
Другая проблема может быть неудачной apt-get update . После удаления неправильных источников и выполнения apt-get update , я получил свой автозаполненный файл.
Откройте терминал и
После установки bash-завершения эта проблема исправлена в моей стороне.
это происходит со мной, когда:
Я использую свой университетский компьютер, где я не могу использовать автозаполнение, потому что я не суперпользователь.
Пакет пакета, который вы пытаетесь загрузить, не находится в вашем source.list . Таким образом, терминал не может распознать пакет, который вы пытаетесь загрузить.
ПРИМЕЧАНИЕ. Это может не относиться ко всем. Просто поделитесь своим опытом.
Источник