与这篇文章相关的,cd 到最近修改的子目录
bash cd "$(\ls -1dt ./*/ | head -n 1)"
zsh cd ./*(/om[1])
更改为最近修改的目录。
但没有脚本鱼壳。
当使用 config.fish 中的 bash 代码时,它显示
$(...) is not supported. In fish, please use '(\ls)'
有人可以帮忙吗?
答案1
你尝试了什么?特别fish
是告诉你使用'(\ls)'
。所以
cd (ls -1dt ./*/ | head -n 1)
似乎是基于 10 秒的实验。编辑:删除\
字符。
答案2
在鱼中,你不能使用$(command)
,你必须使用(command)
。更多信息
另外,在fish中,前面的反斜杠ls
应该替换为command
总结一下,使用:
cd (command ls -1dt ./*/ | head -n 1)
答案3
而不是依赖于 的输出ls
,并假设您有 GNU coreutils:
cd (stat --printf='%Y:%n\0' ./*/ | sort -zt: -k1nr | head -zn1 | cut -d: -f2-)
答案4
你可以做
ls -dt ./*/ | read newest && cd $newest
但请注意,它不适用于包含换行符的文件名。
使用最新版本的 GNU ls
,您可以通过以下方式解决它:
ls --zero -dt ./*/ | read -z newest && cd $newest
或者你可以这样做:
zsh -c 'print -rNC1 ./*(/om[1])' | read -z newest && cd $newest
或者也*(-/om[1])
像方法中一样考虑目录的符号链接(及其目标的修改时间)*/
。