Это должно работать:
grep -m1 -oP '(\d{1,3}\.?){4}:\d{1,5}' <( your-qemu-command 2>&1 )
<( your-qemu-command 2>&1 )
— это замена процесса, которая запускает qemu
с перенаправлением stdout/stderr в анонимный канал или FIFO; grep
читает из канала/FIFO, грубо ища шаблон IP :PORT, где IP относится к IPv4-адресу.Параметр -o
для grep
гарантирует, что будет напечатана только комбинация IP :PORT совпадающей строки; опция -m1
гарантирует, что grep
вернется к подсказке после того, как найдет то, что искал (, т. е. выйдет при первом совпадении ). Параметр -P
указывает на использование синтаксиса регулярных выражений Perl. qemu
продолжает работать в фоновом режиме, пока не завершится. Любой вывод на stdout/stderr с помощью qemu
после завершения команды grep
теряется, но, поскольку предполагается, что комбинация IP :PORT является последним выводом, это не должно вызывать беспокойства. Если вы хотите захватить вывод вышеуказанной команды, просто оберните его подстановкой команды $(...)
вот так:
ip_port=$( grep...etc )
На основании этого:
pandoc README.md | firefox "data:text/html;base64,$(base64 -w 0 <&0)"
# or
python3 -m markdown README.md | firefox "data:text/html;base64,$(base64 -w 0 <&0)"
Итак, вы можете создать функцию:
mdopen(){ pandoc "$1" | firefox "data:text/html;base64,$(base64 -w 0 <&0)"; }
Использование:
mdopen README.md
Альтернативный вариант :Используйте grip
. Он открывает локальный веб-сервер для обслуживания файлов уценки -.
$ pip install grip
$ grip
[...]
* Running on http://localhost:6419/ (Press CTRL+C to quit)
Когда вы укажете в браузере это место, вы увидите свои файлы уценки.