Você está um pouco errado em suas suposições. Bloquear arquivos especiais são coisas como partição do disco rígido, dispositivos de memória. Por exemplo, a partição principal do meu disco rígido é /dev/sda1
. O sinalizador do teste (também conhecido como [
) -b
funcionará para isso, mas não funcionará para um arquivo de imagem, que é considerado um arquivo normal.
$ test -b ./Pictures/NOTEBOOKS/8.jpg && echo "It's a block device" || echo "Not a block device"
Not a block device
$ test -b /dev/sda1 && echo "It's a block device" || echo "Not a block device"
It's a block device
Dispositivos de caractere são coisas como os consoles tty e serial. Por exemplo:
$ test -c /dev/tty1 && echo "It's a character device" || echo "Not a character dev"
It's a character device
E stat
pode dizer praticamente essa mesma informação, apenas em forma de texto em vez de status de saída como test
:
$ stat --printf "%n\t%F\n" /dev/tty1 /dev/sda1 ./mytext.txt ./Pictures/NOTEBOOKS/8.jpg
/dev/tty1 character special file
/dev/sda1 block special file
./mytext.txt regular file
./Pictures/NOTEBOOKS/8.jpg regular file
O que você deve fazer é usar o comando file
e verificar sua saída:
$ file ./Pictures/NOTEBOOKS/8.jpg
./Pictures/NOTEBOOKS/8.jpg: JPEG image data, JFIF standard 1.02, aspect ratio, density 100x100, segment length 16, baseline, precision 8, 750x750, frames 3
$ file /dev/sda1
/dev/sda1: block special (8/1)
$ file mytext.txt
mytext.txt: ASCII text