ДА: есть способ указать уже запущенной x-программе открыть файл из bash!
Итак, по совету техподдержки StataCorp, оказалось, что xdotool (который можно установить с помощью sudo apt установить xdotool, если его еще нет в вашей системе) предлагает решение именно той проблемы, о которой идет речь в моем вопросе. С сайта проекта:
xdotool позволяет имитировать ввод с клавиатуры и мышь, перемещать окна и изменять их размер и т. д.Для этого используется расширение XTEST X11 и другие функции Xlib.
✓ Примечание: Если вы используете Wayland, имейте в виду, что это программное обеспечение не будет работать правильно. ï¸
С xdotool, вы можете искать окна и перемещать, изменять размер, скрывать и изменять свойства окна, такие как заголовок. Если ваш оконный менеджер поддерживает это, вы можете использовать xdotool для переключения рабочих столов, перемещения окон между рабочими столами и изменения количества рабочих столов.
Чтобы решить мою проблему с xdotool, мне нужно было создать xdotool сценарий, который я вызываю statadoc.xdo:
#!/usr/bin/xdotool
search --name "Stata/MP"
тип --окно %1 '$1' '$2'
ключ --окно %1 Возврат
Несколько комментариев к этому короткому скрипту:
- Путь может быть чем-то иным, чем 
/USR/бен/xdotool, поэтому обязательно подтвердите это с помощью какой xdotool или похожие. 
- Вторая строка будет частично соответствовать названию 
"Стата/МП 17.0" со строкой, предоставленной выше. Это полезно, так как, например, при обновлении версии до 17.1 или 18.x скрипт не сломается. поиск Команда определяет окно X-приложения, с которым я хочу взаимодействовать. 
xdotool скрипты принимают аргументы, следующие бить-нравиться $1, $2и т.п. условности. 
-  
тип команда буквально печатает предоставленный текст — в моем случае содержимое двух предоставленных $1 и $2 строковые аргументы в 1-м (и только в моем случае) окне, определяемом поиск команда в строке 2. 
-  
ключ команда отправляет <ENTER> (или же <RETURN> если хотите) в то же окно Stata. 
Теперь давайте посмотрим на мой модифицированный скрипт запуска, который вызывает statadoc.xdo в третьей-последней строке (я добавил раздел впереди, чтобы узнать, указывает ли предоставленный аргумент на определенные типы файлов Stata — разные команды использования необходимы для изящной обработки каждого … мой пример неполный, но это типы файлов Я использую в большинстве своих работ):
# Проверяем НЕТ ли аргумента. Если нет, ничего не делайте.
если [-z "$1"]
  тогда
    сломать
 # В противном случае установите префикс на значение по умолчанию, а затем проверьте 
 # оканчивается ли имя файла на .hlp, .sthlp, .ado, .do или .gph
 еще
  префикс = «использовать»
  если [ ${1##*.} = "hlp" ] || [ ${1##*.} = "sthlp" ] || [ ${1##*.} = "адо" ] || [ ${1##*.} = "делать" ]
    тогда
      # Если имя файла ДЕЙСТВИТЕЛЬНО заканчивается одним из этих четырех префиксов, то
      # изменить префикс на "doedit", чтобы Stata открывал документ с помощью 
      # редактор do-файлов.
      префикс = «редактировать»
    фи
  # Если имя файла заканчивается на .gph, измените префикс на "doedit", чтобы 
  # Stata открывает документ с помощью средства просмотра/редактора графиков.
  если [ ${1##*.} = "gph" ]
    тогда
      prefix="использование графа"
    фи
  сломать
  фи
# Проверяем, запущен ли xstata-mp v17
exit_code_pidof_xstata_mp=$(pidof/usr/local/stata17/xstata-mp)
# если xstata-mp v17 НЕ запущен, то запустить его с аргументом $1
если [ -z "$exit_code_pidof_xstata_mp" ]
  тогда
    /usr/local/stata17/xstata-mp -q $1; выход >/dev/null
 # но если xstata-mp v17 работает, то выведите его на передний план
 еще
  # Сначала вызовите statadoc.xdo с префиксом в качестве первого аргумента, 
  # и указанный путь к файлу в качестве второго аргумента 
  /usr/share/stata17/bin/statadoc.xdo "префикс $" "$1"
  wmctrl -ia "$(wmctrl -lp | grep "$(pgrep /usr/local/stata17/xstata-mp)" | tail -1 | awk '{ print $1 }')"; выход > /dev/null
  фи
Примечание. Это решение для Gnome, работающего на Xorg.