我们将机器人结果以“result-yyyy-mm-dd-hh-mm-ss”格式创建到单独的文件夹中,我目前在我的 bash_aliases 中有这个
alias res="VAR=$(ls --directory /path/to/results/res* | tail -n 1); cd $"
Run Code Online (Sandbox Code Playgroud)
它工作正常一次..然后我必须重新加载我的 bashrc 以使其再次工作。尝试将重新加载到新的别名中,但在切换到较新的文件夹之前仍然必须使用 2-3 次。
ste*_*ver 24
双引号允许在定义时评估别名内容 - 使用单引号将评估推迟到运行时:
alias res='var=$(ls --directory /path/to/results/res* | tail -n 1); cd $var'
Run Code Online (Sandbox Code Playgroud)
也可以看看:
使用的问题ls
是必须解析 的输出ls
,这被广泛认为是一件坏事。你会得到奇怪的边缘情况,文件名包含换行符和其他tail
可能会绊倒的奇怪之处。
你可以用简单的 glob 扩展做你想做的事:
for i in /path/to/res-*/; do :; done; cd "$i"
Run Code Online (Sandbox Code Playgroud)
这基本上只是在列表中打勾,除了将其分配给变量之外什么都不做i
。当它完成循环时,它只使用最后一个值i
。它不是很聪明,但它应该提供可接受的性能,最多可达几百万个节点。
正如其他人所建议的,你可以在你的 ~/.bashrc
alias res='for i in /path/to/res-*/; do :; done; cd "$i"'
Run Code Online (Sandbox Code Playgroud)