Unix fdisk: получить строку устройства, зная его систему

315
experimenter

Я прикрепляю диск NTFS к RHEL.

Чтобы смонтировать его, мне нужно знать имя раздела, которое позже я буду использовать в mountкоманде.

Мне нужно получить строку с Deviceименем, зная, к чему Systemона принадлежит.

fdisk -l 

Эта команда возвращает:

Disk /dev/sdb: 15.0 GB, 15032385536 bytes, 29360128 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0xdf77eb64  Device Boot Start End Blocks Id System /dev/sdb1 128 29358079 14678976 83 Linux  Disk /dev/sda: 31.5 GB, 31457280000 bytes, 61440000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000c46d3  Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 61439999 30206976 83 Linux  Disk /dev/sdc: 1862 MB, 1862270976 bytes, 3637248 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0xf9fa7844  Device Boot Start End Blocks Id System /dev/sdc1 128 3635199 1817536 7 HPFS/NTFS/exFAT 

Я хотел бы получить строку /dev/sdc1, потому что ее системаHPFS/NTFS/exFAT

Как я могу получить Deviceстроку, зная, что она должна быть отформатирована как HPFS/NTFS/exFAT?

0
Немного неясно, что вы подразумеваете под «Строка загрузки устройства» - это UUID, за которым вы работаете? Возможно, вы могли бы получить дополнительную информацию, запустив `lsblk` и` blkid`. То, на что вы ссылаетесь, похоже, просто идентификаторы устройств `/ dev / sda` - это первый обнаруженный диск, а бит` sda1` указывает на его первый раздел. `sdb` второй и так далее. r0berts 7 лет назад 1
Но если вы получаете только строку / dev / sdc1, потому что она находится в строке, содержащей NTFS, вы можете просто сделать это: `fdisk -l | grep NTFS | cut -f 1 -d "" ` r0berts 7 лет назад 0
@ r0berts Я бы хотел получить строку "/ dev / sdc1". Я не уверен, какое имя будет, когда я сделаю это в следующий раз, это может быть "/ dev / sdc2" или что-то еще. Главное для меня это получить имя, соответствующее системе "NTFS" experimenter 7 лет назад 0
Посмотрите на `/ dev / disk / by-label /`, / dev / disk / by-partlabel / `и т. Д. И используйте их, например, в` / etc / fstab`. Они не меняются между загрузками и т. Д., И вы всегда должны использовать одно из них вместо имен `/ dev / sd *` (которые могут меняться). dirkt 7 лет назад 1

1 ответ на вопрос

1
r0berts

ОК, вы хотите извлечь строку из вывода команды. Используйте любимую цепочку маленьких простых команд UNIX следующим образом:

fdisk -l | grep NTFS | cut -f 1 -d " "

fdiskвыводит обычную информацию - как вы знаете. |это символ трубы, который означает вывод следующей команды, а не экрана. grepзатем извлекает только строку (строки), содержащую NTFS, и cutизвлекает первое поле строки (строк), в этом случае разделителем столбца является пробел.

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