システムデバイスのファイルを保持するLinuxディレクトリのファイル名に「tty」を含むすべてのファイル数を出力する方法がわかりません。
答え1
ls /dev/tty* | wc -w
答え2
まず、これらのファイルを一覧表示する方法を見つける必要があります。デバイスファイルが保存されるディレクトリは次のとおりです。
/dev
したがって、これらのファイルを一覧表示するコマンドは次のようになります。
echo /dev/*tty*
(ここにはなどのVGAコンソールだけでなく、またはなどのシリアルポートも含まれます/dev/tty5
。)/dev/ttyS0
/dev/ttyUSB0
テキスト入力で単語数を数えるコマンドがありますwc
。したがって、次のように数を取得できます。
echo /dev/*tty* | wc
これは、ファイル名にスペースが含まれていない場合にのみ機能します。ファイル名を1行ずつ一覧表示して行数を数えると、このコマンドはより強力になる可能性がありますが、ファイル名に改行文字が含まれている場合にのみ中断されるわけではありません。
ls /dev/*tty* | wc -l
スクリプトでより信頼性の高いアプローチは、ファイル名のリストをリストにインポートして長さを計算することです。ワイルドカードは名前のリストに展開されます。リストが空の場合は特別な場合があります。ワイルドカードは拡張されません。
set -- /dev/*tty*
if [ $# -eq 1 ] && ! [ -e "$1" ]; then
set --
fi
echo "There are $# matching files"
演習:上記のコードスニペットはすべてのワイルドカードパターンで機能しますか(つまり、ファイルが1つのときにフラグメントが0個のファイルを報告し、その逆も同様のワイルドカードパターンがあります)。