Как заставить псевдоним работать, когда мне нужно вызвать более одного двоичного файла в одной команде?
Скажем, у меня есть два двоичных файла: двоичный1 и двоичный.
Каждый из них имеет свой собственный набор параметров: options1 и options2.
Пользователи должны вызвать команду, которая соответствует этой структуре:
binary1 options1 binary2 options2
Однако я хочу установить options2 самостоятельно и заставить их выполнить следующее:
binary1 options1 alias
где
alias='binary2 options2'
Есть ли способ заставить это работать под bash/tcsh? Я работаю под SLES 11 SP2 над 64-битной архитектурой.
2 ответа
Вы должны иметь двоичный код1, а параметры1 должны быть такими, какими они хотят начать? Затем: определите функцию "что-то":
something () {
options2="...." #you define them as you want, either here or from another source
binary1="$1" ; shift
"$binary1" "$@"
binary2 $options2
}
(и это определено в файлах входа bash)
И пусть они бегут:
something binary1 options1
Таким образом, они действительно могут сходить с ума на options1, например:
something touch file1 file2 "file3 with extra spaces" file4
mpirun не любит запускать псевдоним, поскольку вы, вероятно, уже разобрались. Лучше всего создать оболочку вокруг вашего исполняемого файла. Поэтому поместите в файл следующее (сделайте его исполняемым):
#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*
Если вы назовете этот файл "dplace" и поместите его в путь пользователя в каталоге, в котором выполняется поиск перед каталогом, в котором находится настоящий dplace, то вместо этого он будет прозрачно запускать сценарий оболочки (не забывайте "перефразировать", когда вы пробуем это).
Я предполагаю, что TOP_PROC уже определен в среде.