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

perl -F, -pale '
   $_ = join ",", qw[N/A] x @F
      if grep /^$.$/, qw/77 132 140 142 155 156 157  175/;
' input.csv

Или с GNU sedмы могли бы использовать сочетание переменных оболочки:

# give the rows to be made N/A in a comma separated fashion
rows2na='77,132,140,142,155,156,157,175'
b2sub=$(echo "$rows2na," | sed -e 's/,/ba\n/g')
sed -e "
    $b2sub
    b
    :a;s|[^,]*|N/A|g
" input.csv

Примечание:

  1. Убедитесь, что входной CSV-файл действительно разделен запятыми, а не какими-либо другими символами, например TAB.
  2. Убедитесь, что входной файл имеет окончание строки unix (перевод строки, также известный как новая строка "\n" ), а не windows или mac.
0
22.07.2020, 12:18
1 ответ

Gedit is running

pidof geditдолжен дать вам ответ

contains unsaved text

Насколько я знаю, Gedit не поддерживает какой-либо интерфейс DBus, что делает эту задачу относительно сложной, но возможной:

#! /bin/bash

for i in `pidof gedit`; do
    for j in `xdotool search --name --onlyvisible --pid $i`; do
        title=`xdotool getwindowname $j`
        case $title in
            \**)
                echo "Found running Gedit with unsaved data"
            ;;
            *)
                echo "Gedit is open but there are no unsaved documents"
            ;;
        esac
    done
done

Что делает этот сценарий. Он перебирает все найденные процессы gedit, находит их видимые окна, перебирает их заголовки и проверяет, содержит ли заголовок *в качестве первого символа, указывающего на несохраненный документ.

Сторонники чистоты Bash/shell, вероятно, захотят заменить ``на $( ).

2
18.03.2021, 23:18

Теги

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