str*_*gee 3 networking nautilus fuse gvfs
我已经通过单击 Nautilus 左侧的图标在 GNOME 中安装了一个网络文件系统。但是,当我使用终端时,我不知道如何访问该文件系统。是否可以?
Nautilus 使用 GVFS 挂载网络文件系统。与其前身 GnomeVFS 不同,GVFS 包含一个 FUSE 桥接器,因此非 GVFS 感知应用程序仍然可以访问 GVFS 数据。
这意味着有两种方法可以做到这一点:使用 FUSE 桥接器,或使用本机 GVFS 工具。
使用 FUSE 桥接器
据介绍man gvfsd-fuse
,GVFS 守护进程将在$XDG_RUNTIME_DIR/gvfs
或 上挂载网桥$HOME/.gvfs
。您应该先办理登机手续$HOME/.gvfs
。
$ ls ~/.gvfs
Run Code Online (Sandbox Code Playgroud)
如果它在那里,那就太好了。所有联网的、安装在 Nautilus 上的文件系统都应该显示为子目录。
但是,在我的系统(Arch GNU/Linux、GNOME 3.10)上,该目录不存在。因此,您需要查看$XDG_RUNTIME_DIR/gvfs
. 在我的系统上,这最终是/run/user/$UID/gvfs
,$UID
您的用户 ID在哪里。如上所述,您的挂载将是该目录的子目录。您可以使用诸如ls
、cat
、$EDITOR
等普通工具来处理这些子目录的内容。
使用原生 GVFS 工具
GVFS 提供了gvfs-*
一系列工具来与 GVFS 进行本地交互。例如,gvfs-cat
就像普通的一样cat
,但它是 GVFS-aware。
所有网络挂载都在特殊的 GVFScomputer:///
位置引用。我们需要得到他们所引用的东西。
$ gvfs-tree computer:///
computer:///
|-- APPLE SD Card Reader.drive
|-- HL-DT-STDVDRW GA32N.drive -> burn:///
|-- ST31000528AS.drive -> file:///run/media/alex/Macintosh%20HD
|-- root.link -> file:///
`-- strugee@my.owndrive.com.volume -> davs://strugee@my.owndrive.com/remote.php/webdav
Run Code Online (Sandbox Code Playgroud)
在此列表中,您可以看到我的 SD 卡读卡器、我的光驱、我内部驱动器上的不同分区(已挂载)、文件系统根目录的表示,最后是我们感兴趣的网络文件系统(OwnCloud 帐户) )。请注意,此命令表示链接。
现在我们有了网络文件系统的地址,我们可以使用 GVFS 工具来查看它。例如,让我们列出我的OwnCloud 的内容。
$ gvfs-ls davs://strugee@my.owndrive.com/remote.php/webdav
Introduction to Arch Linux.odp
Run Code Online (Sandbox Code Playgroud)
好像我那里没有太多。让我们创建一个新文件。现在,GVFS 没有类似 的工具touch
,但它确实有一个保存文件的工具。我们可以只保存一个空文件。
$ gvfs-save davs://strugee@my.owndrive.com/remote.php/webdav/foobar.txt
Run Code Online (Sandbox Code Playgroud)
gvfs-save
会等你输入一些东西。由于我们实际上并不希望此文件中包含任何内容,因此请点击Ctrl-D保存。
现在我们可以使用默认处理程序打开这个文件。
$ gvfs-open davs://strugee@my.owndrive.com/remote.php/webdav/foobar.txt
Run Code Online (Sandbox Code Playgroud)
值得注意的是,如果你不给它一个文件扩展名,文件将不会打开。这是因为gvfs-open
会抛出关于不知道应该使用哪个应用程序来处理文件的错误。(如果你犯了这个错误,用 修复它gvfs-move
。)
您可以使用简单的 .csv 文件列出所有 GVFS 命令行工具ls
。
$ ls /usr/bin/gvfs-*
Run Code Online (Sandbox Code Playgroud)