Bash kabuk sekmesini tamamlayın, ~


12

Kullandığım Tabbir kabuk (deneme) kullanırken önemli bir çok.

Ama ~her zaman genişlediğim için rahatsız oluyorum /home/"user". Her zaman böyle olduğunu sanmıyorum; Bu davranışı durdurmanın bir yolu var mı?

Bir örnek:

  1. cj@zap:~$ ls ~/
  2. Basın Tab
  3. cj@zap:~$ ls /home/cj/

Ben sahip olmaya devam etmek istiyorum ~/ve sonunda değil /home/cj/.


2
"Her zaman böyle olduğunu sanmıyorum." - Programlanabilir tamamlama, okuma satırı ayarını geçersiz kılar set expand-tilde off(varsayılan veya ayarlanmış ~/.inputrc).
sonraki duyuruya kadar duraklatıldı.

"bind -v | grep tilde" döndürür "set expand-tilde off" ... böylece yardımcı olacağını düşünmüyorum.
Johan

Bir göz atabilirsiniz shopt -p direxpand.
gam3

Yanıtlar:


10

Tilde genişletmeyi devre dışı bırakmak hızlı ve ağrısızdır. Açın ~/.bashrcve ekleyin:

_expand()
{
    return 0;
}

Bu, genişleme işlevini geçersiz kılar /etc/bash_completion. İleride genişlemeyi geri istemeniz durumunda, işlevin üzerinde ne yaptığı hakkında yorum yapmanızı tavsiye ederim. Değişiklikler yeni bir durumda geçerli olacaktır.


gerçi _expand(){ true; }daha kısa :)
tig

olmaz _expand(){ false; }mı? @tig
John T

2
@John: hayır doğru olmalı. trueBaşarılı bir sonuç ve başarılı sonuç döndürür, böylece 0 return 0eşittir trueçıkış statüsünde ve return 1eşittir false. sadece dene true; echo $?ve false; echo $?.
tig

@tig çok fazla programlama beni karıştırdı ... codepad.org/Frb3RyAN Benzer şekilde, bunu bir sürü kodda bulabilirsiniz (yukarıya bakın): cs.nthu.edu.tw/~tingting/DS_mid_solution.pdf Açık olduğunu varsayalım. daha gerçekçi bir anlam belirtmek için GNU araçlarında, yani "Doğru, program başarıyla çalıştırıldı" veya "yanlış - program yanlış çalıştırıldı".
John T

@John: sorun değil :), «John T bile yanlış olabilir» (rahatsız etmeyin :))
tig

5

Daha yeni bash_completion ile __expand_tilde_by_ref'yi de geçersiz kılmanız gerekiyor gibi görünüyor:

__expand_tilde_by_ref() {
  return 0
}

1

Daha da kompakt:

_expand() { :; }

... ":", "true" ile eşdeğer yerleşik bir kabuktur :-)


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.