Существует также FuseISO , драйвер файловой системы пользовательского пространства. Хотел бы я знать об этой опции несколько лет назад, потому что я тоже только что конвертировал их с помощью mdf2iso
. Поскольку я предпочитаю сохранять исходные файлы, это сделано для беспорядка.
При использовании mkdir
сценарий должен убедиться, что он создает каталог с несуществующим именем. Было бы ошибкой использовать mkdir dirname
, если dirname
является существующим именем в текущем каталоге.
При создании временного каталога (т.е. каталога, который не нужен намного дольше, чем в течение времени жизни текущего скрипта ), имя каталога вообще не важно, а mktemp -d
найдет имя что еще не занято чем-то другим.
mktemp -d
упрощает и делает более безопасным создание временного каталога. Без mktemp -d
пришлось бы пытаться выполнить mkdir
с несколькими именами, пока не получится одно из них. Это и излишне сложно, и может быть сделано неправильно (, что может привести к появлению в коде сложных условий гонки ).
mktemp
также дает пользователю сценария немного контроля над тем, где он хочет создать временный каталог. Если сценарий, например, создает огромное количество временных данных, которые должны храниться в этом каталоге, пользователь может установить переменную среды TMPDIR
(до или во время вызова сценария ), чтобы она указывала на доступный для записи каталог в разделе, где достаточно свободного места. mktemp -d
затем создаст временный каталог по этому пути.
Если TMPDIR
не установлено, вместо mktemp
будет использоваться /tmp
.
Проблема с mktemp -d
, поскольку она создает временный каталог со случайным именем, :Вам нужно не забыть удалить каталог после его использования, если у вас есть строгая политика удаления временного каталога.
Вот почему вы написали scripttmp=$(mktemp -d)
для сохранения значения. В целом он прост в использовании.
Если вам все равно, вы можете использовать этот небольшой пример, чтобы сгенерировать случайное имя и удалить папку позже:
var=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1);
mkdir "/tmp/$var"
#some code
rm -rf "/tmp/$var"
Is there a programmatical difference between directories created with mktemp -d or mkdir?
Ну есть. С помощью mkdir
вы создаете имя каталога, а с помощью mktemp -d
система создает для вас каталог на основе /dev/urandom
gettimeofday
, getpid
,... и других функций для обеспечения уникальности имени.