Как создать mv-файл, созданный командами, в каталог

Интерфейсы системного вызова ядра Linux очень стабильны. Но у ядра есть другие интерфейсы, которые не всегда совместимы.

  • / proc в основном стабилен, но в прошлом было несколько изменений (например, некоторые интерфейсы перемещены в / sys через некоторое время после создания / sys ) .
  • Ряд связанных с устройством интерфейсов был удален в прошлом.
  • / sys содержит некоторые стабильные интерфейсы (перечисленные в Documentation / ABI / stable ), а некоторые нет. Вы не должны использовать те, которые не используются, но иногда люди это делают, и простое обновление безопасности и стабильности не должно им ничего сломать.
  • В прошлом были случаи несовместимости с modutils (новые ядра требовали более новой версии modutils), хотя я думаю, что это было довольно давно.
  • Также наблюдались несовместимости в отношении процесса загрузки в некоторых необычных конфигурациях. Даже увеличение размера ядра могло вызвать проблемы в некоторых встроенных системах.
  • В то время как внешние интерфейсы ядра достаточно стабильны, внутренние интерфейсы - нет. Правило для внутренних интерфейсов состоит в том, что любой может сломать их, если они исправляют внутреннее использование, но исправление сторонних модулей является обязанностью автора указанных модулей.В целом довольно много установок запускают сторонние модули: дополнительные драйверы для оборудования, которое не поддерживается ядром (если оборудование поддерживается новым ядром, это нормально, но что, если это не так), проприетарные драйверы ( в то время как мир был бы лучше, если бы все драйверы были с открытым исходным кодом, это не так; например, если вам нужна хорошая производительность 3D-графического процессора, вы в значительной степени застряли с проприетарными драйверами) и т. д.
  • Некоторые людям нужно перекомпилировать свое ядро ​​или некоторые сторонние модули. Более свежие ядра часто не могут быть скомпилированы со старыми компиляторами.

В общем, основная причина не переходить на более новую версию ядра - это сторонние модули.

Некоторые дистрибутивы, тем не менее, предлагают в качестве опции свежие ядра. Например, Debian делает ядра из тестирования доступными для пользователей стабильной версии через backports. Точно так же в Ubuntu LTS доступны ядра из более поздних выпусков Ubuntu, но по умолчанию они не используются. Это в основном полезно для новых установок на оборудовании, которое еще не поддерживалось на момент завершения выпуска.

0
10.04.2019, 18:34
1 ответ

Вы создаете каталог с именем из $3, но создаете файл в текущем каталоге.

Чтобы создать файл в новом каталоге, просто перенаправьте на имя в этом каталоге:

mkdir "$3"
tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 >"$3/$(shuf -n 1 /usr/share/dict/french)"

Или, чтобы разделить вещи для удобства чтения:

dir=$3

mkdir -p -- "$dir" || exit 1

fname=$(shuf -n 1 /usr/share/dict/french)

tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 >"$dir/$fname"

Здесь я также убедился, что если $3содержит пути с несуществующими подкаталогами, полный путь создается (путем добавления -pк вызову mkdir; что также делаетmkdirне неудачным, если путь уже существует ). Я также добавляю к пути префикс--на тот случай, если первый символ в $3— это -(, в противном случае это может привести к путанице mkdir; --сигнализирует об окончании параметров командной строки ). Я также выхожу с нулевым статусом выхода, отличным от -, если вызов mkdirне удался.

2
28.01.2020, 02:30

Теги

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