如何通过C程序在Linux中查找默认下载目录?

17

正如标题所述,是否有可用的API来确定Linux中的默认下载目录?

我正在使用Ubuntu发行版。


位置可能不同,这取决于应用程序。基本上它是~/download。 - rkosegi
为什么要踩?问题有什么问题吗? - Whoami
是吗?嗯,可能吧...这取决于用户,不是吗?我不知道有任何规则。@rkosegi - alk
只是好奇想知道原因,不是要争吵;)但至少下次我在发布问题时会小心。:) - Whoami
1
类似于@djasa的正确答案,但稍微有些背景信息:https://unix.stackexchange.com/a/511910/93768 - DJCrashdummy
4个回答

26

虽然晚了一些,但是:有一个XDG规范正好涵盖了这个主题。要在shell(脚本)中获取下载目录,只需运行:

$ xdg-user-dir DOWNLOAD
/home/djasa/Downloads

对于程序来说,该位置可以在$HOME/.config/user-dirs.dirs中找到:

$ grep DOWNLOAD .config/user-dirs.dirs 
XDG_DOWNLOAD_DIR="$HOME/Downloads"

如需了解有关XDG的更多信息,请阅读man -k xdg返回给您的手册页面。


3
唯一正确的答案!XDG实际上涵盖了这个问题。因为下载目录可能看起来像:〜/Downloads〜/downloads〜/Завантаження等等。而 $ xdg-user-dir [folder_type] 则打印出实际的目录名称。另外,每个用户都可以通过编辑 XDG 配置文件来自定义他的目录。 - ddmytrenko
变量用法: DOWNLOAD_PATH=$(xdg-user-dir DOWNLOAD) - KrisWebDev
1
如果在Arch Linux上缺少xdg-user-dir,请使用sudo pacman -S xdg-user-dirs进行安装。 - Sergei G

1

我认为最好的近似值是使用用户的HOME环境变量。在许多发行版中,您可以使用其中的子文件夹,但并不适用于所有发行版。


0

在操作系统层面上,没有“默认下载目录”,但所有当前的发行版都会为此创建一个~/Downloads目录,并且大多数浏览器将默认选择它。您想要实现什么目标?


Andy,使用inotify来监控下载。 - Whoami
2
没错。所以$HOME/Downloads是你最好的选择。但用户不一定非要使用这个目录,所以它并不会(也不能!)抓取所有的目录。 - Andy Ross
1
一些发行版将下载文件夹本地化为本地语言。例如,在西班牙语中为 Descargas - logoff
注销:那是哪个发行版?在文件系统中本地化路径几乎总是灾难性的... - Andy Ross
2
这个答案是错误的。请参考@ djasa关于xdg-user-dir的回答。 - Craig M. Brandenburg

0

除了在大多数情况下用户数据存储到$HOME指向的位置,Linux上如何组织用户数据没有标准。

其中一个例外是存储用户特定应用程序配置文件和目录的位置和命名方式。它们应该存储在用户主目录的根目录中,并且这些文件/目录的名称应该以.开头。请参见此处

对于系统文件,确实存在指南,即FHS


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接