2016-11-04 14 views
1

UNIXのbashシェルでは、cdと入力してTabキーを押すと、ディレクトリとファイルの両方が選択可能なオプションとして表示されます。ディレクトリとおそらくディレクトリへのリンクを表示することは、直感的でなければなりません。直観的にファイルをリストしないでしょうか?Unix-bash cdコマンドとタブの両方でディレクトリとファイルの両方が表示されます

たとえば、./とタブには、スマートな実行権限を持つ項目のみが表示されます。

なぜcdコマンドでbashが同じスマートを持っていないのですか?バグですか?

+0

私が試しただけで、あなたが記述している動作に気付かなかった。あなたはそれを確信していますか? –

+0

どうやら、はい。私はLinux 2.6.32-431.el6.x86_64を使用しています。 Linux 5.9でも同じだった。 Bashバージョン: GNU bash、バージョン4.1.2(1)-release(x86_64-redhat-linux-gnu) 著作権(C)2009フリーソフトウェア財団 – syam

+0

Thomas、あなたのためのディレクトリ?どのLinuxを使用していますか? – syam

答えて

2

は、あなたのbashrcに次のコマンドを追加します。

complete -d cd # or ``complete -A directory cd'' 

それよcdコマンド(のdirsにシンボリックリンクを含む)のみオートコンプリートのdirs。

詳しくは、bashのマニュアルの​​を参照してください。

1

いずれの場合も、ファイル名の補完が行われています。 bashには、コマンド名に実行権限が必要であることを認識するのに十分な組み込みスマートがあるため、./ + Tabを実行可能ファイルに制限します。 引数cdプログラマブルのドメインに属します(これは、あまり推奨されませんが、完全に異なるコマンドでシャドウイングして、ディレクトリを引数として取ることはできません)。

bashのプログラム可能な補完機能はかなり優れていますが、何らかの理由で実際にはそのような補完は基本インストールに含まれていません。ただし、cdを含むlarge set of completions availableがあります。

関連する問題