Заполните последний использованный файл в текущем каталоге

Я ищу способ быстрого доступа к последнему файлу/каталогу в командной строке, предпочтительно в ZSH.

ls -d *(om[1])

Дает мне это, и если я хочу использовать команду с командой, например. меньше * (om [1])

Это также работает.

Однако утомительно вводить все скобки, и я использую этот много. Поэтому я ищу способ создания ярлыка для этой строки.

Я создал функцию в .zshrc файле

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

который я могу использовать следующим образом:

less <$(lf)
less <`lf`

но я считаю, что это еще не идеальное.

less |lf

не работает.

Есть ли способ быстрого доступа к последнему файлу без использования "жестких символов"? В идеале это будет просто нечто вроде

less LATEST

Любые идеи?

Ответ 1

Вы хотите глобальный псевдоним zsh

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

Ответ 2

Вы можете использовать _most_recent_file (^Xm).

_most_recent_file (^ Xm)

Заполните имя последнего измененного файла, соответствующего шаблону в командной строке (который может быть пустым). Если задан числовой аргумент N, заполните N-й последний измененный файл. Обратите внимание, что завершение, если оно есть, всегда уникально.

- zshcompsys(1) BINDABLE COMMANDS

Итак, мы можем получить самый последний файл с типом 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.