Проверить, запущено ли приложение и видно ли его пользователю

Поскольку вы уже используетеbash-специальный код, либо (предполагайте GNU grep, либо совместимый):

find. -name '*.o3g' -print0 | grep -z pattern |
  while IFS= read -rd '' file; do
    process "$file"
    read -n1 -p 'Press any key to continue' < /dev/tty
  done

(где символ (обратите внимание, однако, что некоторые клавиши посылают более одного символа )считывается с управляющего терминала ).

Или, что лучше, так как это также позволяет избежать того, чтобы processstdin был конвейером изgrep:

while IFS= read -u 3 -rd '' file; do
  process "$file"
  read -n1 -p 'Press any key to continue'
done 3< <(find. -name '*.o3g' -print0 | grep -z pattern)

(где символ читается из немодифицированного стандартного ввода ).

См. также Почему зацикливание вывода find является плохой практикой? для других потенциальных проблем, связанных с обработкой findвывода.

Здесь, может быть, вы можете просто сделать:

find. -name '*.o3g' -path '*pattern*' -ok process {} \;

См. также, чтобы избежать любого GNU-изма, кроме самого bash:

find. -name '*.o3g' -exec bash -c '
  for file do
    [[ $file =~ pattern ]] || continue
    process "$file"
    read -n1 -p "Press any key to continue"
  done' bash {} +

1
25.07.2019, 16:48
1 ответ

В списке процессов нет информации об окнах. Оконная система отделена от системы управления процессами. Управление процессами осуществляется Linux (ядром ). Работа с окнами выполняется X11 или Wayland как обычный пользовательский процесс.

Существует способ запросить у оконной системы список всех окон, их имена, видимость и другую информацию. Это, вероятно, будет то, что вам нужно. (Не помню как ).

1
27.01.2020, 23:41

Теги

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