我正在编写一个脚本,正在寻找一种方法来获取桌面、音乐、文档、图片和其他文件夹的变量名称。它们会根据语言而变化。例如,西班牙语中的桌面是 Escritorio。那么,如何才能获取文件夹目录,而无需找出用户正在使用的语言或必须为每种语言创建多个 IF 语句。
答案1
有一个名为的工具xdg-user-dir
可以检索用户目录路径
documents_path=$(xdg-user-dir DOCUMENTS)
echo $documents_path
来自文档:
xdg-user-dir 查找特殊 XDG 用户目录之一的当前路径。
此命令需要 XDG 用户目录的名称作为参数。可能的名称包括:
- 桌面
- 下载
- 模板
- 公开分享
- 文件
- 音乐
- 图片
- 视频
我正在使用 Ubuntu 16.04,我不清楚以前的版本中是否有这个功能。
答案2
常见的文件夹名称如下。只是从主目录中的文件中提取。
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/Videos"
当然,你只对变量名感兴趣。所以有XDG_DESKTOP_DIR, XDG_DOWNLOAD_DIR, .... etc
。
相关问题:如何更改主文件夹中内容目录(例如图片、模板、音乐)的默认位置?
希望这会有所帮助。
答案3
也许有更简单的方法可以做到这一点,但这就是我所做的:
例如获取桌面文件夹:
desktopVar=$(cat $HOME/.config/user-dirs.dirs | grep "XDG_DESKTOP_DIR")
desktopFolder=$(echo ${desktopVar/XDG_DESKTOP_DIR=/""} | tr -d '"')
echo $desktopFolder
对于其他变量也是类似。