У меня есть процесс, который создает текстовые файлы, имена файлов которых основаны на отметке времени их создания:
$ ls
1378971222.txt
1378971254.txt
1378971482.txt
1378971488.txt
1378972089.txt
1378972140.txt
1378972141.txt
1378972153.txt
1378972155.txt
1378972241.txt
Как я могу автоматически заполнить имя файла последнего созданного файла , то есть файла с последним mtime? Невозможно использовать Tab-завершение для этих файлов, так как почти каждый символ в имени файла используется совместно с другим файлом. Я надеюсь найти ярлык (например, Alt .
который автоматически завершает последний аргумент последней команды). Мне удалось состряпать следующий псевдоним , который отлично подходит для VIM
, но я хотел бы знать , если универсальный ярлык существует , что я мог бы использовать с kde-open
, sqlite3
и другими приложениями.
alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"
bash
autocomplete
dotancohen
источник
источник
$(ls -t|head -1)
в строку только литерал . Поэтому не ездить на велосипеде. В отсутствие удовлетворительного ответа, я принял ответ, который научил меня больше всего и обеспечивает наибольшую полезность.Ответы:
Просто удалите
vim
из псевдонима. Сделайте что-то вроде этого:Затем вы можете использовать любую программу для открытия последних файлов:
и т.п.
Однако, это сломается, если в именах ваших файлов есть пробелы или странные символы, поэтому вам никогда не следует анализировать
ls
. Лучшим способом было бы что-то вроде этого (добавьте это к своему.bashrc
):Эта функция выполнит любую команду, указанную вами в качестве аргумента, и передаст результат
find
вызова (последний файл) этой команде. Итак, вы можете делать такие вещи, как:Если вам нужно уметь делать такие вещи, как
mv $(latest) foo/
попробуйте это:Затем, чтобы скопировать последний файл
bar/
, вы должны сделатьИ вы все еще можете сделать так
latest emacs
же, как и раньше.источник
alias latest='\ls -tr | tail -n 1'
- это будет работать, если у вас естьls
псевдоним.Вы можете легко настроить это
zsh
, например, так:(вы также можете изменить строку так, чтобы этот стиль использовался только для определенных шаблонов имен файлов)
zsh
очень похож на bash, вы, вероятно, можете назвать его расширенным набором bash - с точки зрения возможностей / использования.Но, возможно, Bash имеет аналогичную особенность.
источник
zsh
но если я когда-либо сделаю это, я добавлю это в закладки!zsh
!Так как последний файл также сортируется последним, вы можете использовать
menu-complete-backward
.menu-complete
иmenu-complete-backward
циклически завершать или вставить первое или последнее завершение. Я привязал их к option-tab и shift-tab в~/.inputrc
:Ваш эмулятор терминала может не вставляться
\e[Z
при нажатии клавиши Shift. ИспользуйтеC-v
или,cat -v
чтобы увидеть, какой текст вставляется при нажатии комбинации клавиш.источник
Фоном для вопроса является скорость использования. Я считаю клавиатурный макрос наиболее подходящим. Добавить к
~/.inputrc
:Дальнейшие идеи: Первоначально я хотел что-то, что дает мне 1-й, 2-й, 3-й новейший файл. Идея заключалась бы в том, чтобы пометить места токеном, например, «grep x _», а затем выполнить макрос клавиатуры «\ C-alatest-extension \ Cm», а «latest-extension» предложит выбрать список проклятий для выбора. последние файлы для каждого токена «_» в командной строке.
Я считаю это важным вопросом, потому что одно из оставшихся преимуществ GUI по сравнению с SHELL - это выбор недавно использованных / созданных файлов и каталогов.
autojump
немного помогает для каталогов, решение для файлов отсутствует.источник
$(ls -t|head -1)
в строку bash, поэтому его необходимо интерпретировать. Это делает его менее полезным, но это все еще хороший трюк.