¿Cómo hago que funcione un alias cuando necesito invocar más de un binario en el mismo comando?

¿Cómo hago que funcione un alias cuando necesito invocar más de un binario en el mismo comando?

Digamos que tengo dos archivos binarios:binario1ybinario2.

Cada uno de ellos tiene su propio conjunto de opciones:opciones1yopciones2.

Los usuarios deben invocar un comando que siga esta estructura:

binary1 options1 binary2 options2

Sin embargo, quiero estableceropciones2yo mismo y hacerles ejecutar lo siguiente:

binary1 options1 alias

dónde

alias='binary2 options2'

¿Hay alguna forma de hacer que esto funcione en bash/tcsh? Estoy trabajando bajo SLES 11 SP2 sobre una arquitectura de 64 bits.

Respuesta1

¿Necesitas que binario1 y opciones1 sean lo que quieran comenzar? Entonces: define la función "algo":

something () {
   options2="...." #you define them as you want, either here or from another source
   binary1="$1" ; shift
   "$binary1" "$@"
   binary2  $options2
}

(y tenerlo definido en los archivos de inicio de sesión de bash)

Y haz que ejecuten:

something binary1 options1

De esa manera, pueden volverse locos con opciones1, como por ejemplo:

something touch file1 file2 "file3 with extra spaces" file4

Respuesta2

A mpirun no le gusta ejecutar un alias, como probablemente ya habrás descubierto. Lo mejor es crear un contenedor alrededor de su ejecutable. Así que coloque lo siguiente en un archivo (hágalo ejecutable):

#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*

Si nombra este archivo "dplace" y lo coloca en la ruta de los usuarios en un directorio que se busca antes del directorio donde se encuentra el dplace real, entonces ejecutará de forma transparente el script contenedor (recuerde "refrito" a medida que están probando esto).

Supongo que TOP_PROC ya está definido en el entorno.

información relacionada