在当前目录中填写最新使用的文件

17
我正在寻找一种快速访问命令行上最新文件/目录的方法,最好在ZSH中实现。
ls -d *(om[1])

给了我刚需的内容,如果我想用一个命令,比如 less *(om[1])

这也可以工作。

但是,打所有括号很烦人,我经常使用这个很多 - 因此我正在寻找一种为这个字符串创建快捷方式的方法。

我已经在.zshrc文件中创建了一个函数。

lf(){ 
ls -d *(om[1])
}

我可以像这样使用:

less <$(lf)
less <`lf`

但我发现这仍然不是理想的。

less |lf

不能工作。

有没有一种方法可以快速访问最新的文件,而不需要使用“难以键入的字符”?理想情况下,它应该只是类似于以下内容:

less LATEST

有任何想法吗?

2个回答

21

你可以使用_most_recent_file (^Xm)来获取最近的文件。

_most_recent_file (^Xm)

根据命令行上(可能为空)的模式完成最近修改的文件名。如果给定数字参数N,则完成第N个最近修改的文件。注意,完成(如果有的话)总是唯一的。

-- zshcompsys(1)可绑定的命令

因此,我们可以使用CTRL-x-m键来获取最近的文件。例如:

% less ;# typing `CTRL-X m` here, we could get:
% less newest-file-or-directory

我们可以在这里指定一些模式,例如:

% less *.log ;# when I want the newest *.log:
% less newest.log

~/.zshrc中需要加入一些autoload -Uz compinit; compinit


1
非常好的解决方案 - 我之前不知道这个。我认为这些答案是等价的,但是格伦先回答了,所以我会接受他的答案。 - Gerhard

13

你想要一个 zsh 全局别名

alias -g latest='*(om[1])'
less latest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接