首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用已在运行的程序,以便从Perl或bash脚本打开新文件?

如何调用已在运行的程序,以便从Perl或bash脚本打开新文件?
EN

Stack Overflow用户
提问于 2019-04-17 02:29:53
回答 1查看 85关注 0票数 0

我正在使用Perl脚本查找处理来自另一个进程的错误所需的数据。在OSX中,Perl脚本中的这些行在我的浏览器和文本编辑器中打开所需的站点和文件。以下是在OSX中工作的代码:

代码语言:javascript
复制
 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的方法。

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

我已经调整了Perl脚本,以便它输出一个我可以从命令行运行的shell (根据@Grant McLean的建议,最新版本):

代码语言:javascript
复制
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脚本中,那么代码行将是,例如,

代码语言:javascript
复制
system "xdg-open { file | site } & disown";

但是,由于shell挂起了系统,我假设从Perl脚本向系统传递命令也会挂起系统。

我希望能够让浏览器和文本编辑器从shell打开文件,而不必在每个应用程序中单独打开文件。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-27 02:27:14

这个解决方案是@grantmclean建议的变体。当我尝试时,他的解决方案不起作用,因为我试图一次xdg-open多个文件或站点。一次打开一个有效:

代码语言:javascript
复制
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 &";
}

感谢你们所有人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55714531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档