質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

0回答

1185閲覧

complete -E による補完設定

otn

総合スコア84559

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

3グッド

1クリップ

投稿2019/07/15 04:33

git bashの入力補完で拡張子を出さない方法を知りたい」の質問に対して、compete -Eで出来るのではないかと思ったのですが、出来ません。
簡略化すると、

Bash

1$ foo() { COMPREPLY=($(compgen -W "abc def ghi" -- "$2")); } 2$ complete -E -F foo 3$ (タブキー2回) 4abc def ghi 5$

と補完候補が表示されるのですが、続けて、

Bash

1$ ab(タブキー)

abcが補完されるかと思いきや、

Bash

1$ ab(タブキー2回) 2ab abrt-action-save-package-data 3abrt-action-analyze-backtrace abrt-action-trim-files 4abrt-action-analyze-c abrt-auto-reporting 5・・・・・

と、abで始まるコマンドが補完候補として出てきてしまいます。

man bashでは確かに、

-E オプションは、残りのオプションと動作を “空の”コマンド補完 (空行に対して試みられる補完) に適用することを示します。

と書いてあって、「空」の時だけというのは記述通りなのですが、これだと-Eオプションの使い道がありません。
また、上記の「abタブ2回」のように、コマンドがまだ認識されていない状態での補完をコマンド名補完以外にする方法も無さそうです。

これはもう、どうしようも無いのか、あるいは何か見落としがあるのでしょうか?

yamap55, vbnbfe👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問