有多个命令的别名,是否可以将参数传递给第一个命令?

Having an alias with multiple commands, is it possible to pass an argument to the first command?

我是 programming/scripting 的初学者,遇到了以下问题。我在堆栈溢出和网络上搜索了很多,但无法解决问题。下面描述了我面临的详细情况,以防有人有完全不同的方法来解决问题。

有没有办法在多个命令中使用 alias(我称之为 go_to),但我只能将 argument 传递给第一个 command1

我想从 alias go_to='command1 ; command2'.

之类的东西执行 goto argument

command1 应该根据 argument 评估 path 并且 command2 应该 cd 到那里。

详细情况

我正在使用 slurm 批处理系统排队和启动作业的计算机设备上执行计算。使用命令 squeue slurm 显示所有 运行ning 和待处理的作业,包括它们的 Job_ID。使用 sjobs <Job_ID> 会显示一堆信息,包括开始计算的路径。我的目标是转到该目录。 我当然可以做到:

  1. squeue 查看所有职位及其 Job_ID,
  2. 选择 Job_ID 之一,
  3. sjobs <Job_ID>显示信息,
  4. 用我的眼睛搜索包含路径的行,复制路径并
  5. cd path到达我想去的地方

如果要检查多个计算,那将是一个冗长的过程。因此,我想使用别名 and/or bash 或 python 脚本(我们称它为 go_to),这样我只需键入 go_to <Job_ID> 即可到达在目录中。

到目前为止,使用 python 脚本我实现了 python script.py <Job_ID> 来调用 sjobs 并从中提取 path (但是将 sjobs 管道传输到 grep 和 sed也可以)。 我已经读过 Why doesn't "cd" work in a shell script? and Location of cd executable 并理解 os.chdir(path)subprocess.call(['cd',path]) 只会更改 python 子外壳内的目录,一旦脚本完成,我将最终进入我所在的同一目录启动脚本。

据我所知,只有 alias 可以带我到 path。因此,我的想法是将 python 脚本中的 path 输出到一个文件中,例如Path.txt 可由别名使用。使用别名

alias go_to='cd $(head -1 /absolute/path/to/Path.txt)' 可以更改为所需的 path。但这涉及事先让 python 脚本 运行。 我现在的实际问题是一步完成,因为我需要先将 <Job_ID> 传递给 path 的评估。

正如我所说,我对脚本编写还很陌生,所以欢迎使用任何替代方法。

定义一个函数来调用这两个命令。函数的参数可以传递给第一个命令。

go_to () {
    command1 ""
    command2
}