【发布时间】:2015-01-25 10:23:31
【问题描述】:
我想查找正在运行的进程的一些数据,实际上我是在从暂存目录中搜索对应的作业 ID。我设法通过以下命令手动执行此操作(假设作业 ID 为 12345):
find ~ -name '12345.out'
这会根据作业找到输出文件:
/home/username/somefolder/12345.out
暂存目录被写入该文件夹中名为 .scrdir 的文件,所以
cd | cat /home/username/somefolder/.scrdir
带我去我想去的地方。
我现在想将它与我的 .cshrc 中的 csh 脚本或某个别名结合起来。
到目前为止我的尝试:
#/bin/csh
set jobfile = `find ~ -name $argv[1].out`
set jobdir = `dirname $jobfile`
set scrdir = `cat $jobdir/.scrdir`
echo $scrdir
其中第一个参数值是作业 ID,例如 12345此脚本打印正确的暂存目录,但我希望它在调用脚本后将我的实际工作目录更改为暂存目录。如何从 csh 脚本中更改工作目录?
我也将不胜感激任何改进问题/-标题的建议。
【问题讨论】:
-
我不清楚你到底想要什么,或者你的问题到底是什么。我想你已经有一个(非工作)尝试?您可能应该将此添加到您的问题中,因为这可能会更清楚您的问题所在。
-
尝试使用
pushd和popd更改目录,但是当脚本结束时,目录堆栈会重置。 (显然每个子shell都有自己的目录栈。)