我正在使用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脚本,以便输出可以从命令行运行的shell(根据@Grant McLean的建议为最新版本):
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";
但是,由于shell挂起了系统,因此我假设从Perl脚本向系统传递命令也会挂起系统。
我希望浏览器和文本编辑器能够从外壳程序中打开文件,而不必在每个应用程序中单独打开文件。有什么想法吗?
答案 0 :(得分:0)
解决方案是@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 &";
}
我感谢大家!