Вы немного ошиблись в своих предположениях. Блокировать специальные файлы — это такие вещи, как раздел жесткого диска, устройства памяти. Например, основной раздел моего жесткого диска -— /dev/sda1
. Тестовый флаг (или[
)-b
будет работать для этого, но он не будет работать для файла изображения, который считается обычным файлом.
$ 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
Символьные устройства — это такие вещи, как tty и последовательные консоли. Например:
$ test -c /dev/tty1 && echo "It's a character device" || echo "Not a character dev"
It's a character device
И stat
может сообщить вам практически ту же информацию, только в текстовой форме вместо статуса выхода, как это делает 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
Вам следует использовать команду file
и проверить ее вывод:
$ 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
Вы можете использовать grep
для пробела в любом месте после 68-го символа от начала, просто используя
grep '^.\{68,\} ' file