MKTEMP(1)

NAZWA
mktemp - twórz unikalną nazwę pliku tymczasowego

SKŁADNIA
mktemp [-d] [-q] [-u] wzorzec

OPIS
Narzędzie mktemp pobiera zadany wzorzec nazwy i zastępuje jego część by stworzyć nazwę pliku. Wynikowa nazwa jest unikalna i nadaje się do używania jako nazwa pliku. Wzorzec może być dowolną nazwą pliku z dodanymi do niej dokładnie sześcioma znakami ‘X’, na przykład /tmp/temp.XXXXXX. Końcowe ‘X’ zastępowane są przez numer bieżącego procesu i/lub unikalną kombinację liter. Liczba unikalnych nazw plików, jakie może zwrócić mktemp daje około 26 ** 6 kombinacji.

Jeśli mktemp może pomyślnie utworzyć unikalną nazwę pliku, to tworzony jest plik z prawami 0600 (chyba że podano flagę -u) zaś nazwa pliku wyświetlana jest na standardowym wyjściu.

OPCJE
Dostępne są następujące opcje:

-d  Utwórz katalog zamiast pliku.

-q  Ciche zakończenie działania w przypadku błędu. Przydatne, gdy skrypt nie chce by komunikat o błędzie trafił na standardowe wyjście błędów.

-u  Działaj w trybie “unsafe” (ryzykownym). Plik tymczasowy będzie skasowany (unlinked) przed zakończeniem pracy mktemp. Jest to nieco lepsze niż mktemp(3), ale nadal wprowadza `race condition' [tłum: ``wyścig'' procesów pomiędzy uzyskiwaniem unikalnych nazw i nadawaniem ich plikom]. Nie zaleca się używania tej opcji.

ZWRACANE WARTOŚCI
Narzędzie mktemp kończy pracę z wartością 0 w przypadku powodzenia, zaś 1 przy błędzie.

PRZYKŁADY
Poniższy fragment w sh(1) ilustruje proste zastosowanie mktemp, gdzie skrypt winien zakończyć pracę jeśli nie może utworzyć bezpiecznego pliku tymczasowego.

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

W tym przypadku chcemy, by skrypt sam obsługiwał błąd.

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

Zauważ, że można też zamiast sprawdzania $? sprawdzać, czy $TMPFILE ma długość zerową. Pozwala to na wykonanie sprawdzenia w dalszej części skryptu (gdyż $? zostanie nadpisane przez następne polecenie powłoki).

ZOBACZ TAKŻE
mkstemp(3), mktemp(3).

HISTORIA
Narzędzie mktemp pojawiło się w OpenBSD.