Предлагаю взглянуть на Atom . Это отличный текстовый редактор со встроенным предварительным просмотром уценки. Я обычно не использую режим предварительного просмотра уценки, так как в нем есть серьезная ошибка - разрывы строк (если они не попадают парами, что указывает на содержимое тега
) сохраняются в предварительном просмотре. Но режим подсветки синтаксиса настолько хорош (поскольку Markdown оптимизирован для чтения человеком, а раскраска Atom превосходна), что я обычно заканчиваю чтение файлов уценки в режиме просмотра исходного кода.
Вероятно, это не сработает идеально, но это только начало.:
#!/bin/sh
recent_dir=$HOME/recent
mkdir -p "$recent_dir" || exit 1
find "$recent_dir" -type l -ctime +1 -delete
find "$HOME" -type f -mtime -1 -exec sh -c '
dir=$1; shift
for pathname do
link=$dir/${pathname##*/}
[ -h "$link" ] && continue
ln -s "$pathname" "$link"
done' sh "$recent_dir" {} +
Этот сценарий создаст и будет использовать каталог с именем recent
в вашем домашнем каталоге (. Убедитесь, что этот каталог еще не существует, или измените имя в сценарии ).
Он начинается с удаления символических ссылок в каталоге recent
, которые старше одного дня.
Затем он находит все обычные файлы (только )в вашем домашнем каталоге или ниже, которые были изменены за последние 24 часа, и для каждого такого файла создает символическую ссылку в каталоге recent
.
Если два или более файла имеют одинаковое имя файла, выигрывает первый найденный файл.
Сценарий также будет обрабатывать скрытые файлы и файлы в скрытых каталогах.
Чтобы исключить каталоги из поиска, используйте, например,.
find "$HOME" -type d \( -name '.*' -o -name '*-mail' \) -prune \
-o -type f -mtime -1 -exec sh -c...as before...
Это исключит скрытые каталоги и любой каталог, имя которого заканчивается на -mail
.
Чтобы первый find
также очищал символические ссылки на перемещенные или удаленные файлы, измените его на
find "$recent_dir" -type l \( -ctime +1 -o ! -exec test -f {} \; \) -delete
В идеале эквивалент CLI должен делать это черезgvfs
схемы , чтобы иметь возможность использовать recent:///
местоположение в качестве аргумента, например. как упоминалось здесь
nautilus recent:///
или 1
gio open recent:///
открывает недавно использованные файлы в nautilus
так же, как если бы вы использовали кнопку Recent
на боковой панели.
В вашем случае это мало поможет, так как вам нужен 2 инструмент командной строки, который понимает gvfs
схемы, и единственный, о котором я знаю, это вышеупомянутый gio
. Вы можете бежать
gio list recent:///
, но вывод будет бесполезен, так как вы получите только внутренние представления gio
этих путей. Чтобы увидеть, что они вам соответствуют, вы можете использовать
gio tree recent:///
но это по-прежнему практически непригодно для использования, если вы не выполняете интенсивный анализ/обработку вывода. Однако вы можете написать свой собственный инструмент, который использует GtkRecentManager
, чтобы делать то, что вы хотите. Чтобы вы начали, вот очень простой пример вpython
(без проверки ошибок, целевой каталог должен существовать и быть пустым и т. д.):
#!/usr/bin/env python
import gi,sys
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk,Gio
from sys import argv
tg_dir = argv[1]
rec_mgr = Gtk.RecentManager.get_default()
for item in rec_mgr.get_items():
if item.exists():
uri = item.get_uri()
tg = Gio.File.new_for_uri(uri)
tg_path = tg.get_path()
b_name = tg.get_basename()
dt_path = tg_dir + "/" + b_name
dt = Gio.File.new_for_path(dt_path)
dt.make_symbolic_link(tg_path, cancellable=None)
Если вы сохраните это, например, как. my_linker
в вашем PATH
и запустите его с путем к каталогу в качестве аргумента
my_linker /path/to/symlinks
он создаст символические ссылки на самые последние использовавшиеся файлы в этом каталоге.
1:gvfs-open
устарело
2 :Я не знаком сemacs
-возможно, все это можно было бы сделать с помощью плагинов или расширений... Хотя я не знаю...
Это возьмет недавно -использовавшиеся файлы, указанные в~/.local/share/recently-used.xbel
(или, скорее, ${XDG_DATA_HOME}/recently-used.xbel
), и свяжет их все в каталог с именем~/recent
:
#!/bin/sh
set -e
mkdir -p ~/recent
rm -f ~/recent/* # Make sure you don’t have anything you care about here
xmlstarlet sel -t -m '/xbel/bookmark[starts-with(@href, "file://")]' \
-v 'substring(@href, 8)' -n ${XDG_DATA_HOME:-~/.local/share}/recently-used.xbel |
python -c "import sys, urllib as ul;
sys.stdout.write(ul.unquote(sys.stdin.read().replace('\n', '\0')));" |
xargs -0 ln -st ~/recent
Это использует XMLStarlet для извлечения URI файлов из списка недавно -использованных документов (, игнорируя другие URI ), передает их в сценарий Python, который заменяет символы новой строки нулевыми символами и затем снимает кавычки с экранированными URI (, например+
или %20
вместо пробела )и, наконец, передает его в xargs
, который разбивает все имена файлов и передает их вln
(вариант GNU )для создания символических ссылок.
Обратите внимание, что ссылки будут создаваться независимо от того, существует ли еще целевой файл; часто бывает так, что список недавно -использовавшихся файлов содержит временные файлы, которые с тех пор были удалены.