Bashでコマンドを使用すると、私は好きです。ダブル-Tab使用可能なコマンドのオプションを表示します。一部のコマンドは他のコマンドよりも一致する可能性が高くなります。例:以下は、git
入力して押した後のいくつかの出力ですTab Tab。
$ git
git git-effort git-quick-stats
git-alias git-extras git-reauthor
git-archive-file git-feature git-rebase-patch
git-authors git-filechange-search git-receive-pack
git-back git-force-clone git-refactor
git-blametool git-fork git-release
git-branch_ git-fresh-branch git-rename-branch
git-branchz git-graft git-rename-tag
git-bug git-gs_blametool git-repl
git-bulk git-gs_branch_ git-reset-file
git-changelog git-gs_changes git-root
git-changes git-gs_diffc git-rscp
git-chore git-guilt git-scp
git-clang-format git-ignore git-sed
git-clang-format-6.0 git-ignore-io git-setup
git-clear git-info git-shell
git-clear-soft gitk git-show-merged-branches
git_commit_r git-lfs git-show-tree
git-commits-since git-line-summary git-show-unmerged-branches
git-contrib git-local-commits git-squash
git-count git-lock git-stamp
たとえば、doubleの出力をTabどこかにパイプする方法はありますかgrep
?関連記事を見つけました(TABオートコンプリートは完了するオプションをどのように見つけますか?)、しかし出力をgrep
。
答え1
コマンドの場合を使用しますcompgen -c
。この単語はcompgen
明らかに「完成ジェネレータ」を表します。ソースhelp compgen
(強調追加):
compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
オプションに従って可能な完了を表示します。
可能な生成を行うシェル関数内で使用するためのものです。 完成。オプションのWORDパラメーターが指定されている場合は一致します。 WORDが作成されました。
終了ステータス:無効なオプションが指定されているかエラーが発生しない限り、成功を返します。
詳細は組み込みのbashシェルコマンドなので、man bash
ページで検索してみてください。compgen
使用例:
$ compgen -c bas
basename
base64
bashbug
bash
その出力を単にgrep
。
$ compgen -c bas | grep bug
bashbug
答え2
@salutisの答えに基づいて '、および、(オプションフラグを参照)を検索する呼び出ししてcomp
保存するスクリプトを作成しました。~/bin/comp
commands
aliases
builtins
-cab
バッシュマンアイテム)、オプションの2番目の引数がある場合は、出力をパイプしてgrep
2番目の引数を取得します。
Usage: comp string [keyword-for-grep]
パスワード:
#!/bin/bash
if [ -z "$1" ]; then
echo usage: comp string [keyword-for-grep]
echo
exit
fi
if [ -z "$2" ]; then
compgen -cab -- $1
exit
fi
compgen -cab -- $1 | grep -i $2
個人的には、履歴を検索するときにそのエントリを見つけないように、スクリプトのシェルhistory -d
履歴から最後のコマンド(関連するもの)を削除する方法を見つけることにも興味があります。私もこれができることを知っていますが、Linuxは非常に強力なので、スクリプトファイルでもこれを行う方法が必要です。そうですか?bash
comp
HISTIGNORE
答え3
なぜ欲しいものが見つかりませんか?
例:
find / -name ec2* -executable -type f -perm -og+rx -print
ユースケースを知ることで、より詳細なコマンド例を作成できます。