問題タブ [bash-completion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - bash の Muti word コマンド補完
重複の可能性:
bash 補完でのスペースと引用符の適切な処理
bash の補完に複数単語の引用符付き文字列を使用したいと考えています。
たとえば、私はこれができるのが好きです
ここで、「Long String 1」と「Long String 2」は、タブが押されたときに表示される候補です。
~/strings
引用符で囲まれた文字列のリストが含まれているこれを使用してみました
上記の関数は、文字列を空白で分割します。引用符で囲まれた文字列全体を返すようにする方法はありますか?
たとえば~/string
、次の行があった場合
2 つではなく 5 つの提案が表示されます。
bash - 「最初のコマンド」を入力するときの Bash プログラマブル補完
bash4コマンドプロンプトで入力された最初のコマンドの完了を制御する方法はありますか?
完全な -E を使用して「空行」の補完を制御できますが、いくつかの文字が入力されるとすぐに、bash (または場合によっては readline) が PATH、組み込みコマンド (if、then、else...) および関数からすべてのファイル名を取得します。完了試行時 (TAB)。
PROMPT_COMMAND で PATH の設定を解除し、関数をバインドして DEBUG をトラップすることで復元することで PATH エントリを回避できましたが、bash bultin コマンドの補完を取り除くことはできませんでした。
何か案は?
bash - タブ補完時にbash補完が文字を置き換えないようにする方法
ファイルアップロードのセマンティクスをcurlと共有するツール用のbash完了スクリプトを作成しています。
curl を使用すると、次のことができます。
curl -F var=@file
ファイルをアップロードします。
私のアプリケーションには同様のセマンティクスがあり、「@」が押された後に可能なファイルを表示できるようにしたいと考えています。残念ながら、これは難しいことがわかっています。
したがって、(これまでの) コマンドが次のように終了する場合:
現在のディレクトリ内のファイルが表示されます。
問題は、実際にタブを押して完了すると、「@」が消えてしまうことです!
そのため、bash は現在の単語全体をタブ付きの COMPREPLY に置き換えているようです。
これを回避する唯一の方法は、次のようにすることです。
しかし、控えめに言っても、タブ補完は奇妙に見えます。
通常のファイル タブ補完 (「@」プレフィックスなし) を表示する方法はありますが、タブを押すときに「@」を保持しますか?
bash - 他の補完スクリプトに影響を与えずに COMP_WORDBREAKS をリセットするには?
/etc/bash_completion.d/に配置する bash 自動補完機能を実装すると、混乱することがあります。
:
いくつかの機能を実現するために、変数から区切り文字のコロン () を削除し、の先頭にスラッシュ ( ) を$COMP_WORDBREAKS
追加したいと考えています。/
$COMP_WORDBREAKS
ただし、COMP_WORDBREAKS
値は他の補完スクリプトと共有されているため、直接リセットすることはできません。完了関数が呼び出されるまでに、変数COMP_WORDS
配列は既に設定されているため、ローカルでの変更COMP_WORDBREAKS
は効果がありません。
COMP_WORDBREAKS
1 つの補完スクリプトを変更し、他のスクリプトに影響を与えないための解決策はありますか?
arrays - Bash オートコンプリート - この配列を compgen に渡すには、重要な空白を折りたたむ必要はありませんか?
次の bash 補完は、可能な単語 (補完) の配列を compgen に渡します。
問題は、配列要素の空白が保持されないことです。つまり、「foo bar」は単語分割のおかげで要素として扱われます。4 要素ではなく 3 要素が表示されるように、空白を保持する方法はありますか?
編集
basenames
ファイル名が含まれているため、ほぼすべての文字 (/ と \0 を除く) を使用できます。
編集2
-W フラグは、 のような単一の単語を想定していfoo bar foobar
ます。それに複数の要素を渡す (これは何${basenames[@]}
をするか) は機能しません。
編集3
例の basenames 配列を変更しました (そのため、foo
とfoo
fromfoo bar
は折りたたまれません)。
改行を使用して単語を区切ることができます。
を使用しても、次の\0
ことはできません。
linux - シェルでタブ補完をカスタマイズする
これは「カスタムタブ補完」よりも適切な名前である可能性がありますが、シナリオは次のとおりです。
通常、コマンドラインでコマンドを入力し、続いて{TAB}を2回入力すると、現在のディレクトリ内のすべてのファイルとサブディレクトリのリストが表示されます。例えば:
しかし、少なくとも1つのプログラムがどういうわけかこのリストをフィルタリングしていることに気づきましたwine
。検討:
結果をに効果的にフィルタリングします*.exe
。
フィルタリングを担当するある種のラッパースクリプトである可能性があると考えるとwhich
、実行可能ファイルではなく実行可能ファイルであるfile
ことがわかります。wine
さて、この「フィルター」がプログラム自体に何らかの形でエンコードされているのか、それともデフォルトのワインのインストール中に指定されているのかわからないので、この質問がスタックオーバーフローまたはスーパーユーザーに適しているかどうかはわかりません。指を交差させてここに投げます。推測を間違えた場合はお詫び申し上げます。(また、いくつかの同様の質問を確認しましたが、ほとんどは無関係であるか、シェル構成の編集に関係していました。)
だから私の質問は、この「フィルタリング」はどのように達成されるのかということです。前もって感謝します。
bash - ファイル名による bash オートコンプリート
単純な bash オートコンプリート機能を動作させることができません。事前定義されたディレクトリからファイル名をオートコンプリートする必要があるため、次のようになります。
ファイルの場所/var/log/app
.
bash - スペースと句読点を含む文字列の bash 補完
スペースと句読点を含む文字列に対して機能する bash 補完関数を作成しようとしています。引用符が含まれている場合もあります。
私はこれらの文字列をファイルから抽出しsed
、それぞれが補完のためのターゲット文字列を含む数行のテキストとしてそれらを持っています。ただし、これを に渡そうとしたすべての方法でcompgen -W
、常に個々の単語のみが補完されます。
bash - FULL $var 補完を有効にする方法
Debians BASH の下では、次のことができます。
ご覧のとおり、TAB を押すと、変数 $foo をオートコンプリートできます。
Ubuntu (11) では、動作は同じではありません (bashrc で「/etc/bash_completion」を有効にしました)。
これは機能しています:
これは機能していません:
最後のヒントを機能させる方法を教えてください。
tabs - ディレクトリのmacosx lion bashタブ補完には時間がかかります
仕事では、iterm2 でディレクトリが完了するまで 1 秒から 5 秒待たなければなりません。同じ mba ですが、自宅ではすぐに機能します。