создать 'виртуальный файл' из вывода команды удара?

Windows идет с инструментом для миграции настроек от предыдущих версий в XP, это называют "Файлами и Мастером Передачи Настроек", хотя я полагаю, что он изменил имя с тех пор. Конечно, если Вы зарегистрированы в домене Windows, затем Вы могли бы установить своего пользователя, чтобы иметь профиль роуминга.

36
задан 27 December 2014 в 20:45
7 ответов

Это - самый чистый способ сделать то, что Вы хотите:

mutt admin@example.org -a <(mysqldump mysqldumpoptions)

<() оператор - то, что Вы просили; это создает FIFO (или/dev/fd) и разветвляет процесс и подключает stdout к FIFO. >() делает то же, кроме подключений stdin к FIFO вместо этого. Другими словами, это делает весь материал mknod для Вас негласно; или на современной ОС, делает это еще лучшим способом.

Кроме, конечно, это не работает с дураком, это говорит:

/dev/fd/63: unable to attach file.

Я подозреваю, что проблема состоит в том, что дурак пытается искать в файле, который Вы не можете сделать на канале никакого вида. Поиск - вероятно, что-то как сканирование файла для выяснения, какой тип MIME это и какая кодировка могла бы работать (т.е., является ли файл 7 битами или 8 битами), и затем ищущий на начало файла на самом деле закодировать это в сообщение.

Если то, что Вы хотите отправить, является простым текстом, Вы могли всегда делать что-то вроде этого для создания его основным содержанием электронной почты вместо этого (не идеальный, но он на самом деле работает):

mysqldump mysqldumpoptions | mutt -s "Here's that mysqldump" admin@example.org
53
ответ дан 28 November 2019 в 19:49
  • 1
    Потрясающе! Я вижу такое перенаправление в первый раз. –  Saurabh Barjatiya 14 July 2009 в 14:12

Я думаю, что Вы ищете, использование FIFO mknod

mknod /tmp/foo p

echo hello > /tmp/foo &

cat /tmp/foo

Отметьте, запись заблокируется, если не будет никакого процесса считывания.

например.

mknod /tmp/foo p

mysqldump mysqldumpoptions > /tmp/foo &

mutt -a /tmp/foo
4
ответ дан 28 November 2019 в 19:49

Это должно быть вложение? Если это может появиться как тело сообщения (7-разрядный чистый ASCII, не содержит '.' на строке отдельно, и т.д.), то что-то вроде этого работало бы:

mysqldump mysqldumpoptions | дурак-s "сегодняшний mysql выводят" admin@example.org

1
ответ дан 28 November 2019 в 19:49

Вы можете использовать имя файла /dev/stdin с дураком, который будет читать из его stdin.

mysqldump mysqldumpoptions | mutt -a /dev/stdin admin@example.org

Гм, я просто попробовал это, и дурак жалуется:

/dev/stdin isn't a regular file.
/dev/stdin: unable to attach file.

О, хорошо. Я думаю, что это отвечает на Ваш вопрос хотя, с -a дурак опции ожидает регулярный файл, который подразумевает не устройство или канал.

1
ответ дан 28 November 2019 в 19:49

FIFO является, вероятно, лучшим способом. Однако можно использовать mkfifo /path/to/fifo вместо этого

1
ответ дан 28 November 2019 в 19:49

я могу пропускать что-то здесь, но почему дурак использования, когда это походит больше на задание для/usr/sbin/sendmail (или везде, где он живет на Вашем дистрибутиве)?

mysqldump mysqldumpoptions | sendmail admin@example.org

большая часть Unix, который MTAs обеспечивают команде/usr/sbin/sendmail, и они все понимают более или менее те же опции и работу более или менее тем же способом. почти во всех случаях Вы не должны заботиться, который конкретный MTA/реализацию sendmail Вы используете.

существует несколько других альтернатив также, включая mail/mailx

0
ответ дан 28 November 2019 в 19:49
  • 1
    затем it' s не вложение, которое кажется вероятным быть более твердым использовать для получателя –  freiheit 14 July 2009 в 10:06
  • 2
    в этом случае лучшее решение состояло бы в том, чтобы использовать инструмент как метапочта (1) или конструкция пантомимы (1p) или запись Вашего собственного использования чего-то как жемчуг MIME:: Облегченный модуль (мой любимый, потому что это помогает сделать наиболее распространенные связанные с пантомимой вещи). –  cas 14 July 2009 в 12:49

Дурак-a опция конкретно использует типы MIME, определенные в/etc/mime.types. Ни одни из виртуальных типов файлов, что Вы думали бы, не являются на самом деле допустимым зарегистрированным типом пантомимы, таким образом, я не думаю, что вложение дурака работало бы. Только для подтверждения концепции, можно попробовать пакет поддержки пантомимы установки (который обеспечивает двоичные файлы доступа к файлу пантомимы те, которые видят, редактируют, и т.д.), и работайте, видят против виртуального файла (скажите, что канал), Вы будете видеть, что это не распознает его. Основная проблема - то, что обычно виртуальный файл содержит содержание данных в памяти, не на диске, объект файла является просто указателем. Можно даже попробовать, переносят виртуальный файл с tar/gz и делают дурака счастливым, но я сомневаюсь, что Вы получите что-либо полезное из другого конца... :)

0
ответ дан 28 November 2019 в 19:49

Теги

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