Вы получили ошибку чтения (SG_IO: неверные/отсутствующие данные считывания
), когда hdparm
попытался получить данные. Вот почему вывод бессмысленен и содержит много нулей.
Посмотрите на вывод dmesg
(последние строки сразу после возникновения ошибки чтения), чтобы выяснить, что пошло не так.
Вы также можете попробовать hdparm -i /dev/sda
(нижний регистр i
вместо заглавной I
), это отобразит информацию о модели и серийном номере ядро сохраняется во время загрузки. Возможно, это тоже пошло не так, потому что аналогичная ошибка произошла во время загрузки, но попробовать стоит.
Если ваш жесткий диск каким-либо образом поврежден и не поддерживает команды для получения информации о производителе/модели/серийном номере, вы не сможете получить ее.
POSIX требует, чтобы mv
интерпретировал завершающую косую черту как запрос на разыменование символической ссылки.То есть, если foo
является символической ссылкой, POSIX утверждает, что mv
(как и любая другая команда) должен интерпретировать
mv foo/ bar/
как запрос на перемещение каталога, на который указывает foo
, а не сам foo
. Это указано в разделе разрешение имени пути :
Имя пути, которое содержит хотя бы один символ без косой черты и заканчивается одним или несколькими завершающими косыми чертами, должно быть разрешено, как если бы одиночный символ точки (
.
) были добавлены к имени пути.
Другими словами, foo /
эквивалентно foo /.
.
POSIX не требует и даже не разрешает для расширения имени пути добавлять косую черту к символическим ссылкам. Это то, что делают некоторые оболочки при установке параметров, отличных от значений по умолчанию. Я не знаю, есть ли у bash возможность для этого. В ksh это set -o markdirs
. Zsh также имеет эту опцию, но она влияет только на каталоги, а не на символические ссылки на каталоги.
Есть и другие случаи, когда завершающая косая черта естественным образом заканчивается в конце параметра. С глобусом, заканчивающимся косой чертой, глобус сопоставляет только каталоги и символические ссылки на каталоги, а расширение имени файла сохраняет завершающую косую черту. Итак, mv a * / / где-то
перемещает все подкаталоги текущего каталога, имя которого начинается с a
, и все цели символических ссылок в текущем каталоге, так что символическая ссылка начинается с a
, а целью является каталог.Еще одно дело находится в стадии завершения; Я не буду вдаваться в подробности, потому что у bash и zsh так много вариантов завершения, но в зависимости от параметров может быть довольно легко получить foo /
при завершении foo
и foo
- символическая ссылка на каталог.
Означает ли жирный шрифт, что расширение имени файла оболочкой добавляет косую черту к символической ссылке?
Нет. Это означает, что оболочка может правдоподобно сделать это, если ссылка указывает на каталог, и что они частично предложили параметр `--strip-trailing-slashes чтобы позволить пользователю предотвратить побочные эффекты этого действия. Это буквальное значение цитируемого вами текста.
Где вы видите это в руководстве по Bash или в спецификациях POSIX?
Нигде, потому что это неправда. POSIX не определяет поведение завершения имени файла.
Второй отрывок, выделенный жирным шрифтом, относится к поведению, описанному в предыдущем предложении, которое вы не выделили жирным шрифтом, а также к требованию разрешения путей POSIX , согласно которому пути, заканчивающиеся на /
, должны рассматриваться как каталоги. , если возможно, и привести к ошибкам, если это невозможно. Это не относится к несвязанному предложению ранее в отрывке, которое вы выделили жирным шрифтом.
Первоначально я думал, что интерпретировать символическую ссылку с или без завершающей косой черты в качестве аргумента командной строки зависит от команды (а не от оболочки).
Действительно, этот вариант является тому примером.