Como faço para imprimir 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

2

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.

    
por Gilles 06.03.2012 / 08:30

2 respostas

1

ls /dev/tty* | wc -w
    
por 06.03.2012 / 17:41
1

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)?

    
por 06.03.2012 / 17:44