Ir al contenido principal

Si has utilizado el shell POSIX («bash») en VOS, sabrás que puedes ejecutar diversos comandos POSIX y aprovechar todos los ingeniosos trucos que ofrece bash, como la redirección de entrada y salida. Pero, ¿sabías que puedes utilizar estas mismas funciones con muchos comandos de VOS?

Por ejemplo, si quieres combinar el comando «list» de VOS con el comando «more» de POSIX, escribe la siguiente línea de comando en bash:

lista | más

Si quieres guardar el resultado del comando «list» en un archivo, escribe:

list >list.txt

Esto funciona porque tanto VOS como POSIX utilizan el mismo puerto VOS subyacente para escribir la salida en el terminal o en un archivo por lotes. El puerto «default_output» de VOS es equivalente al archivo «stdout» de POSIX. Y el puerto «default_input» de VOS es el mismo que el archivo «stdin» de POSIX.  Por último, el puerto «terminal_output» de VOS, donde VOS escribe sus mensajes de error, es el mismo que el archivo «stderr» de POSIX.

He aquí un ejemplo (artificial) del uso de la redirección de entrada de bash en un comando VOS. Crea un archivo llamado «line_edit.txt» con las dos líneas siguientes:

imprimir *
salir

A continuación, puedes ejecutar estas solicitudes «line_edit» con tu archivo de abreviaturas de la siguiente manera:

line_edit abbreviations <line_edit.txt

Ten en cuenta que bash ejecuta cada comando en un nuevo proceso hijo. El proceso hijo hereda todas las conexiones de E/S y todo el estado del proceso padre, por lo que esto no supone un problema para la mayoría de los comandos. Sin embargo, cualquier comando VOS que modifique el entorno del proceso no funcionará como esperas.  Por ejemplo, ejecutar el comando set_library_paths desde dentro de bash cambiará las rutas de las bibliotecas del proceso hijo; y este proceso se destruye tan pronto como el comando finaliza. Si desea cambiar las rutas que busca bash, debe realizar el cambio utilizando el método POSIX, que consiste en modificar la variable de entorno PATH.

Espero que estas técnicas te resulten útiles.