Bashシェルのタブ補完、展開しないでください〜


12

Tabシェル(bash)を使用するとき、キーを頻繁に使用します。

しかし、私は~いつもイライラすることに悩まされてい/home/"user"ます。いつもこんな感じだったとは思いません。この行動を止める方法はありますか?

例:

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

私は持っていきたい~/として終わるません/home/cj/


2
「いつもそうだったとは思わない」-プログラム可能な補完は、readline設定set expand-tilde off(デフォルトまたはで設定~/.inputrc)をオーバーライドします。
追って通知があるまで一時停止します。

「bind -v | grep tilde」は「set expand-tilde off」を返します...だから私はそれが役立つとは思わない。
ヨハン

ご覧くださいshopt -p direxpand
gam3

回答:


10

チルダの展開を無効にすることは、迅速かつ無痛です。これを開いて~/.bashrc挿入します:

_expand()
{
    return 0;
}

これにより、からの展開機能が上書きされます/etc/bash_completion。将来拡張する場合に備えて、関数の上で何を行うかについてコメントすることをお勧めします。変更は新しいインスタンスで有効になります。


_expand(){ true; }短いですが:)
tig

そうではない_expand(){ false; }でしょうか?@tig
ジョンT

2
@ジョン:いいえ、それは本当でなければなりません。true成功した結果と、成功した結果を返すので、0 return 0に等しいtrue終了ステータスであり、return 1に等しいですfalse。ちょうどしてみてくださいtrue; echo $?false; echo $?
tig

あまりにも多くのプログラミングは私を混同した... @tig codepad.org/Frb3RyANを (上を参照)同様に、あなたは、コードの多くでこれを見つける:cs.nthu.edu.tw/~tingting/DS_mid_solution.pdfは、 私はそれがアップスイッチだと仮定しますGNUツールで、より現実的な意味を示すために、つまり「True、プログラムは正常に実行されました」または「false-プログラムが正しく実行されなかった」。
ジョンT

@ジョン:それは大丈夫です:)、«ジョンTでも間違っている可能性があります»(気を悪くしないでください:))
tig

5

新しいbash_completionでは、__ expand_tilde_by_refをオーバーライドする必要があるようです:

__expand_tilde_by_ref() {
  return 0
}

1

さらにコンパクトに:

_expand() { :; }

... as ":"は "true"と同等のシェル組み込みコマンドです:-)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.