[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

AD.15.1 Comandos individuales de shell

M-! (shell-command) lee una línea de texto utilizando el minibúfer y la ejecuta como comando de shell en una subshell creada solamente para dicho comando. La entrada estándar para el comando viene del dispositivo nulo. Si el comando de shell produce alguna salida, la misma aparece, bien en el área de eco (si es breve), o en un búfer de Emacs llamado `*Shell Command Output*', que se muestra en otra ventana pero no se selecciona (si la salida es extensa).

Por ejemplo, una forma de descomprimir un archivo `foo.gz' desde Emacs es teclear M-! gunzip foo.gz RET. Dicho comando de shell normalmente crea el archivo `foo' y no produce salida en la terminal.

Un argumento numérico, tal como M-1 M-!, manda insertar la salida de terminal en el búfer actual en lugar de en un búfer aparte. Pone el punto antes de la salida, y establece la marca después de la misma. Po ejemplo, M-1 M-! gunzip < foo.gz RET insertaría el equivalente descomprimido de `foo.gz' en el búfer actual.

Si la línea de comando de shell termina con un `&', correrá asincrónicamente. Para un comando de shell sincrónico, shell-command devuelve el estado de salida del comando (0 quiere decir exitoso), cuando se lo llama desde un programa Lisp. Para un comando asincrónico, ud. no obtiene ninguna información de estado, ya que aún no ha terminado.

M-| (shell-command-on-region) es como M-! pero en lugar de no pasar entrada alguna, pasa el contenido de la región como entrada estándar al comando de shell. Si se usa un argumento numérico para insertar la salida en el búfer actual, entonces la región antigua se borra primero y la salida la reemplaza como contenido de la región. Cuando es llamado desde un programa Lisp, devuelve el estado de salida del comando.

Un uso para M-| es correr uudecode. Por ejemplo, si el búfer contiene texto uuencoded, teclee C-x h M-| uudecode RET para pasar el contenido del búfer entero al programa uudecode. Dicho programa hará caso únicamente al texto codificado, y almacenará la salida decodificada en el archivo cuyo nombre especifica el texto codificado.

Tanto M-! como M-| utilizan shell-file-name para especificar la shell utilizada. Esta variable se inicializa a partir de su variable de entorno SHELL al iniciarse Emacs. Si el nombre de archivo no especifica un directorio, se busca en los directorios de la lista exec-path; esta lista se inicializa a partir de la variable de entorno PATH al iniciarse Emacs. Su archivo `.emacs' puede redefinir cualquiera de ellas o ambas inicializaciones por defecto.

Tanto M-! como M-| esperan que el comando de shell acabe. Para no esperar más, teclee C-g para abandonar; esto termina el comando de shell con la señal SIGINT, la misma señal generada normalmente por C-c en la shell. Emacs espera hasta que el comando termine realmente. Si el comando de shell no se detiene (porque no hace caso a la señal SIGINT), vuelva a teclear C-g; esto envía al comando una señal SIGKILL que es imposible de evadir.

Para especificar un sistema de codificación para M-! o M-|, utilice el comando C-x RET c inmediatamente antes. See section Especificar un sistema de codificación.

La salida de error del comando normalmente se mezcla con la salida común. Si establece la variable shell-command-default-error-buffer como una cadena con el nombre de un búfer, la salida de errores se inserta antes del punto en el búfer con dicho nombre.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Roberto on abril, 2 2007 using texi2html 1.76.