Я не знаю такого cat
аромата, но вот решение, которое почти работает:
mkfifo myfifo; tail -c +1 -f myfifo | tar xfJ -
dd if=/dev/sr0 of=myfifo
dd
завершится, извлеките DVD. tail
и tar
. Хитрость заключается в использовании tail
для непрерывного чтения из именованного канала. Вывод tail
затем передается команде, которую вы хотите запустить. Первоначально труба не открыта, поэтому ничего не происходит. Но когда вы начинаете закачивать данные в канал с помощью dd
, tail
подхватывает их и пересылает вашей команде.
Волшебство происходит, когда поток данных в канал останавливается.:tail
дескриптор стандартного выходного файла остается открытым, что приводит к приостановке выполнения вашей команды. Между тем, tail
просто ожидает ввода данных.
Причина, по которой я сказал, что это почти работает, заключается в том, что, похоже, существует проблема с буферизацией, из-за которой tail
не записывается последний бит данных, переданных в него. Я надеюсь, что кто-то может дать представление о том, как решить эту проблему.
Это именно то, что я делаю со своим рабочим столом. У меня весь раздел зашифрован с помощью LUKS. И затем мой домашний каталог зашифрован с помощью ecryptfs. Причина, по которой я шифрую свой домашний каталог с помощью ecryptfs, заключается в том, что рабочий стол также используется моим партнером.
Если вы являетесь единственным пользователем вашей системы, ecryptfs может не понадобиться.
Убедитесь, что вы используете разные пароли для LUKS и ecryptfs, чтобы компрометация пароля LUKS по-прежнему защищала файлы в вашем домашнем каталоге.