Как передать результат по каналу 'даты', управляют к команде 'mv'

Вы отправили в комментарии, что Вы работаете над системой Mac OS X. Это - важный ключ к разгадке цели их ._* файлы.

Они ._* записи архива являются блоками данных AppleDouble, которые содержат дополнительную информацию, связанную с соответствующим файлом (тот без ._ префикс). Они сгенерированы определенным для Mac OS X copyfile (3) семейство функций. Блобы AppleDouble хранят данные управления доступом (ACLs) и расширенные атрибуты (обычно, флаги Средства поиска и “ветви ресурсов”, но xattrs может использоваться для хранения любого вида данных).

Предоставленный систему Mac OS X архивирует инструменты (bsdtar (также symlinked как tar), gnutar, и pax) генерирует a ._* заархивируйте участника для любого файла, который имеет любую расширенную информацию, связанную с ним; в “разархивировали” режим, они будут также декодировать тех членов архива и применять получающуюся расширенную информацию к связанному файлу. Это создает “полную точность” архив для использования в системах Mac OS X путем сохранения и более позднем извлечении всей информации, которую может хранить HFS + файловая система.

Соответствующие инструменты архива в других системах не знают для предоставления специальной обработки им ._* файлы, таким образом, они распакованы как нормальные файлы. Так как такие файлы довольно бесполезны в других системах, они часто рассматриваются как “файлы спама”. Соответственно, если система не-Mac OS X генерирует архив, который включает нормальные файлы, которые запускаются с ._, инструменты разархивирования Mac OS X попытаются декодировать те файлы как расширенную информацию.

Существует, однако недокументированный (?) способ сделать предоставленный систему Mac OS X archivers ведет себя как, они делают в других системах Unixy: переменная среды COPYFILE_DISABLE. Установка этой переменной (к любому значению, даже пустая строка), будет препятствовать тому, чтобы archivers генерировал ._* заархивируйте участников для представления любой расширенной информации, связанной с заархивированными файлами. Его присутствие будет также препятствовать тому, чтобы archivers пытался интерпретировать таких членов архива как расширенная информация.

COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …

Вы могли бы установить эту переменную в файле инициализации своей оболочки, если Вы хотите проложить себе путь, как правило.

# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

Затем когда необходимо повторно включить функцию (для сохранения/восстанавливания расширенной информации), можно “сбросить” переменную для отдельных команд:

(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)

archivers на Mac OS X 10.4 также делают что-то подобное, хотя они используют другую переменную среды: COPY_EXTENDED_ATTRIBUTES_DISABLE

4
19.06.2011, 21:39
1 ответ

Используйте что-то вроде этого (bash):

mv myfile myfile.$(date +%s)

Или альтернативно:

mv myfile myfile.`date +%s`

если Ваша оболочка не делает $(command) вещь.

11
27.01.2020, 20:48
  • 1
    Thanks.both для меня. Я копирую и вставил второе, потому что я не могу ввести", '".How я ввожу этот символ? –  Nick.h 19.06.2011, 20:40
  • 2
    Зависит от Вашей клавиатуры... AltGr+7 на "нормальной" французской клавиатуре AZERTY. На английских разметках это является часто вверху слева ключевым (чуть выше tab, слева от 1). Его код ASCII является 0x60 (96 декабрей). –  Mat 19.06.2011, 20:45
  • 3
    Нужно подчеркнуть, что это обратные галочки вокруг команды даты, не обычные одинарные кавычки. –  Andre Holzner 19.06.2011, 21:17
  • 4
    я думаю важность обратных галочек по одинарным кавычкам, может, вероятно, быть принят на сайте Unix, но это должно, вероятно, быть отмечено это $() синтаксис является более новым и предпочтительным форматом для этой операции. –  Caleb 19.06.2011, 22:27

Теги

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