当我需要在同一个命令中调用多个二进制文件时,如何使别名起作用?

当我需要在同一个命令中调用多个二进制文件时,如何使别名起作用?

假设我有两个二进制文件:二进制1二进制2

它们每个都有自己的选项集:选项1选项2

用户需要调用遵循以下结构的命令:

binary1 options1 binary2 options2

但是我想设置选项2并让它们运行以下命令:

binary1 options1 alias

在哪里

alias='binary2 options2'

有什么方法可以在 bash/tcsh 下实现此功能吗?我在 64 位架构的 SLES 11 SP2 下工作。

答案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 已经在环境中定义。

相关内容