Se avete usato la shell POSIX ("bash") su VOS, allora sapete che potete eseguire vari comandi POSIX e usare tutti i trucchi che il bash fornisce, come il reindirizzamento di ingresso e di uscita. Ma sapevate che potete usare queste stesse caratteristiche con molti comandi VOS?
Per esempio, se si vuole combinare il comando VOS "lista" con il comando POSIX "more", digitare la seguente riga di comando in bash:
elenco | altro
Se si desidera eseguire l'output del comando di lista in un file, ad esempio:
elenco >lista.txt
Questo funziona perché sia VOS che POSIX usano la stessa porta VOS per scrivere l'output sul terminale o sul file batch. La porta VOS "default_output" è equivalente al file POSIX "stdout". E la porta VOS "default_input" è la stessa del file POSIX "stdin". Infine, la porta VOS "terminal_output", che è dove VOS scrive i messaggi di errore, è la stessa del file POSIX "stderr".
Ecco un esempio (escogitato) di utilizzo del bash input redirection su un comando VOS. Creare un file chiamato "line_edit.txt" con le seguenti 2 righe:
stampa * chiudere
Potete quindi eseguire queste richieste di line_edit contro il vostro file di abbreviazioni come segue:
line_edit abbreviations <line_edit.txt
Si noti che bash esegue ogni comando in un nuovo processo figlio. Il processo figlio eredita tutti gli allegati I/O e tutti gli stati dal processo padre, quindi questo non è un problema per la maggior parte dei comandi. Tuttavia, qualsiasi comando VOS che modifica l'ambiente di processo non farà quello che ci si aspetta. Per esempio, eseguendo il comando set_library_path dall'interno di bash si cambiano i percorsi della libreria del processo figlio; e questo processo viene distrutto non appena il comando termina. Se si vogliono cambiare i percorsi che sono ricercati da bash, è necessario effettuare la modifica utilizzando il metodo POSIX, che è quello di cambiare la variabile d'ambiente PATH.
Spero che troviate utili queste tecniche.