flat7th

search-devices

created 2025-10-07 modified 2025-10-07 
#!/bin/bash

# what:
#   /proc/bus/input/devices に対し、空行区切りのブロックに対し
#   キーワードマッチするものを表示する。
# usage:
#   search-devices キーワード
#   キーワードは js0 など

do_filter()
{
    KEYWORD=$@
    # パラメータ指定がなければ...全件表示
    if [ -z "$KEYWORD" ]
    then
       cat
       return
    fi

    # 色付けできる端末ならオプション指定を足す
    [ "$TERM" == "xterm-256color" ] && COLOR='--color=yes'

    # /proc/bus/input/devices の、空行単位のブロックに対し grep をかける。
    # パイプ動作メモ
    # - 改行を '\a' に置換することで全出力を1行に
    # - '\a\a' を '\a\n\a' に置換して行を分ける
    # - キーワードにマッチする行を抽出する
    # - '\a' を 改行に置換する
    #   (なお \a はベル文字。その昔、ビーと音を鳴らすのに使われた)
    tr "\n" "\a" \
        | sed -e "s|\a\a|\a\n\a|g" \
        | grep $COLOR -e "$KEYWORD" \
        | sed -e "s|\a|\n|g"
}

echo "showing /proc/bus/input/devices ..."

cat /proc/bus/input/devices \
    | do_filter $@