Можно ли получить список всех открытых файлов (и программ, используемых для их просмотра)?

Я хочу написать скрипт, который получает список всех открытых программ и файлов, а затем генерирует скрипт оболочки для повторного открытия этих файлов. Например, если бы я редактировал файл example.txt с помощью gedit и редактировал файл myscript.js с помощью geany, я бы хотел сгенерировать скрипт, который мог бы повторно открыть оба этих файла, используя их соответствующие программы. Есть ли способ получить список запущенных программ и файлов из командной строки?

3
задан 29 December 2012 в 06:33

4 ответа

Существует прием, который можно попробовать [может быть в гноме]

это шоу файлы, открытые процессом [в настоящее время не может с помощью]

Файл истории

/home/$USER/.local/share/recently-used.xbel

может помочь Вам.

  1. Сначала сделайте копию недавно-used.xbel
  2. Выполненный процесс и выход [открытый файл, закройте его. открытый файл, близко это и так далее... и выход]
  3. теперь сравните недавно-used.xbel со старым недавно-used.xbel
  4. от различного имени файла извлечения и связанного процесса

Поскольку ДЕМОНСТРАЦИЯ просто копирует вставку

diff <(cat ~/.local/share/recently-used.xbel) <(gedit /tmp/2.txt; cat ~/.local/share/recently-used.xbel)

от вывода можно извлечь имя файла и процесс.

0
ответ дан 29 December 2012 в 06:33

Как правило, это невозможно сделать так, как вы к этому подходите, потому что файлы, открытые в текстовом редакторе, не являются «открытыми» в том смысле, в котором программисты используют термин (то есть «наличие активного дескриптора файла где-то в программа, которая может использоваться для операций ввода-вывода "). Большинство программ открывают файл, читают данные в буфере памяти и закрывают файл. Сохранение файла такое же - открыть, написать, закрыть. Между операциями открытия и сохранения файл не является «открытым», это просто копия данных в буфере программы в памяти.

Таким образом, как правило, невозможно определить, какие файлы в данный момент загружены в память программы, однако сама программа знает, что изнутри программы реализовать тривиально запомнить список открытых файлов при завершении работы и заново открыть эти файлы при запуске. Многие текстовые редакторы, например Kate и Sublime Text 2, предоставляют такую ​​возможность.

В некоторых средах рабочего стола, таких как KDE (а также старый Gnome, я не уверен насчет Gnome 3 / Unity), также есть возможность сохранить список запущенных программ при завершении работы и перезапустить эти программы. на старте. Что в сочетании с использованием хорошего редактора позволяет добиться того, что вы пытаетесь сделать.

0
ответ дан 29 December 2012 в 06:33

Команда ps aux отобразит список запущенных процессов. В некоторых случаях в нем также будут перечислены файлы, которые редактируются этими программами, если имя файла использовалось в качестве аргумента командной строки при запуске процесса. Например, я открыл файл stuff.txt с помощью gedit, и gedit /home/anderson/Desktop/stuff.txt был отображен в выходных данных ps aux.

0
ответ дан 29 December 2012 в 06:33

Вы можете получить список файлов, открытых с помощью gedit сегодня (в данном случае 1 июля 2020 г.):

$ grep 2020-07-01 /home/$USER/.local/share/recently-used.xbel

  <bookmark href="file:///mnt/e/bin/scpto" added="2020-06-27T00:32:22Z" modified="2020-07-01T20:09:35Z" visited="2020-06-27T00:32:23Z">
          <bookmark:application name="gedit" exec="&apos;gedit %u&apos;" modified="2020-07-01T20:09:35Z" count="228"/>
  <bookmark href="file:///mnt/e/bin/reset-owner" added="2020-06-30T12:51:15Z" modified="2020-07-01T01:39:20Z" visited="2020-06-30T12:51:15Z">
          <bookmark:application name="gedit" exec="&apos;gedit %u&apos;" modified="2020-07-01T01:39:20Z" count="5"/>

Затем вызовите gedit и передайте ему имена файлов:

gedit /mnt/e/bin/scpto /mnt/e/bin/scpto
0
ответ дан 1 July 2020 в 20:38

Другие вопросы по тегам:

Похожие вопросы: