Как я могу вызвать программы, которые уже запущены, чтобы открывать новые файлы из Perl или bash-скрипта? - PullRequest
0 голосов
/ 16 апреля 2019

Я использую сценарий Perl для поиска данных, необходимых для устранения ошибок другого процесса.В OSX эти строки в скрипте Perl открывают нужные сайты и файлы в моем браузере и текстовом редакторе.Вот код, который работает в OSX:

 if ($^O eq "darwin") {
      system `open -a /Applications/Firefox.app https://site`;
      system `open -a /Apopen -a /Applications/Komodo.appplications/Komodo.app file1.md file2.md`;
      system `open -a /Applications/Komodo.app file3.md`;}

Я могу запустить этот скрипт несколько раз, и приложения будут добавлять вкладки с новыми открытыми файлами.

Однако мне нужно будет запустить тот жеинструмент для Linux, и я не нашел никакого способа сделать это.Вот как я пытался адаптировать его для Linux.

 if ($^O eq "linux") {
      system `firefox local_file.html & disown`;
      system `firefox https://site1 https://sitex & disown`;
      system `komodo  file1 file2 filex & disown`;
      }

С тех пор я настроил скрипт Perl так, чтобы он выводил оболочку, которую я могу запустить из командной строки (последняя версия согласно предложению @Грант Маклин):

xdg-open https://www.site1 & disown
xdg-open https://www.site2 & disown
xdg-open /home/.../file1.html & disown
xdg-open /home/.../file2.md & disown
xdg-open /home/.../file3.md & disown

Я понял из предложения @Grant McLean, что если бы я интегрировал его в скрипт Perl, строки были бы, например,

system "xdg-open { file | site } & disown";

Но так какоболочка вешает систему, я предполагаю, что передача команд в систему из сценария Perl также приведет к зависанию системы.

Я хочу, чтобы браузер и текстовый редактор открывали файлы из оболочкии не нужно открывать файлы индивидуально в каждом приложении.Есть идеи?

1 Ответ

0 голосов
/ 26 апреля 2019

Решение было изменением того, что предложил @grantmclean.Его решение не сработало, когда я попробовал его, потому что я пытался xdg-open использовать более одного файла или сайта одновременно.Открытие по одному работает:

if ($^O eq "linux") {
    system "xdg-open https://site1 &";
    system "xdg-open https://site2 &";
    my @tWs = split / /,$tW_files;
    foreach (@tWs) {
        system "xdg-open $_ &" # opens a series of local files
    }
    system "xdg-open file_y &";
    system "xdg-open file_z &";
}

Спасибо всем вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...