Как заставить работать псевдоним, когда мне нужно вызвать более одного двоичного файла в одной команде?

Как заставить работать псевдоним, когда мне нужно вызвать более одного двоичного файла в одной команде?

Допустим, у меня есть два двоичных файла:двоичный1идвоичный2.

Каждый из них имеет свой набор опций:варианты1иварианты2.

Пользователям необходимо вызвать команду, которая имеет следующую структуру:

binary1 options1 binary2 options2

Однако я хочу установитьварианты2я и заставляю их выполнять следующее:

binary1 options1 alias

где

alias='binary2 options2'

Есть ли способ заставить это работать под bash/tcsh? Я работаю под SLES 11 SP2 на 64-битной архитектуре.

решение1

Вам нужно, чтобы binary1 и options1 были такими, какими они хотят их запустить? Затем: определите функцию "something":

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

(и определить его в файлах входа bash)

И пусть они запустят:

something binary1 options1

Таким образом, они действительно могут сойти с ума от вариантов1, таких как:

something touch file1 file2 "file3 with extra spaces" file4

решение2

mpirun не любит запускать псевдоним, как вы, вероятно, уже поняли. Лучше всего создать оболочку вокруг вашего исполняемого файла. Поэтому поместите следующее в файл (сделайте его исполняемым):

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

Если вы назовете этот файл «dplace» и поместите его в путь пользователя в каталоге, поиск в котором выполняется раньше, чем в каталоге, где находится настоящий dplace, то вместо этого он прозрачно запустит скрипт-оболочку (не забудьте «rehash», когда будете пробовать это).

Я предполагаю, что TOP_PROC уже определен в среде.

Связанный контент