在特定应用程序中从终端打开文件

在特定应用程序中从终端打开文件

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-emulatoreditor” 。您可以使用line 命令配置它们。nanoviupdate-alternatives

但是没有真正的解决方案。像 这样的通用打开应用程序程序xdg-open是为使用默认应用程序打开文件而设计的,而不是用户在想要打开文件时想要使用的唯一应用程序。除了在打开文件之前更改默认应用程序外,您无法做到这一点,但这对用户不友好,也不值得获得默认应用程序。

因此,对您来说,最好的解决方案是忘记通用解决方案,然后像您想要使用的特定应用程序一样打开文件。

相关内容