Selesai tab bash shell, jangan perluas ~


12

Saya sering menggunakan Tabkunci ketika saya menggunakan shell (bash).

Tapi saya merasa jengkel karena ~selalu bertambah /home/"user". Saya tidak berpikir selalu seperti ini; adakah cara untuk menghentikan perilaku ini?

Sebuah contoh:

  1. cj@zap:~$ ls ~/
  2. tekan Tab
  3. cj@zap:~$ ls /home/cj/

Saya ingin terus memiliki ~/dan tidak berakhir dengan /home/cj/.


2
"Kurasa tidak selalu seperti ini." - Penyelesaian yang dapat diprogram mengabaikan pengaturan readline set expand-tilde off(default atau set in ~/.inputrc).
Dijeda sampai pemberitahuan lebih lanjut.

"bind -v | grep tilde" mengembalikan "nonaktifkan memperluas-tilde" ... jadi saya tidak berpikir itu akan membantu.
Johan

Anda mungkin melihat shopt -p direxpand.
gam3

Jawaban:


10

Menonaktifkan ekspansi tilde cepat dan tidak menyakitkan. Buka ~/.bashrcdan masukkan ini:

_expand()
{
    return 0;
}

Ini akan menggantikan fungsi ekspansi dari /etc/bash_completion. Saya akan merekomendasikan mengomentari apa yang dilakukannya di atas fungsi jika Anda ingin ekspansi kembali di masa depan. Perubahan akan berlaku dalam instance baru.


meskipun _expand(){ true; }lebih pendek :)
tig

bukankah begitu _expand(){ false; }? @tig
John T

2
@ John: tidak, itu pasti benar. truemengembalikan hasil yang sukses dan hasil yang sukses adalah 0, jadi return 0sama dengan truedalam status keluar, dan return 1sama dengan false. coba saja true; echo $?dan false; echo $?.
tig

@tig terlalu banyak pemrograman telah membuatku bingung ... codepad.org/Frb3RyAN Demikian pula, Anda menemukan ini dalam banyak kode (lihat di atas): cs.nthu.edu.tw/~tingting/DS_mid_solution.pdf Saya akan menganggap itu sudah diaktifkan dalam alat GNU untuk menunjukkan makna yang lebih realistis, yaitu "Benar, program berjalan dengan sukses" atau "salah - program berjalan dengan tidak benar".
John T

@ John: tidak apa-apa :), «Bahkan John T bisa salah» (jangan tersinggung :))
tig

5

Dengan bash_completion yang lebih baru, sepertinya Anda juga perlu mengganti __expand_tilde_by_ref:

__expand_tilde_by_ref() {
  return 0
}

1

Bahkan lebih kompak:

_expand() { :; }

... as ":" adalah shell yang setara dengan "true" :-)


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.