Сценарий, показывающий тип файла?

Нажмите и удерживайте Shift во время загрузки, это должно принести вам меню Grub. Или, если вы хотите, чтобы меню всегда отображалось, тогда отредактируйте свой файл /etc/default/grub

sudo gedit /etc/default/grub

Вставьте «#» в начале строки GRUB_HIDDEN_TIMEOUT=0.

Теперь сохраните затем выполните:

sudo update-grub

Это должно быть хорошо, чтобы меню Grub появлялось при каждой загрузке.

Лучше взглянуть на эту GRUB wiki https: //help.ubuntu .com / сообщества / Grub2

1
задан 10 November 2017 в 22:15

1 ответ

Отображение типов файлов Unix

Как представляется этот вопрос, он появляется, когда пользователь пытается отобразить тип файла в смысле файла Unix. Для этой цели не требуется сценарий, поскольку уже существуют утилиты, которые способны отображать такую ​​информацию.

В частности, команда stat хорошо подходит для этой цели. По умолчанию stat показывает длинный вывод с большим количеством информации, но мы можем использовать -c, --format или --printf (обратите внимание, что он интерпретирует символы обратного слэша) для достижения желаемого результата. Например,

$ stat -c '%n: %F' /etc/passwd /etc/resolv.conf /etc                        
/etc/passwd: regular file
/etc/resolv.conf: symbolic link
/etc: directory


$ stat --printf '%n: %F\n' /etc/passwd /etc/resolv.conf /etc                
/etc/passwd: regular file
/etc/resolv.conf: symbolic link
/etc: directory

Другая команда, которую мы можем использовать, - find, которая имеет опцию -printf, но отличается спецификаторами преобразования (символы %<letter>) и тем фактом, что она выдает тип файла в буквах (см. man find для соответствия типа файла букве):

$ find /etc/passwd /etc/resolv.conf /etc -prune  -printf "%p:%y\n"          
/etc/passwd:f
/etc/resolv.conf:l
/etc:d

Конечно, если есть необходимость, мы всегда можем использовать команду [ или test, но для этого потребуется немного больше работы; однако таким образом нам не нужно полагаться на что-либо внешнее;

#!/bin/sh

check_filetype(){
    if [ -f "$1" ];then
        if [ -h "$1" ]; then
            printf "%s\n" "$1: symbolic link"
        else
            printf "%s\n" "$1: regular"
        fi
    elif [ -d "$1"  ]; then
        printf "%s\n" "$1: directory"
    elif [ -c "$1" ]; then
        printf "%s\n" "$1: character device"
    elif [ -p "$1" ]; then
        printf "%s\n" "$1: named pipe"
    elif [ -S "$1" ]; then
        printf "%s\n" "$1: socket"
    fi
}

for arg
do
    check_filetype "$arg"
done

И вот как это будет работать:

$ ./checkft.sh /etc/passwd /etc/resolv.conf /etc test.fifo /dev/tty1              
/etc/passwd: regular
/etc/resolv.conf: symbolic link
/etc: directory
test.fifo: named pipe
/dev/tty1: character device

Показывать содержимое файла

Если мы хотим для получения подробной информации о типе файла в отношении содержания, есть два способа приблизиться к вещам. Один, через Unix filetype , а другой - через магическое число, первые несколько бит файла. В то время как mime-тип изначально существовал с целью определения типа файла в Интернете, в настоящее время многие настольные приложения полагаются на запрос информации типа mime для правильного отображения значков файлов и открытия их с помощью соответствующих приложений.

Для этого Назначение mimetype:

$ mimetype /etc/ /etc/resolv.conf  /etc/passwd test.fifo                          
/etc/:            inode/directory
/etc/resolv.conf: inode/symlink
/etc/passwd:      text/plain
test.fifo:        inode/fifo

И для выполнения тестов с «магическими числами» мы использовали бы команду file:

$ file /etc/ /etc/resolv.conf  /etc/passwd test.fifo                              
/etc/:            directory
/etc/resolv.conf: symbolic link to ../run/resolvconf/resolv.conf
/etc/passwd:      ASCII text
test.fifo:        fifo (named pipe)

, которая также может do mimetype:

$ file --mime-type /etc/ /etc/resolv.conf  /etc/passwd test.fifo                  
/etc/:            inode/directory
/etc/resolv.conf: inode/symlink
/etc/passwd:      text/plain
test.fifo:        inode/fifo
0
ответ дан 24 May 2018 в 13:11

Другие вопросы по тегам:

Похожие вопросы: