org-mode – ¿Cómo incluir la salida de un comando de shell en el bloque de código fuente del modo org?

Pregunta:

Por ejemplo, obtuve una demostración para mostrar un comando y su salida, y quiero insertarlos en un archivo .org como un fragmento de código fuente de C o algo así. Luego quiero poder exportar el archivo a un archivo HTML y tener el bloque resaltado como en muchos libros.

Por ejemplo, tengo

#+BEGIN_SRC shell
$ ls
dir1
dir2
file1
file2
...
or any other examples like this
...
#+END_SRC

pero no se puede convertir a HTML: un mensaje de error que dice

shell-mode : argumento de tipo incorrecto: processp, nil

aparece todo el tiempo. ¿Qué modo debo usar para reemplazar el shell , y si no debo usar el formato #+BEGIN_SRC...#+END_SRC , qué debo usar en su lugar?

Respuesta:

Si desea construir ejemplos usted mismo (eso es lo que obtengo de su pregunta, pero corríjame si me equivoco), use un bloque EXAMPLE lugar de un bloque SRC :

#+BEGIN_EXAMPLE
$ ls
dir1
dir2
file1
file2
...
#+END_EXAMPLE

Al exportar a HTML, este bloque se convierte en:

<pre class="example">
$ ls
dir1
dir2
file1
file2
...
</pre>

Como puede ver, el contenido del bloque exportado es exactamente el mismo que el contenido del bloque EXAMPLE original.


Si realmente desea ejecutar uno o más comandos para producir resultados dinámicamente e incluir tanto los comandos como los resultados en su documento HTML, debe modificar el bloque SRC para que se vea así:

#+BEGIN_SRC sh :exports both
ls
#+END_SRC

Si la salida del ls comando incluye los directorios y archivos que enumeró en su ejemplo ( dir1 , dir2 , file1 , file2 ), esto va a exportar:

<div class="org-src-container">
  <pre class="src src-sh">
    ls
  </pre>
</div>

<table>
  <colgroup>
    <col class="left" />
  </colgroup>
  <tbody>
    <tr>
      <td class="left">dir1</td>
    </tr>
    <tr>
      <td class="left">dir2</td>
    </tr>
    <tr>
      <td class="left">file1</td>
    </tr>
    <tr>
      <td class="left">file2</td>
    </tr>
  </tbody>
</table>

Como puede ver, el código en sí está envuelto en un bloque de código y los resultados se enumeran en una tabla.

Tenga en cuenta que deberá habilitar la compatibilidad con bloques de código sh explícitamente a través de:

(require 'ob-sh)
(org-babel-do-load-languages 'org-babel-load-languages '((sh . t)))

Esto se debe a que, por defecto, Org Babel solo habilita el soporte para bloques de código Emacs Lisp (como se explica aquí ).

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım