Я делаю сценарий и ищу способ получения имен переменных для рабочего стола, музыки, документов, изображений и других папок. В зависимости от языка они меняются. Например, рабочий стол на испанском языке - Escritorio. Итак, как я могу получить каталог папки, не выясняя, какой язык использует пользователь или не делая несколько операторов IF для каждого языка.
Существует названный инструмент xdg-user-dir
это получает пользовательские пути каталогов
documents_path=$(xdg-user-dir DOCUMENTS)
echo $documents_path
Из документов:
xdg-user-dir ищет текущий путь для одного из специальных пользовательских директоров XDG.
Эта команда ожидает название пользовательского dir XDG как аргумент. Возможные имена:
- РАБОЧИЙ СТОЛ
- Скачать
- ШАБЛОНЫ
- PUBLICSHARE
- ДОКУМЕНТЫ
- МУЗЫКА
- ИЗОБРАЖЕНИЯ
- ВИДЕО
Я использую Ubuntu 16.04, я действительно не знаю, доступно ли это в предыдущих выпусках.
Общие имена папок следующие. Просто извлечен из файла в домашнем каталоге.
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
.
Смежный вопрос: Как изменить расположение по умолчанию каталогов содержимого (например, «Изображения», «Шаблоны», «Музыка») в моей домашней папке?
Надеюсь, это поможет.
Возможно, есть более простой способ сделать это, но вот что я сделал:
Например, получение папки рабочего стола:
desktopVar=$(cat $HOME/.config/user-dirs.dirs | grep "XDG_DESKTOP_DIR")
desktopFolder=$(echo ${desktopVar/XDG_DESKTOP_DIR=/""} | tr -d '"')
echo $desktopFolder
Для других переменных аналогично. 113]