如果别名包含多个命令,是否可以将参数传递给第一个命令?

2024-06-01 07:10:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个编程/脚本的初学者,一直在解决以下问题。我在堆栈溢出和网络上搜索了很多,但是没有解决这个问题。我面临的详细情况如下所述,以防有人有完全不同的方法来解决问题。你知道吗

有没有一种方法可以将alias(我称之为go_to)与多个命令一起使用,但是我可以将argument只传递给第一个command1?你知道吗

我想从alias go_to='command1 ; command2'这样的地方执行goto argument。你知道吗

command1应该根据argument评估path,并且command2应该cd到那里。你知道吗

详细情况

我在一个计算机设备上执行计算,它使用slurm批处理系统来排队和启动作业。使用命令squeueslurm显示所有正在运行和挂起的作业,包括它们的作业ID。使用sjobs <Job_ID>显示一组信息,包括开始计算的路径。我的目标是去那个目录。 我当然可以做到:

  1. squeue要查看所有作业及其作业ID
  2. 选择一个作业ID
  3. sjobs <Job_ID>要显示信息
  4. 用我的眼睛搜索包含路径的行,复制路径并
  5. cd path到达我想去的地方。你知道吗

如果要检查多个计算,这是一个冗长的过程。因此,我希望使用别名和/或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?Location of cd executable并理解os.chdir(path)subprocess.call(['cd',path])只会更改python子shell中的目录,并且一旦脚本完成,我将在启动脚本的同一目录中结束。你知道吗

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

alias go_to='cd $(head -1 /absolute/path/to/Path.txt)' 可以更改为所需的path。但这需要事先让python脚本运行。 我现在的实际问题是一步到位,因为我需要首先将<Job_ID>传递给path的求值。你知道吗

正如我所说的,我对脚本非常陌生,所以欢迎使用任何其他方法。你知道吗


Tags: topath方法路径目录脚本idgo
1条回答
网友
1楼 · 发布于 2024-06-01 07:10:18

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

go_to () {
    command1 "$1"
    command2
}

相关问题 更多 >