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

1

Digamos que eu tenha dois arquivos binários: binary1 e binary2 .

Cada um deles tem seu próprio conjunto de opções: options1 e options2 .

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

binary1 options1 binary2 options2

No entanto, quero definir eu mesmo options2 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 com arquitetura de 64 bits.

    
por Jakob Bach 05.06.2013 / 13:14

2 respostas

2

Você precisa ter o binary1 e o options1 como eles querem começar? 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 tê-lo definido nos arquivos de login do bash)

E execute-os:

something binary1 options1

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

something touch file1 file2 "file3 with extra spaces" file4
    
por 05.06.2013 / 13:53
0

O mpirun não gosta de executar um alias, como você provavelmente já descobriu. 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 é procurado antes do diretório onde o dplace real é encontrado, ele irá executar o script wrapper de forma transparente (lembre-se de "refazer" "como você está tentando isso).

Eu suponho que TOP_PROC já está definido no ambiente.

    
por 05.06.2013 / 19:20