- Сломалось автодополнение в bash
- Как исправить Tab Completion, не работающее в Ubuntu и Debian
- Включить завершение табуляции в дистрибутивах Linux на основе Ubuntu и Debian
- Дальнейшее устранение неполадок автоматического завершения
- Клавиши Backspace, Tab, Del и стрелки не работают в терминале (используя ssh)
- 10 ответов
- Linux tab не работает
- Terminal autocompletion ‘tab’ not working as intended?
- 3 Answers 3
Сломалось автодополнение в 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.
ОК, это понятно и логично, но также он и имена файлов не дополняет, например
Источник
Как исправить Tab Completion, не работающее в Ubuntu и Debian
Главное меню » Операционная система Ubuntu » Как исправить Tab Completion, не работающее в Ubuntu и Debian
Одним из первых, что мы сделали, было создание пользователя sudo на этом недавно созданном тестовом сервере под управлением Ubuntu 18.04 LTS. При использовании сервера мы заметили что-то странное.
Tab Completion не работает должным образом. Tab Completion – один из основных ярлыков терминала, без которого некоторые не могут жить. Представьте себе ужас работы в командной строке Linux, где не работает завершение табуляции. Это негативно влияет на вашу производительность, и вы чувствуете, что важная часть вашего терминала отсутствует.
Хорошо, что это легко исправить. Позвольте нам показать вам, как исправить не работающее завершение табуляции.
Включить завершение табуляции в дистрибутивах Linux на основе Ubuntu и Debian
Завершение с помощью вкладок – это настолько большая часть Linux, что вы никогда бы не подумали, что это нужно включить явно. К сожалению, вот как это работает.
Видите ли, некоторые облачные серверы предпочитают иметь минимальный образ дистрибутива Linux, потому что это экономит время при развертывании. Но это также означает, что установка Linux будет иметь только несколько пакетов.
И это то, что произошло в этом случае. На недавно установленном сервере Ubuntu отсутствовал пакет bash-completion.
Вы можете быстро и легко установить этот пакет, используя стандартную команду apt:
Вам нужно будет выйти (или выйти из оболочки), чтобы увидеть его эффект.
Дальнейшее устранение неполадок автоматического завершения
Как правило, это должно решить проблему, но если bash-complete уже установлен и у вас все еще есть проблема, вы можете попробовать переустановить ее.
Выйдите из системы и проверьте, работает ли она или нет. Если нет, вы можете вручную отредактировать свой файл конфигурации bash, представленный в
Если он еще не существует, вы должны его создать. Затем вы можете добавить следующие строки в ваш файл bashrc:
Вы можете отредактировать файл в терминале, используя текстовый редактор на основе терминала, такой как Vim.
Мы надеемся, что это быстрое небольшое руководство решило проблему с Tab Completion. Если у вас есть какие-либо вопросы или предложения, пожалуйста, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Клавиши Backspace, Tab, Del и стрелки не работают в терминале (используя ssh)
Когда я захожу на другой компьютер Ubuntu с моей учетной записью (с разрешениями sudo), моя клавиша Backspace генерирует некоторые неудобные символы при нажатии. Также не работают клавиши Tab, Del и Arrow.
С другой стороны, у меня также есть другая учетная запись на той же машине, и когда я ssh через эту учетную запись, его терминал работает отлично. Я не мог понять, почему это происходит.
10 ответов
РЕДАКТИРОВАТЬ: Ссылка: ответ Матенга
Матенг близок к тому, что я думаю, что вы, вероятно, управляете Bourne Shell. Но вы не должны редактировать свой /etc/passwd файл напрямую. Попробуйте использовать chsh команда вместо:
Флаг -s сделает новую оболочку (в данном случае Bash) вашей оболочкой для входа в систему.
Следующие изменения решили проблему для меня. Сначала я проверил, какая оболочка запущена:
Как я читал в этом посте в Ubuntuforums, изменение оболочки на /bin/bash приносит решение. Поэтому я отредактировал свои настройки пользователя в /etc/passwd чтобы:
Я вышел из системы, затем снова вошел в систему. Странно, мне пришлось переключать оболочку вручную (возможно, какой-то кэш был активен), введя это:
Вуаля!
[Проблема возникла из-за обновления дистрибутива.]
При первом входе в ssh попробуйте эти две команды
Я должен сделать это на некоторых машинах, которые я вхожу, чтобы решить именно эту проблему
Один из самых простых способов решить эту проблему — набрать / bin / bash в командной строке интерфейса:
Вышеупомянутая команда выполнит Оболочку Bourne Again поверх существующей оболочки как подпроцесс. Это представляет собой недостаток использования большего количества ресурсов, но ничего не нужно редактировать и никаких специальных разрешений не требуется. Например, в последних версиях Kubuntu он запускает сеанс / bin / bash поверх интерфейса командной строки по умолчанию / bin / dash.
Однако, чтобы сохранить изменения, можно отредактировать файл /etc/passwd и добавить / отредактировать / заменить оболочку по умолчанию в / bin / bash после последнего символа «:» в строке, соответствующей пользователю. Однако для редактирования этого файла потребуются права администратора.
Я перепробовал все вышеизложенные плюсовые заметки от (по этой ссылке) безуспешно. Вы можете проверить, установлен ли vim.
Я обычно использую vi, а не vim. Поэтому я установил vim.
После этого нажатия клавиш начали работать правильно, когда я выполнил vi. Глядя на вывод следующего, похоже, что vi был сделан псевдонимом vim после установки:
«Терминал Gbnome» точно не эмулирует «xterm».
Терминал GNOME эмулирует эмулятор терминала xterm и предоставляет некоторые из тех же функций.
Трактат о проблеме и ее решениях можно найти здесь:
Каждый пользователь Linux рано или поздно оказался в ловушке в ситуации, когда рабочие клавиши Backspace и Delete на консоли и на X казались невозможными. Эта статья объясняет, почему это происходит, и предлагает решения. Представленные здесь понятия по существу не зависят от дистрибутива: из-за разного содержания файлов конфигурации системы в каждом дистрибутиве я постараюсь дать читателю достаточно знаний, чтобы при необходимости продумать свои собственные исправления.
Я предполагаю, что клавиша Backspace должна вернуться на один символ назад, а затем стереть символ под курсором. С другой стороны, клавиша Delete должна удалять символ под курсором, не перемещая его. Если вы считаете, что необходимо заменить функцию двух клавиш, несмотря на то, что на большинстве клавиатур имеется клавиша Backspace со стрелкой, указывающей влево (←), то этот документ не даст вам немедленных решений, но, безусловно, вы может найти объяснения, приведенные здесь полезными.
Самое простое решение (которое может работать здесь) — использовать: bash $ export TERM = gnome
От имени пользователя root отредактируйте файл /etc/passwd для своего пользователя и измените с /bin/sh на / bin / bash
hdfs: x: 1020: 1001:: / home / hdfs: /bin/sh to hdfs: x: 1020: 1001:: / home / hdfs: / bin / bash
Это сработало для меня.
Ни один из приведенных выше ответов не устранил мою идентичную проблему, то есть не может использовать клавишу Backspace или аналогичные ключи после sshing на удаленный компьютер из Ubuntu (здесь ubuntu-17.10 с ncurses-6.0).
Это в конечном итоге проблема с terminfo. По сути, мой gnome-терминал говорит, что это терминал xterm-256color (через переменную TERM, который экспортируется с помощью ssh на удаленный компьютер), но на удаленном компьютере не было конфигурации terminfo для xterm-256color.
Выполнение следующих действий решило проблему:
infocmp без какой-либо опции создает листинг источника для терминала в переменной окружения $TERM. Так что это эквивалентно infocmp -I $TERM.
Затем полученный источник компилируется через тик.
Наконец, установите соответствующую конфигурацию terminfo в удаленном месте. Итак, в следующий раз, когда я подключусь к $ remote через $ host, он узнает о моем терминале.
Это проблема совместимости с клавиатурой, т. Е. Как она интерпретируется в хост-системе. Возможно, вам придется использовать j или h для перемещения в редакторе vi в командном режиме. Стрелки не будут работать.
Проверьте настройки профиля -> совместимость в хост-системе для этого конкретного пользователя.
Если вы добавлены в качестве другого нового пользователя, используйте следующую команду, которая добавит вас в sudo группа. Это должно быть сделано с использованием основной учетной записи пользователя, у которой есть разрешение на использование sudo .
Хорошо, я знаю, что это не «решение», скажем так, и это может не помочь многим из вас, но, надеюсь, это поможет по крайней мере 1 из вас. Это решило мою проблему.
Мой шестимесячный ребенок стучал по моей клавиатуре, и мои клавиши со стрелками перестали работать на моей сессии замазки в коробку Debian. Они работали везде (все остальные программы, кроме шпатлевки). После Google и даже посадки здесь (я собирался закрыть эту вкладку, это не решило это для меня). Я попробовал что-то. Я открыл новый сеанс SSH в том же окне, и мои клавиши со стрелками работали. Я присоединился к своему сеансу экрана, и они не работали. Так что что-то произошло, привязанное к текущей сессии экрана, отключив клавиши со стрелками. К сожалению, я был (я) в середине большого проекта, у меня было открыто 28 окон в сеансе экрана, и я не хотел закрывать сеанс, теряя свое место во всех 28 окнах.
Находясь в оболочке bash, я попробовал все возможные комбинации: CTRL + вверх, вниз, влево, вправо, ALT + вверх, вниз, влево, вправо, SHIFT + вверх, вниз, влево вправо, CTRL+ALT+ вверх, вниз, влево вправо, CTRL+SHIFT+ вверх, вниз, влево, вправо и т. д. Тем не менее, безуспешно, я также попробовал меню Windows и клавиши приложения Windows вверх, вниз, влево вправо.
Теперь мои стрелки снова работают! Что-то в одной из комбинаций того, что было выше, и клавиши со стрелками исправили это.
Источник
Linux tab не работает
Одна из мелких неприятностей, которые постоянно надоедают — это отсутствие автодополнения по клавише «tab» по-умолчанию в некоторых операционках, особенно в команде apt. По идее, первое, что приходит в голову при установке свежей операционки — это сделать apt-get update && apt-get upgrade да ещё и понаставить кучу всякого софта с помощью того же apt, но неработающее автодополнение просто выносит.
В Debian 8, например, автоматическое дополнение начинает работать по клавише tab только после установки sudo, да и то, если мы пользуемся этим самым sudo.
Чтобы автодополнение заработало в Debian 8, нужно отредактировать файл /etc/bash.bashrc
# enable bash completion in interactive shells
# if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
# fi
и раскомментировать строки:
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
После этого следует перезайти в сессию.
Если возникают какие-либо проблемы с этим, можно установить\переустановить пакет автодополнения bash-completion:
Источник
Terminal autocompletion ‘tab’ not working as intended?
I know this has been discussed on other posts but my problem does not seem to be fully resolved and I do not have permission to add a comment to those posts yet 🙁
listed on help.ubuntu.com > UsingTheTerminal > Save on Typing:
Tab: «It autocompletes any commands or filenames».
After following the advise from apt-get autocomplete I get results after pressing tab twice but no auto completion for commands or files. Running Xubuntu 13.04.
3 Answers 3
To enable smart completion
Using sudo and your favorite editor, edit your /etc/bash.bashrc file.
Uncomment the following lines, by removing the # in the beginning of the lines:
Now you can use tab completion to power your way through commands.
it completes file name only if the initials you are providing is unique , and don’t have any other possible file name:
Suppose you have two file file1expo and file2expo in working directory-
then using gedit file > will not work because it has two possible outcomes, where as gedit file1 > will work.
If you want to list all the files starting with initials like xaa then simply use
it will show all the files names with starting characters xaa .
This can be frustrating, that is for sure! One quick and easy workaround would to just use bash instead of sh .
You may be defaulting to using /bin/sh as your shell instead of /bin/bash . Personally I like bash better as it has Tab-autocompletion turned on out of the box.
Check to determine your shell:
Launch bash to ensure this fixes the issue:
Now try the Tab-autocompletion. If it works, then change your default shell from /bin/sh to /bin/bash using the chsh (change shell) command for that user:
Logout and log back in. Now all new shells will Tab-autocomplete.
Источник