バッシュ完了とgrep

バッシュ完了とgrep

Debian Squeezeにプログラム(iftop)をインストールしましたが、数日前に名前を忘れました。私がこのプログラムについて知っていることは次のとおりです。

1) という*top

2)を使用して見つけることができますbash-completions

私が望んでいたgrepすべてのオプションbash-completion。私が何をすべきか知っていますか?

答え1

compgen可能な完成リストを得るには、組み込み関数を使用してください。

compgen -c | grep top

コマンド、エイリアス、関数など、さまざまな種類の完成を要求できます。詳細についてはを参照-cしてください。-A commandsman bash

答え2

確かに使いやすいと思いますcompgen。または、POSIXシェルで動作し、次のコマンドを使用してコマンドを確認できます$PATH

(IFS=:; set -f; ls -- $PATH | grep top$)

そしてzsh

type -m '*top'

whatisデータベースを照会することもできます。

man -ks1:8 top$

答え3

でもできますが、完成システムで学ぶ、これは最も確実なアプローチではありません。

/usr/binpackgesによってインストールされたほとんどすべてのプログラムが含まれているので、名前が次に終わるプログラムを一覧表示できます。/usr/bintop

echo /usr/bin/*top

inode 変更時間ごとにファイルを一覧表示できます。インストールされたプログラムの修正時間は通常コンパイル時間です。なぜなら、アーカイブとインストールツールは変更時間をデータと共にコピーするからです。ただし、ファイルのinode変更時間は、インポートまたはコピーを含む最後に発生した時間です。実際に修正時間が変更されると、inode変更時間がリセットされます。このプログラムは最近インストールしたため、次のコマンドで表示される最後のプログラムの1つです。

ls -lctr /usr/bin/*top

r下からではなく上から見るには、このオプションを削除してください。

インストールされているプログラムのログも表示できます。彼らは位置しています/var/log/history.log

答え4

シェル機能を使用して、PATHとバイナリを含むがPATHには存在しない既知のディレクトリを検索できます。例:

findprogram() {
  ls $(echo $PATH:/sbin:/usr/sbin | sed "s/:/\ /g") | grep "$1" | sort --unique
}

使用法:

findprogram top

これにより、ソートされた候補者のリストが出力されます。

関連情報