![如何从 Bash 脚本内部打开文件?](https://linux22.com/image/1107690/%E5%A6%82%E4%BD%95%E4%BB%8E%20Bash%20%E8%84%9A%E6%9C%AC%E5%86%85%E9%83%A8%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%EF%BC%9F.png)
好的,运行gedit myfile.txt
正常。但是如何使用链接到文件类型的默认桌面应用程序从 bash 脚本内部打开文件呢?
我已经尝试过下面这种方法,在终端手动运行时效果很好,但是当我将它放入 bash 文件中时,什么也没有发生:
#!/bin/bash
xdg-open "myfile.txt"&
我应该做什么呢?
请注意,我需要在终端关闭后仍保持文件打开状态。
答案1
我认为你的脚本应该可以工作。但你可以添加一些内容来获取更多信息:
#!/bin/bash
T=`xdg-mime query filetype $1`
echo "opening file " $1 " of type " $T "with " `xdg-mime query default $T`
xdg-open $1
echo "finished script"
在终端中运行此脚本(名为 my_open.sh)时,如下所示:
my_open.sh path/to/somefile.txt
我得到以下输出:
opening file path/to/somefile.txt of type text/plain with gedit.desktop
finished script
这说明文件路径正确,mimetype 被识别,用于打开文件的桌面文件也正确。gedit 打开了相关文件。
现在,当在另一个文件上运行时:
my_open.sh path/to/README
我得到以下输出:
opening file path/to/README of type text/x-readme with
finished script
注意不同的 mimetype 和缺失的桌面文件。尽管如此,xdg-open 默认打开所有文本文件 (gedit)。
因此,您可能希望在脚本中添加类似这样的内容,看看是否得到意外的输出(然后您可以将其添加到您的问题中......)。
答案2
创建一个 bash 脚本 test.sh 如下:
#!/bin/bash
gedit myfile.txt
然后,使脚本可执行如下:
chmod +x test.sh
最后,运行脚本如下:
./test.sh
答案3
或许gnome-打开代替xdg-开放
答案4
你的问题的第一部分
如果您愿意的话,您可以使用命令cat
在终端内打开一个文件(它在您的问题的第一部分中说明)。
要使用它您只需输入cat FILENAME
。
其他信息
如果您需要更多命令: 以下是一份好的命令列表。
GNOME 默认编辑器
如果您想在 GNOME 的默认应用程序中打开该文件gedit
。
要使用它,只需输入gedit FILENAME