НАЗВА

mktemp - створює тимчасову (унікальну) назву файла

ЗВЕДЕННЯ

mktemp [-q] [-u] зразок

ОПИС

Знаряддя mktemp бере зразок назви файла, і перезаписує частину її, щоб утворити нову назву. Ця назва файла буде унікальною та придатною для використання додатком. Зразком може служити будь-яка назва файла з шістьма X (іксами), як закінчення. Наприклад: /tmp/temp.XXXXXX. Ікси буде замінено на номер поточного процесу і/або унікальною комбінацією літер. Може існувати приблизно 26 ** 6 комбінацій.

Якщо команда mktemp здатна успішно генерувати унікальну назву файла, тоді його буде створено з режимом доступу 0600 (за винятком коли було вказано прапорець -u), і назву файла буде виведено на стандартний пристрій виводу.

Пакети Debian з використанням mktemp у сценаріях підтримки залежать від debianutils >= 1.7.

ОПЦІЇ

Команда розпізнає наступні ключі:

ПОВЕРНЕНІ ЗНАЧЕННЯ

Знаряддя повертає 0 при успішному виконанні, і 0 - якщо сталася помилка.

ПРИКЛАДИ

Наступні фрагменти сценаріїв оболонки ?sh(1) ілюструють просте використання mktemp тоді, коли сценарій має припинити роботу, якщо не може створити безпечного тимчасового файла:

p=`basename $0`
TMPFILE=`mktemp /tmp/$p.XXXXXX` || exit 1
echo "program output" >> $TMPFILE

-q : Тихе припинення роботи, якщо сталася помилка. Корисно, коли небажано, щоб сценарій направляв повідомлення про помилку на стандартний пристрій помилок.

-u : Оперує в "ненадійному" режимі. Тимчасовий файл буде вилучено до того, як mktemp припинить роботу. Програма mktemp поводиться трохи краще за функцію ?mktemp(3), але всерівно може викликати стан перегонів. Використання цієї опції небажане.

У наступному прикладі, ми хочемо, щоб сценарій сам виявив помилку:

p=`basename $0`
TMPFILE=`mktemp -q /tmp/$p.XXXXXX`
if [ $? -ne 0 ]; then
    echo "$0: Can't create temp file, exiting..."
    exit 1
fi

Можна також перевірити, чи довжина значення $TMPFILE не є нульовою замість перевірки $?. Це дозволило би пізніше тестування (оскільки $? буде перезаписана наступною командою оболонки).

ВАДИ

Прапорець -d, що використовує ?mkdtemp(2), не підтримується в Лінуксі.

ІСТОРИЧНА ДОВІДКА

Знаряддя mktemp вперше з'явилося в OpenBSD.

ДИВІТЬСЯ ТАКОЖ

?mkstemp(3), ?mktemp(3), ?tempfile(1)