Компьютер с Ubuntu 13.04 внезапно перестал работать [закрыто]

Nautilus поставляет выбранные пути в сценарии в качестве аргументов программы. Следующий скрипт переименует пути, предоставленные в качестве аргументов программы, в случайные файлы (при сохранении расширения файла) и сообщит пользователю результат через Zenity (или в командной строке без X):

#!/bin/sh
set -eu

for source; do
    case "$source" in
        */*) dir="${source%/*}";;
        *) dir=.;;
    esac

    basename="${source##*/}"
    case "$basename" in
        ?*.*) extension=".${basename##*.}"; basename="${basename%.*}";;
        *) extension=;;
    esac

    message_type=info
    destination="$(exec mktemp --tmpdir="$dir" --suffix="$extension" XXXXXXXXXX 2>&1)" ||
        { rv=$?; message="$destination"; false; } &&
    message="$(exec mv -vT -- "$source" "$destination" 2>&1)" ||
        { rv="${rv-$?}"; message_type=error; }

    if [ -n "${DISPLAY-}" ]; then
        zenity "--$message_type" --no-markup --title="${0##*/}" --text="$message"
    else
        printf '%s: %s: %s\n' "${0##*/}" "$message_type" "$message" >&2
    fi

    [ -z "${rv-}" ] || exit "$rv"
done

Он использует mktemp вместо $RANDOM для выбора пути назначения, потому что

mktemp гарантирует, что целевой файл не существует и потому что он работает с POSIX-совместимыми оболочками Bourne, которые не поддерживают Специальная переменная $RANDOM Баша и расширения без clobber.

Таким образом, случайные имена не являются численными, а состоят из последовательности из 8 случайных альфа-числовых символов. Если вы действительно хотите использовать $RANDOM, я могу создать на нем вариант.

1
задан 29 August 2013 в 02:54

0 ответов

Другие вопросы по тегам:

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