如何输出保存系统设备上文件的 Linux 目录中文件名中包含“tty”的所有文件的计数

如何输出保存系统设备上文件的 Linux 目录中文件名中包含“tty”的所有文件的计数

我无法知道如何输出保存系统设备上文件的 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

仅当文件名不包含任何空格时这才有效。如果您逐行列出文件名并计算行数,该命令可能会更强大,但仍然不理想;仅当文件名包含换行符时才会中断:

ls /dev/*tty* | wc -l

脚本中更可靠的方法是获取文件名列表作为列表并计算其长度。通配符扩展为名称列表;当列表为空时有一种特殊情况:通配符不会扩展。

set -- /dev/*tty*
if [ $# -eq 1 ] && ! [ -e "$1" ]; then
  set --
fi
echo "There are $# matching files"

练习:上面的代码片段是否适用于任何通配符模式(即,是否存在一种通配符模式,当有一个文件时,代码片段会报告 0 个文件,反之亦然)?

相关内容