Como faço um alias funcionar quando preciso invocar mais de um binário no mesmo comando?

Como faço um alias funcionar quando preciso invocar mais de um binário no mesmo comando?

Digamos que eu tenha dois arquivos binários:binário1ebinário2.

Cada um deles tem seu próprio conjunto de opções:opções1eopções2.

Os usuários precisam invocar um comando que siga esta estrutura:

binary1 options1 binary2 options2

No entanto, quero definiropções2eu mesmo e fazê-los executar o seguinte:

binary1 options1 alias

onde

alias='binary2 options2'

Existe alguma maneira de fazer isso funcionar no bash/tcsh? Estou trabalhando no SLES 11 SP2 em arquitetura de 64 bits.

Responder1

Você precisa que binário1 e opções1 sejam o que eles desejam para iniciar? Então: defina a função "alguma coisa":

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

(e tenha-o definido nos arquivos de login do bash)

E faça-os executar:

something binary1 options1

Dessa forma, eles podem realmente enlouquecer com as opções1, como:

something touch file1 file2 "file3 with extra spaces" file4

Responder2

mpirun não gosta de usar um alias, como você provavelmente já percebeu. A melhor coisa é criar um wrapper em torno do seu executável. Então coloque o seguinte em um arquivo (torne-o executável):

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

Se você nomear este arquivo como "dplace" e colocá-lo no caminho dos usuários em um diretório que é pesquisado antes do diretório onde o dplace real é encontrado, então ele executará de forma transparente o script wrapper (lembre-se de "refazer" como você estão tentando isso).

Presumo que TOP_PROC já esteja definido no ambiente.

informação relacionada