从终端打开当前目录到文件浏览器?

Pau*_*aul 27 command-line gui directory file-manager file-opening

我的当前目录深埋在我的主目录中的多个子文件夹层中。如果我想在基于gui 的文件浏览器中打开这个目录,我必须在一个文件夹后双击文件夹才能到达它。这是非常耗时的。另一方面,只需很少的击键和多次点击选项卡按钮,就可以很容易地通过终端访问它。

我想知道是否有办法将终端中的当前目录打开到文件浏览器中。执行此操作的命令是什么?

作为参考,我有一个 ubuntu 系统,但我想知道在各种 linux 发行版中的命令是什么。

小智 42

xdg-open .

xdg-openxdg-utils包的一部分,它通常默认安装在许多发行版(包括 Ubuntu)中。它旨在为多个桌面环境工作,调用桌面环境中文件类型的默认处理程序。

您可以传递目录、文件或 URL,它将为该参数打开正确的程序。例如,在我的 KDE 系统上:

  • xdg-open . 在 Dolphin 文件管理器中打开当前目录
  • xdg-open foo.txt 在 emacsclient 中打开 foo.txt,我已将其配置为 .txt 文件的默认处理程序
  • xdg-open http://www.google.com/ 在我的默认网络浏览器中打开 google.com

该应用程序作为单独的窗口打开,您将在终端中得到提示,并且可以发出其他命令或关闭终端,而不会影响新的 GUI 窗口。

我通常会收到一堆打印到 的错误消息stderr,但我只是忽略它们。

编辑:
添加参数会xdg-open . >/dev/null 2>&1重定向错误和输出。此呼叫不会阻塞您的终端。将它绑定到一个别名filemanager='xdg-open . >/dev/null 2>&1'可以派上用场。


Rob*_*rtL 10

几乎所有 GUI 应用程序(在 X 窗口系统上)都可以从该 GUI 中的终端窗口打开。要打开任何 GUI 应用程序,请在 shell 提示符下键入可执行文件的名称。大多数文件浏览器将目录作为命令行参数,因此您通常应该将其.作为参数传递。

以下是一些流行系统的示例,大多数基于 X 的系统的工作方式类似。

在 Gnome 上,您可以nautilus直接运行(默认文件浏览器),或者在 Gnome 2 上,您可以使用gnome-open配置的 Gnome 文件处理程序打开任何文件(包括目录):

$ nautilus .
Run Code Online (Sandbox Code Playgroud)

或者

$ gnome-open .
Run Code Online (Sandbox Code Playgroud)

KDE 上,有两种流行的文件浏览器,我不知道类似于 的命令gnome-open,虽然gnome-open可以在 KDE 中执行,但默认情况下它会打开 Gnome 应用程序。

$ dolphin .
Run Code Online (Sandbox Code Playgroud)

或者

$ konquerer .
Run Code Online (Sandbox Code Playgroud)

OS X 上,如评论中所述,open可以使用类似的命令行程序。

$ open .
Run Code Online (Sandbox Code Playgroud)

如果您不知道系统文件浏览器的可执行文件名称怎么办?

如果在 Gnome 2 上,使用gnome-open .如果在 OS X 上,调用open .. 每一个都将执行为您的 GUI 环境配置的文件浏览器。

如果你不知道你的窗口系统中有这样的命令,这里有一种方法可以ps通过理解选项-u USER和命令的命令在系统上找到-o FORMAT

  1. 在终端窗口中,键入 ps -u$USER -o comm > /tmp/$$A
  2. 在您的 GUI 中,启动文件浏览器。
  3. 返回终端窗口,键入ps -u $USER -o comm > /tmp/$$B(注意B后缀,这是与步骤 1不同的文件)。
  4. 同样在终端中,键入diff /tmp/$$[AB]

应显示文件浏览器的名称。如果在调用ps.

例如:

$ ps -u $USER -o comm > /tmp/$$A
$ # open file browser in gui
$ ps -u $USER -o comm > /tmp/$$B
$ diff /tmp/$$[AB]
95a96
> nautilus
Run Code Online (Sandbox Code Playgroud)