Terminal autocomplete tidak berfungsi dengan baik

56

Jika saya mulai mengetik perintah seperti apt-gsetelah memukul tab, shell menyelesaikan perintah apt-get, tetapi untuk bagian kedua dari perintah seperti install, jika saya memasukkan beberapa karakter seperti insta, memukul tab, tidak menyelesaikannya install.

Contoh lain: setelah saya masuk, sudomemukul tabtidak menyelesaikan apa pun. misalnya: sudo apt-ge[ tab] dan tidak ada.

Saya menginstal Ubuntu menggunakan mini iso (penginstal jaringan 40MB), jadi mungkin ada konfigurasi yang saya lewatkan!

Saya telah menambahkan kode ini ke saya .bashrctetapi tetap saja tidak berfungsi:

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

Saya juga sudah memeriksa izin .bashrcdan itu -rw-r--r--.

Saya juga sumber .bashrcsetelah menggunakan perubahan source .bashrcuntuk menerapkan perubahan ke lingkungan baru tetapi masih tidak ada efek.

Saya menggunakan xfce4-terminaljadi saya pikir itu mungkin terminal dan bukan bash.

Tetapi mengedit:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

Dan mengubah:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

untuk:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

Tidak ada bedanya juga.

Ravexina
sumber

Jawaban:

84

bash-completion adalah serangkaian skrip bash yang memungkinkan penyelesaian yang dikustomisasi untuk perintah tertentu.

Ini bukan hanya untuk file dan direktori, tetapi juga misalnya untuk perintah. Jadi, Anda mengetik sebagian dari perintah dan dengan menekan, Tabkami mendapatkan perintah secara otomatis.

Instalasi

Langkah 1: Instal penyelesaian bash

$ sudo apt-get install bash-completion

Dan beberapa kali ini berfungsi jika kita menginstalnya kembali dengan perintah follwing:

$ sudo apt-get install --reinstall bash-completion

Langkah 2: Aktifkan bash-completion dalam .bashrcfile Anda

Buka Anda gedit ~/.bashrcdan jika konten ini tidak ada di sana, tambahkan di akhir dan simpan.

# 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

Penting: Setelah perubahan, Anda perlu sumber ~/.bashrcdengan source ~/.bashrcatau membuka kembali Terminal Anda. Itu harus diperbaiki sekarang.

αғsнιη
sumber
1
Saya ingin mengonfirmasi bahwa menambahkan blok kode di atas ke file ~ / .bashrc berhasil bagi saya. Hanya satu komentar; Anda tidak perlu keluar dan masuk lagi untuk membuatnya berfungsi (Anda mungkin tidak ingin menghentikan pekerjaan Anda), Anda bisa menjalankannya source ~/.bashrc.
nullgeppetto
Saya harus membuka kembali Terminal agar bisa berfungsi!
Gilberto Albino
2
Penyelesaian tiba-tiba berhenti bekerja untuk saya, langkah-langkah di atas tidak memperbaiki masalah. Ada ide tentang cara mengatasi masalah? Di ubuntu 16.04
Gudlaugur Egilsson
1
Langkah 2 melakukannya untuk saya. Atau dapatkan templatnya dari/etc/skel/.bashrc
Hendy Irawan
1
@SergioIvanuzzo tidak yakin masalah apa yang Anda hadapi, Anda mungkin melihat unix.stackexchange.com/q/219342/72456 ini membantu, jika tidak buka pertanyaan Anda sendiri untuk masalah yang Anda miliki.
αғsнιη
27

Jika kasing terminal Anda tidak berfungsi Xfce,

Solusinya adalah sebagai berikut:

  1. Terbuka Application Menu> Settings> Window Manager.
  2. Klik pada Keyboardtab.
  3. Bersihkan Switch window for same applicationpengaturan.

Screenshot Window Manager cara menghapus jendela untuk aplikasi yang sama

Saya telah menemukan solusinya di sini

itu
sumber
Sudah mencoba awnser, tapi semuanya sudah di tempat. Ini memang solusi bagi saya.
user1226868
Dito. Petunjuk yang bagus.
cerebrou
Terima kasih banyak, saya benar-benar kehilangan akal untuk yang satu ini.
Dustin Cowles
2
Masih solusi yang saya butuhkan pada Mei 2018.
clifgray
Terima kasih berhasil untuk saya
MMH
3

Anda juga mungkin berada di shell yang tidak mendukung pelengkapan otomatis (mis. Bourne Shell | SH). Jika Anda ingin BASH selesai secara otomatis, Anda perlu mengganti shell, katakan ke BASH (Bourne Again SHell) sebagai gantinya dengan perintah

chsh -s /bin/bash

Sumber: Wiki Ubuntu - Mengganti Kerang

Michael Lowden
sumber
1

Dalam kasus saya, saya mencoba menjalankan skrip ./myScript.sh, dan mengetik ./my[tab]tidak akan selesai secara otomatis.

Saya harus menambahkan izin eksekusi ke file dan penyelesaian otomatis berfungsi.

Hezi
sumber