我xdg-open
在终端中使用很多;这会在默认应用程序中打开一个文件。但是,有时我想在其他(非默认)应用程序中打开一个文件。有没有办法从终端实现这一点?
(显然,某些应用程序可以将文件作为参数,例如vlc /path/to/movie.mp3
,但我正在寻找一种适用于所有情况的更通用的方法,类似于xdg-open
。)
-like 命令的一个优点xdg-open
是打开文件/应用程序后可以关闭终端窗口。但是,如果我使用(例如)vlc /path/to/movie.mp3 &,那么我需要保持终端窗口打开。
答案1
xdg-open
当然,设计为使用默认应用程序。要使用非默认应用程序,我认为您有三个选择。
1)programname filename
照常打字。
2)在 Nautilus 中右键单击并使用,在终端外执行此操作打开用。
3) 在终端中使用您自己的脚本。我们假设您有一个相当短的默认程序列表可供选择。
#!/bin/bash
read filename
myvar=$(zenity --list --text="Chose a non-default program" --column="Programs" firefox gedit)
$myvar filename &
这将允许您指定文件名,然后选择要打开它的程序。这是最小实现,因此可能需要一些额外的工作。但请尝试一下。
可能没有很多这种方法有很多好处,但它可以让您控制流程和选项,以满足您的任何需求。
答案2
有伪解决方案,如“Gnome 的 Web 浏览器”(gnome-www-browser
)或“Gnome 的文本编辑器”(gnome-text-editor
)。X 服务器及其浏览器(x-www-browser
)和终端仿真器( )也是如此。还有用于终端文本编辑器( ,或其他任何编辑器)的x-terminal-emulator
“ editor
” 。您可以使用line 命令配置它们。nano
vi
update-alternatives
但是没有真正的解决方案。像 这样的通用打开应用程序程序xdg-open
是为使用默认应用程序打开文件而设计的,而不是用户在想要打开文件时想要使用的唯一应用程序。除了在打开文件之前更改默认应用程序外,您无法做到这一点,但这对用户不友好,也不值得获得默认应用程序。
因此,对您来说,最好的解决方案是忘记通用解决方案,然后像您想要使用的特定应用程序一样打开文件。