ls /dev/tty* | wc -w
Estou com problemas para saber como gerar uma contagem de todos os arquivos com “tty” no nome do arquivo no diretório do Linux que contém arquivos em dispositivos do sistema.
ls /dev/tty* | wc -w
Primeiro, você precisa descobrir uma maneira de listar esses arquivos. O diretório que contém os arquivos do dispositivo é
/dev
então um comando para listar esses arquivos é
echo /dev/*tty*
(Observe que isso inclui não apenas consoles VGA, como /dev/tty5
, mas também portas seriais, como /dev/ttyS0
ou /dev/ttyUSB0
.)
Há um comando para contar palavras em uma entrada de texto: wc
. Então você pode contar a contagem assim:
echo /dev/*tty* | wc
Isso só funciona se os nomes dos arquivos não contiverem nenhum espaço em branco. O comando pode ser mais robusto, mas ainda não é o ideal, se você listar os nomes dos arquivos linha por linha e contar as linhas; isso só quebra se os nomes dos arquivos contiverem novas linhas:
ls /dev/*tty* | wc -l
Um método mais robusto em um script é obter a lista de nomes de arquivos como uma lista e contar seu tamanho. Os curingas se expandem para uma lista de nomes; há um caso especial quando a lista está vazia: o curinga não é expandido.
set -- /dev/*tty*
if [ $# -eq 1 ] && ! [ -e "$1" ]; then
set --
fi
echo "There are $# matching files"
Exercício: o snippet acima funciona para qualquer padrão curinga (por exemplo, há um padrão curinga para o qual o snippet reporta 0 arquivos quando há um ou vice-versa)?