有多个命令的别名,是否可以将参数传递给第一个命令?
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>
会显示一堆信息,包括开始计算的路径。我的目标是转到该目录。
我当然可以做到:
squeue
查看所有职位及其 Job_ID,
- 选择 Job_ID 之一,
sjobs <Job_ID>
显示信息,
- 用我的眼睛搜索包含路径的行,复制路径并
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
}
我是 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>
会显示一堆信息,包括开始计算的路径。我的目标是转到该目录。
我当然可以做到:
squeue
查看所有职位及其 Job_ID,- 选择 Job_ID 之一,
sjobs <Job_ID>
显示信息,- 用我的眼睛搜索包含路径的行,复制路径并
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
}