Путь рабочего стола linux

Как получить пути к стандартным папкам пользователя (Рабочий стол, Загрузки и т.п.)?

Нужно получить пути к стандартным системным папкам пользователя, таким как:

  • Домашняя папка
  • Рабочий стол
  • Загрузки
  • Изображения
  • Документы и т. п.

Как это можно сделать кроссплатформенно?

1 ответ 1

Сразу нужно отметить, что подобные папки можно переместить за пределы домашней папки пользователя, так что наивные решения вроде os.path.expanduser(‘

/Desktop’) будут работать некорректно — не делайте так нигде кроме macOS.

В разных ОС есть свои правильные способы получения путей.

Windows

В Windows для этого есть Win32 API метод SHGetKnownFolderPath. К сожалению, в pywin32 этот метод ещё не поддерживается, так что этот метод придётся вызывать через ctypes, но это как-то неудобно.

Вместо этого можно установить pywin32 (с помощью команды pip install pywin32 ) и использовать более старый метод SHGetFolderPath, который здесь таки доступен:

Второй параметр — идентификатор папки, путь к которой мы хотим получить. Полный список можно почитать на MSDN (через pywin32 работают не все), здесь отмечу наиболее интересные:

  • shellcon.CSIDL_PROFILE — папка пользователя ( C:\Users\username );
  • shellcon.CSIDL_DESKTOP — рабочий стол ( C:\Users\username\Desktop );
  • shellcon.CSIDL_MYMUSIC — музыка ( C:\Users\username\Music );
  • shellcon.CSIDL_MYPICTURES — изображения ( C:\Users\username\Pictures );
  • shellcon.CSIDL_MYVIDEO — видео ( C:\Users\username\Videos ).

macOS

Если я правильно понимаю документацию, в macOS пути строго фиксированны. Так что всё, что нужно сделать, — это получить путь к домашнему каталогу и дописать к нему нужные подкаталоги.

Функция os.path.expanduser может сделать всю работу за нас: если в начале пути стоит тильда, она заменит его на путь к домашнему каталогу. Домашний каталог в macOS и Linux вычисляется так: если существует переменная окружения HOME , то берётся её значение, а если её нет, то считывается путь с помощью функции getpwuid .

Также это всё легко делается с помощью pathlib — объекты Path более удобны в пользовании, чем обычные строки.

Linux, *BSD (XDG)

Unix-подобные ОС обычно опираются на стандарты freedesktop.org (больше известны по аббревиатуре XDG) и хранят пути к стандартным папкам в файле

/.config/user-dirs.dirs — получить интересующий путь в терминале можно командой xdg-user-dir (это короткий bash-скрипт на несколько строк), например xdg-user-dir DOWNLOAD .

Каждая строка в файле user-dirs.dirs имеет переменную в формате XDG_xxx_DIR , где xxx — тип каталога. Путь к каталогу должен или быть абсолютный (начинаться на / ), или начинаться на $HOME/ — другие форматы не допускаются.

К своему удивлению, я не обнаружил готового парсера этого файла для Python; впрочем, его нетрудно написать самостоятельно, используя библиотеку dotenv ( pip install python-dotenv , не забудьте добавить опцию —user если нужно):

В этом файле представлены следующие переменные (названия папок могут отличаться в зависимости от текущего языка системы):

  • XDG_DESKTOP_DIR — /home/username/Рабочий стол
  • XDG_DOWNLOAD_DIR — /home/username/Загрузки
  • XDG_TEMPLATES_DIR — /home/username/Шаблоны
  • XDG_PUBLICSHARE_DIR — /home/username/Общедоступные
  • XDG_DOCUMENTS_DIR — /home/username/Документы
  • XDG_MUSIC_DIR — /home/username/Музыка
  • XDG_PICTURES_DIR — /home/username/Изображения
  • XDG_VIDEOS_DIR — /home/username/Видео

Источник

IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

#005 Команды для навигации и перемещения по каталогам в Linux (cd, ls, pwd, file)

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать систему Linux, ранее мы познакомились с тем, что такое эмулятор терминала и командная оболочка, теперь начнем знакомиться с командами Linux. Кстати, если вы пользователь Windows и хотите начать знакомиться с Linux, то рекомендую первое знакомство осуществлять на виртуальной машине, например, VirtualBox.

В этой публикации мы рассмотрим четыре простых команды, которые используются для навигации в системе Linux, то есть для перемещения по каталогам и папкам. Эти команды помогут вам начать изучать свою систему и просматривать из чего она состоит. Но для начала мы немного поговорим про относительный и абсолютный путь в Linux, это нужно, чтобы было понимание, что мы вообще делаем. Первая команда, которую мы рассмотрим — pwd. Команда pwd используется для просмотра текущего рабочего каталога в Linux. Далее мы разберемся с командой cd. Команда cd позволяет нам перемещаться по каталогам системы. Еще мы поговорим о команде ls, которая позволяет просматривать содержимое любого каталога вашей системы. В завершение мы рассмотрим команду file. Команда file в системах Linux используется для того, чтобы определить тип объекта файловой системы, ведь самому Linux вовсе не нужно расширение, чтобы понять какой файл перед ней.

Читайте также:  Иконки для кнопки пуск windows 10 неоновые

Относительный и абсолютный путь в Linux

Любая иерархия каталогов в операционных системах подобных Unix начинается с корневого каталога или корня, который обозначается таким вот образом: «/». Обратите внимание: именно слэш (/), а не обратный слэш (\). Когда мы пытаемся получить доступ к файлу или каталогу при помощи командной оболочки, нам необходимо указывать путь к тому объекту файловой системы, к которому мы ходим обратиться.

Путь к объекту может быть абсолютным, а может быть относительным. Если путь к файлу или каталогу начинается с корня, то такой путь называется полным или абсолютным, так как таким образом можно «дотянуться» до любого файла из любой точки операционной системы. Если путь к файлу начинается с той, папки, в которой вы работает, то такой путь называется относительным и работать такая конструкция будет только из той папки, в которой вы находитесь в данный момент. Путь называется относительным, поскольку он составляется относительно того или иного каталога или файла.

На рисунке ниже показана иерархия каталогов, к которой мы все привыкли, когда используем графический файловый менеджер.

Древовидная структура любой файловой системы, к которой привыкли пользователи Windows

Нас интересует каталог dir1, который находится на рабочем столе, у этого каталога есть дочерний или вложенный каталог, который называется dir2, а родительским каталогом для dir1 является «Рабочий стол». Допустим, если мы находимся в каталоге dir1, то для того, чтобы перейти в каталог «Рабочий стол», нам нужно воспользоваться конструкцией «. », это будет относительным путем, поскольку он будет выстроен относительно каталога dir1.

Если же мы хотим из каталога dir1 попасть в каталог dir2, то можем воспользоваться вот таким путем: ./dir1. Здесь символы точка-слеш означает текущий рабочий каталог, конструкцию ./ в данном случае можно не писать, bash вас поймет и без нее. Хотя как в первом, так и во втором случае, можно воспользоваться абсолютным путем. Для рабочего стола абсолютный путь в моем случае выглядит так:

А для каталога dir2 так:

Если мы находимся в каталоге dir1 и хотим попасть в каталог dir6, то мы можем воспользоваться относительным путем:

Этот путь я выстроил относительно каталога dir1. Из каталога dir6 можно вернуться в каталог dir1, используя относительный путь:

Здесь мы сперва вернемся в каталог dir2, а затем спустимся еще на ступеньку ниже — в каталог dir1. Но из каталога dir1 можно попасть в dir6, используя абсолютный путь:

Также можно использовать абсолютный путь, чтобы из каталога dir6 вернуться в dir1:

С относительными и абсолютными путями в Linux мы разобрались, можем приступить к изучению команд.

pwd – команда для просмотра названия текущего рабочего каталога

Понятно, что, когда мы используем командую оболочку в Linux, то в тот или иной момент времени мы модем находиться только в одном конкретном каталоге. При этом мы можем получить ценную информацию из данного каталога, которую сможем использовать для навигации и перемещения между папками.

Во-первых, мы можем узнать содержимое текущего каталога, который, кстати, называется текущим рабочим каталогом. Еще мы можем узнать название родительского каталога и какие у текущего каталога есть дочерние каталоги.

Когда мы разбирались с терминалом и командной оболочкой, то говорили, что в приглашении терминала обычно указывается название текущего рабочего каталога, но приглашение можно настроить так, чтобы название и путь до текущего каталога не показывался и, например, в таких ситуациях неплохо было бы узнать, где мы, собственно, находимся, чтобы понять куда нам идти, для этой цели и служит команда pwd (print working directory). Давайте выполним ее из каталога dir1:

/ Рабочий стол / dir1 $ pwd

/ Рабочий стол / dir1 $

Читайте также:  Linux adobe flash plugins

Помните, что при входе в терминал мы обычно попадаем в свой домашний каталог, который для краткости в приглашении обозначается символом

, давайте выполним команду pwd в домашнем каталоге:

В общем и целом, pwd – это самая простая команда, которую вы можете использовать для навигации при работе с командной оболочкой.

ls – команда для просмотра содержимого каталога

Для команды ls у нас будет отдельная публикация, в который мы подробнее разберемся с ее возможностями. Сейчас нам важно отметить следующее: команда ls используется для просмотра содержимого текущего каталога или любого другого каталога, к которому у вас есть права на чтение.

Работает команда ls очень просто, давайте выполним ее из своего домашнего каталога:

Если мы хотим увидеть содержимое рабочего стола, находясь в домашнем каталоге, то команде ls можно передать путь до того каталога, который мы хотим посмотреть:

$ ls / home / kirill / «Рабочий стол» /

На самом деле возможности команды ls куда шире, чем мы их сейчас описали, эта команда обладает массой всевозможных интересных параметров, которые можно комбинировать друг с другом, но об этом в другой раз. Кстати сказать: часто новички в мире Linux, когда речь заходит о командах говорят фразу: дайте список всех Linux команд. Так вот, списка всех команд Linux не существует. Дело всё в том, что каждый дистрибутив (в том числе и Linux Mint) обладает своим собственным набором команд, более того, вы можете изменить этот набор команд удалив или установи какую-нибудь программу, имя которой станет новой командой (про установку Linux Mint на виртуальную машину VirtualBox вы можете почитать здесь).

cd – команда для перемещения по каталогам и папкам

Определять свое местоположение в системе и просматривать содержимое различных каталогов мы научились, теперь давайте научимся двигаться по лабиринту каталогов Linux, для этих целей у нас есть команда cd (change directory).

Давайте для начала перейдем из домашнего каталога в dir1, который находится на рабочем столе. Сделать это можно, используя абсолютный путь cd /home/kirill/Рабочий стол/dir1:

$ cd / home / kirill / Рабочий стол / dir1

Обратите внимание: произошла ошибка, командная оболочка не смогла найти каталог с именем Рабочий. Дело все в том, что «пробел» в системах подобных Unix является разделительным символом. Вообще, терминал работает с тремя видами символов: обычные текстовые символа, разделительные символы и специальные символы, пробел относится к разделительным и терминал их обрабатывает по-особенному, когда встречает их. Чтобы терминал понял, что словосочетание Рабочий стол — это имя каталога (то есть, чтобы терминал проигнорировал символ пробела), его надо взять в кавычки, которые могут быть как одинарными, так и двойными:

$ cd / home / kirill / ‘Рабочий стол’ / dir1

/ Рабочий стол / dir1 $

Также из домашнего каталога можно перейти в каталог dir1, используя относительный путь:

$ cd ‘Рабочий стол’ / dir1

/ Рабочий стол / dir1 $

А вернуться из dir1 на рабочий стол, мы можем при помощи вот такой конструкции:

/ Рабочий стол / dir1 $ cd . .

Или же можем использовать абсолютный путь:

/ Рабочий стол / dir1 $ cd / home / kirill / ‘Рабочий стол’ /

Чтобы перейти с каталога «Рабочий стол» в каталог dir1, мы можем воспользваться такой штукой:

/ Рабочий стол $ cd . / dir1

/ Рабочий стол / dir1 $

Хотя конструкцию ./, которая говорит терминалу о том, что это текущий каталог можно опустить, посмотрим это, перейдя из каталога dir1 в dir2:

/ Рабочий стол / dir1 $ cd dir2

/ Рабочий стол / dir1 / dir2 $

Стоит отметить, что у команды cd есть несколько полезных сокращений, которые я рекомендовал бы запомнить:

  • cd – переместит вас в домашний каталог;
  • cd / — переместит вас в корень;
  • cd — – переместит вас в предыдущий рабочий каталог;
  • cd

username – переместит вас в домашний каталог того пользователя, чей логин вы указали.

file – команда для определения типа файлов

Вам нужно для себя отметить две вещи: работа с операционными системами типа Unix требует от пользователя некоторой внимательности и всё сущее в Linux есть файл. Про работу с файлами в командной оболочке bash мы поговорим отдельно, сейчас давайте разберемся с тем, как определить тип файла, ведь ОС семейства Linux у файлов не обязательно должны быть расширения, а тип файла операционная система определяет по другим параметрам. То есть, если в Linux вы видите файл pict1.jpg – это не обязательно будет изображение.

Но мы смоделируем несколько другую ситуацию. На рабочем столе у меня есть каталог dir1, в котором есть каталог dir2, а в каталоге dir2 есть папки dir4 и dir6 и файл с именем dir5, это показано на рисунке ниже.

Часть содержимого каталога с именем dir2

Давайте перейдем в каталог dir2 и выполним команду ls:

Выполнив команду ls мы увидели содержимое каталога dir2 в терминале

Обратите внимание: у меня терминал настроен таким образом, что подсвечивает разными цветами разные объекты файловой системы, хотя ключевое слово здесь настроен, этого может и не быть. Тут, например, терминал подсвечивает каталоги синим цветом, мультимедийные файлы пурпурным, а обычные файлы белым, давайте проверять, но этого может и не быть, хотя терминал может подсвечивать и неправильно, давайте убедимся.

Чтобы понять что здесь есть файл, а что каталог, нам нужно воспользоваться дополнительной командой file, применим ее к объектам файловой системы dir4, dir5, dir6:

/ Рабочий стол / dir1 / dir2 $ file dir4 dir5 dir6

/ Рабочий стол / dir1 / dir2 $

Как видим, команда file указывает не только тип файла, но и умеет определять что объект является каталогом. А еще из примера видно, что file умеет работать сразу с несколькими аргументами, то есть ей на проверку можно отправлять сразу несколько файлов, а можно это делать и по одному. Также из примера выше видно, что dir5 — это обычный текстовый файл в кодировки UTF-8. Давайте проверим оставшиеся файлы:

/ Рабочий стол / dir1 / dir2 $ file file5

/ Рабочий стол / dir1 / dir2 $ file file6

/ Рабочий стол / dir1 / dir2 $ file pict1 . jpg

/ Рабочий стол / dir1 / dir2 $ file pict2 . jpg

/ Рабочий стол / dir1 / dir2 $ file pict2 . png

/ Рабочий стол / dir1 / dir2 $ file vasya

/ Рабочий стол / dir1 / dir2 $

Команда file умеет определять тип файла лучше, чем подсвечивает терминал. Здесь мы видим, что файлы file5 и file6 — это текстовые файлы в кодировке UTF-8. Файл pict1.jpg вовсе никакая не картинка, а текстовый файл. Файла pict2.jpg не существует и file нам об этом сообщает, файл pict2.png вообще является пустым, а вот файл с незамысловатым именем vasya на самом деле является изображением и мы даже видим некоторые характеристики этого изображения.

Итак, мы изучили несколько команд оболочки, которые помогут нам изучать систему Linux Mint и перемещаться между каталогами и папками, а также просматривать их содержимое и определять его тип, для этих целей у нас есть четыре команды: cd, ls, file, pwd. И не забывайте, что для перемещения по каталогам в Linux можно использовать как абсолютный путь, так и относительный.

В следующей публикации мы с вами познакомимся с командами Linux, которые дают нам возможность просматривать файлы.

Я хочу продолжить выпускать уроки по Linux Mint и командной оболочке bash

Если это так, то ваше желание совпадает с моим. Но мне от вас нужна небольшая помощь! Дело всё в том, что весь мой контент доступен полностью и абсолютно бесплатно в блоге и на канале YouTube. Создание контента — это работа, отнимающая много сил и энергии (благо, она мне нравится и пока я готов ей заниматься), оплату с вас за эту работу я не прошу, но прошу помочь распространить этот контент и поддержать мой канал и группу Вконтакте. Поэтому, если вы хотите, чтобы видео выходили чаще, лучше и больше, то можете мне помочь один из нескольких способов, указанных ниже, это нетрудно, но очень мотивирует и помогает:

  1. Оставьте ссылку на мой сайт, канал, группу в ВК, отдельное видео у себя на странице в соц. сетях или на своем сайту.
  2. Вступите в группу в ВК: https://vk.com/zametkinapolyah.
  3. Подпишитесь на мой YouTube-канал: https://www.youtube.com/user/zametkinapolyahru.
  4. И самое эффективное: после просмотра видео не забудьте написать отзыв в комментариях на YouTube и поставить лайк видео, опять же, на YouTube.

Замечу, что все мои видео уроки появляются сперва на YouTube, там вы их увидите быстрее всего.

Если вы считаете, что я вам помог и хотите меня отблагодарить материально, то можете воспользоваться реквизитами, указанными ниже. Все вырученные с доната деньги пойдут на улучшение качества видео, например, я возьму хороший USB микрофон, это будет как приятное дополнение к Full HD.

WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

Источник

Читайте также:  Файловый менеджер для windows server
Оцените статью