かなり単純だと思います。bashコマンドを見つけたいだけです。たとえば、「user」という語句を含む、どのコマンドが存在するかを知りたい場合。
したがって、探しているコマンドは、ユーザーを含むすべてのコマンドの場所を出力するか、その名前でどのコマンドが存在するかを教えてくれるはずです。それでいいだろうけど。
こことグーグルで検索しましたが、どちらも「検索」コマンドについて話しているだけです。
「user」を含む PATH 内の実行可能ファイルまたはシンボリック リンクのリスト:
find $(echo $PATH | tr ':' ' ') -maxdepth 1 \( -type f -or -type l \) -name '*user*' -executable
出力例:
/usr/bin/users
/usr/bin/xdg-user-dir
/usr/bin/xdg-user-dirs-gtk-update
/usr/bin/users-admin
/usr/bin/xdg-user-dirs-update
/bin/fuser
/bin/fusermount
/bin/ntfs-3g.usermap
/usr/sbin/deluser
/usr/sbin/adduser
/usr/sbin/useradd
/usr/sbin/userdel
/usr/sbin/usermod
/usr/sbin/newusers
また、wormsparty のバリアントよりもはるかに高速です (問題はありません:P)。結果はほぼ同じです(彼もディレクトリを返します、AFAIK)
いくつかのパスのスペースをチェックし、より強力な正規表現で改善したい場合がありますが、これでうまくいきます:
#!/bin/sh
if [ $# -ne 1 ]; then
echo "Usage: $0 pattern"
exit 1
fi
for x in `echo "${PATH}" | sed 's/:/ /g'`; do
for y in $x/*; do
if [ -x "$y" ]; then
if [ `echo "$y" | grep $1 | wc -l` -ne 0 ]; then
echo "$y"
fi
fi
done
done