Linux下如何快速进入目录中最后修改的子目录(Fish Shell环境)
解决Fish Shell中快速进入最新修改子目录的问题
直接执行的命令
先捕获最新修改的子目录名,再切换过去:
set latest_dir (eza --sort=modified --only-dirs | tail -n 1) cd $latest_dir
如果想用zoxide,刚创建的目录可能还没被索引,直接cd后zoxide会自动记录该目录,后续就能用z快速跳转。
封装成便捷函数
把下面的函数添加到~/.config/fish/config.fish中,之后直接输入cd-latest就能自动进入最新子目录:
function cd-latest set latest_dir (eza --sort=modified --only-dirs | tail -n 1) if test -n "$latest_dir" cd "$latest_dir" else echo "当前目录下没有子目录" end end
之前方法出错的原因
eza ... | xargs z报错:xargs会启动独立子进程,而z是Fish的shell函数(不是系统可执行文件),子进程找不到这个函数;就算能执行,子进程里的目录切换也不会影响当前shell。z "(eza ...)"报错:你把整个命令字符串传给z,zoxide会把它当作目录名去匹配,显然不存在带管道和括号的目录,所以找不到匹配项。
内容的提问来源于stack exchange,提问作者bbqman
相关产品推荐
相关产品推荐

