Захват вывода "diff" с помощью org-babel
Я пытаюсь захватить вывод diff
с org-babel, но по какой-то причине это не работает. Для файлов
1
a b c
2
a c b
diff 1 2
вызывается из командной строки возвращает
1c1
< a b c
---
> a c b
Но с орг-бабел, ничего
#+begin_src sh
diff 1 2
#+end_src
#+RESULTS:
Минибуфер гласит: "Блок кода не выдан". Окно вывода ошибки org-babel пустое. Другие команды, такие как ls
показать вывод, как ожидалось. Я не знаком с орг-бабел.
Я пытался с помощью :results output verbatim
, без изменений. Я также пытался использовать :results output replace
как предложено здесь. Не помогло
- Версия Emacs - 24.4.1 (в Debian, Джесси)
- Версия в орг-режиме - 8.2.10
1 ответ
Я мог бы воспроизвести вашу проблему (на OSX).
Странно то, что выполнение блока babel откроет буфер вывода ошибок Org-babel, как будто что-то идет в STDERR.
Если вы добавите любой другой вывод после diff, результаты будут отображаться ОК. Например,
#+begin_src sh :results output
diff 1 2
echo
#+end_src
Если вы заставите результаты diff в stdout, результаты также будут отображаться:
#+begin_src sh :results output
diff 1 2 | cat
#+end_src
Выглядит как org-babel
не нравится, когда код возврата не 0
. Вот почему работают различные решения. Добавление другой команды использования означает, что общий код ошибки блока является успешным. Точно так же вcat
заставляет конвейер возвращать код ошибки cat
. Еще один способ избавиться от состояния ошибки:
diff 1 2 || true