Не всегда возможно узнать наверняка, каково кодирование текстового файла. Например, последовательность байта \303\275
(c3 bd
в шестнадцатеричном), мог быть ý
в UTF-8, или ý
в latin1, или Ă˝
в latin2, или 羸
в БОЛЬШИХ 5, и так далее.
Некоторая кодировка имеет недопустимые последовательности байта, таким образом, возможно исключить их наверняка. Это верно в особенности для UTF-8; большинство текстов в большей части 8-разрядной кодировки не является допустимым UTF-8. Можно протестировать на допустимый UTF-8 с isutf8
от moreutils или с iconv -f utf-8 -t utf-8 >/dev/null
, среди других.
Существуют инструменты, которые пытаются предположить кодирование текстового файла. Они могут сделать ошибки, но они часто работают на практике, пока Вы сознательно не пытаетесь одурачить их.
file
Encode::Guess
(часть стандартного распределения), пробует последовательную кодировку на строке байтов и возвращает первое кодирование, в котором строка является действительным текстом.Если существуют метаданные (HTML/XML charset=
, TEX \inputenc
, emacs -*-coding-*-
, …) в файле усовершенствованные редакторы как Emacs или Vim часто могут проанализировать те метаданные. Это не легко автоматизировать из командной строки все же.
В зависимости от Вашего драйвера SATA и конфигурации Вашего распределения, они могли бы обнаружиться как /dev/hda
и /dev/hdb
, или /dev/hda
и /dev/sda
, или /dev/sda
и /dev/sdb
. Дистрибутивы и драйверы двигают наличие всего названный жесткий диск sd?
, но драйверы PATA традиционно используются hd?
и несколько драйверов SATA также сделали.
Имена устройств определяются udev
конфигурация. Например, на Ubuntu 10.04, следующих строках от /lib/udev/rules.d/60-persistent-storage.rules
заставьте все жесткие диски ATA появиться как /dev/sd*
и все CD-приводы ATA появляются как /dev/sr*
:
# ATA devices with their own "ata" kernel subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="ata", IMPORT{program}="ata_id --export $tempnode"
# ATA devices using the "scsi" subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $tempnode"
Если я пойму Ваш вопрос правильно, то первый параллельный жесткий диск ATA в соответствии с Linux будет /dev/hda
, второе будет /dev/hdb
, сопровождаемый /dev/hdc
, и т.д.
Деления Serial ATA разоблачат тот же способ, которым делают SCSI и USB-устройства: /dev/sda
будет первый, сопровождаемый /dev/sdb
, /dev/sdc/
, и т.д.
/ dev / sdX
/ dev / sdX
/ dev / sdX
/ dev / hda
Любой диск, который начинается с S (sata, ssd, scsci), является sda, а IDE - hda
В других ответах обсуждаются SATA, IDE, SCSI и т. д., но я решил добавить новый NVMe. В современных ядрах диски NVMe используют /dev/nvmeXnY
для диска и /dev/nvmeXnYpZ
для разделов. Например, раздел 5 на диске NVMe (0, 1 )будет /dev/nvme0n1p5
. Блочные устройства ведут себя точно так же, как приводы hdX
и sdX
.
По существу, параллельные соединения используют hdX
, последовательные соединения используют sdX
, а NVMe, чудак, использует nvmeXnY