Линукс, пути к системным папкам и носителям.
Модератор: Модераторы
Линукс, пути к системным папкам и носителям.
Как получить в линукс пути к папкам:
1. Персональный каталог залогиненого в данный момент пользователя;
2. Его рабочий стол;
3. Его документы (учитывая что у кого то они названы по русски а у когото по английски персональный_каталог+'Документы' надо полагать не прокатит).
4. Мой компьютер (не совсем нативное явление для Линукс, но у меня в меню-перейти есть)
И как получить список всех подключенных носителей (диски, флешки, приводы)?
1. Персональный каталог залогиненого в данный момент пользователя;
2. Его рабочий стол;
3. Его документы (учитывая что у кого то они названы по русски а у когото по английски персональный_каталог+'Документы' надо полагать не прокатит).
4. Мой компьютер (не совсем нативное явление для Линукс, но у меня в меню-перейти есть)
И как получить список всех подключенных носителей (диски, флешки, приводы)?
1.
2. Зависит от дистрибутива, если не ошибаюсь. Но в основном встречаю каталог Desktop
3. Нет, тут нельзя ничего однозначно сказать, у каждого своё.
4. Нет такого понятия вообще. Графическая оболочка KDE предоставляет "Мой компьютер" как сборник всех дисков, шарных папок и тд и тп. Но это - отдельная программа. Данное не прокатит, к примеру, в оболочке Xfce4
Код: Выделить всё
var home_path: string;
..
home_path := ExpandFileName('~/');
2. Зависит от дистрибутива, если не ошибаюсь. Но в основном встречаю каталог Desktop
Код: Выделить всё
var desktop_path: string;
..
desktop_path := ExpandFileName('~/')+'Desktop';
3. Нет, тут нельзя ничего однозначно сказать, у каждого своё.
4. Нет такого понятия вообще. Графическая оболочка KDE предоставляет "Мой компьютер" как сборник всех дисков, шарных папок и тд и тп. Но это - отдельная программа. Данное не прокатит, к примеру, в оболочке Xfce4
Код: Выделить всё
cat /proc/mounts- Alexx2000
- постоялец
- Сообщения: 490
- Зарегистрирован: 25.10.2006 00:22:07
- Откуда: Мытищи
- Контактная информация:
qivi писал(а):1. Персональный каталог залогиненого в данный момент пользователя;
Код: Выделить всё
var
HomeDir: String;
begin
HomeDir:= GetEnvironmentVariable('HOME');
.....
qivi писал(а):2. Его рабочий стол;
3. Его документы (учитывая что у кого то они названы по русски а у когото по английски персональный_каталог+'Документы' надо полагать не прокатит).
Если дистрибутив использует xdg-user-dirs, то можно выцепить из файла
Код: Выделить всё
$HOME/.config/user-dirs.dirseevee писал(а):1.Код: Выделить всё
cat /proc/mounts
А как этим воспользоваться? Что бы скажем выбрать устройство для просмотра его содержимого?
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
И как получить список всех подключенных носителей (диски, флешки, приводы)?
/etc/fstab
fstab - это файл для автомонтирования устройств при загрузке.
Сейчас широко распространен HAL, и все устройства, монтированные с помощью HAL, в fstab не прописываются
to qivi
первое значение - устройство. второе значение - точка монтирования.
как открыть в Лазарусе - не знаю... Можно использовать как вариант TProcess с любимым файловым менеджером
Сейчас широко распространен HAL, и все устройства, монтированные с помощью HAL, в fstab не прописываются
to qivi
Код: Выделить всё
eevee@compaq ~ $ cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,noatime,errors=continue,data=writeback 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
udev /dev tmpfs rw,nosuid,relatime,size=10240k,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
/dev/sda4 /home ext3 rw,noatime,errors=continue,data=writeback 0 0
shm /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime 0 0
usbfs /proc/bus/usb usbfs rw,nosuid,noexec,relatime,devgid=85,devmode=664 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
первое значение - устройство. второе значение - точка монтирования.
как открыть в Лазарусе - не знаю... Можно использовать как вариант TProcess с любимым файловым менеджером
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Можно использовать как вариант TProcess с любимым файловым менеджером
может лучше вывод сразу распарсить как в теме "Как считать MAC-адрес??". Там даже пример есть
P.S. Вот мой fstab
Как видите, тут нет ни флешек, ни dvd-приводов, хотя и то и то работает на ура
Добавлено спустя 2 минуты:
Padre_Mortius, прежде чем что то хаить, предложили бы лучший вариант. Единственный Ваш ответ - fstab, который как мертвому припарка
Код: Выделить всё
eevee@compaq ~ $ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <fs> <mountpoint> <type> <opts> <dump/pass>
/dev/sda1 /boot ext2 noauto,noatime 1 0
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext3 noatime 0 1
/dev/sda4 /home ext3 noatime 0 2
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Как видите, тут нет ни флешек, ни dvd-приводов, хотя и то и то работает на ура
Добавлено спустя 2 минуты:
Padre_Mortius, прежде чем что то хаить, предложили бы лучший вариант. Единственный Ваш ответ - fstab, который как мертвому припарка
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Я бы лучше использовал
в нем меньше ненужной информации, типа параметров монтирования данного тома
Код: Выделить всё
mountв нем меньше ненужной информации, типа параметров монтирования данного тома
Блин... так и не понял как можно получить список всех устройств что б переключатся между ними програмно...
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Что-то типа такого. переделал пример из указанной темы в блокноте без проверки. Могут быть ошибки
Код: Выделить всё
Var
aProcess: TProcess;
aStrings: TStringList;
aString, aBuffer: String;
i: Integer;
begin
aProcess := TProcess.Create(Nil);
aProcess.Commandline := 'mount';
aProcess.Options := [poUsePipes,poNoConsole];
aProcess.Execute;
SetLength(aBuffer, 2000);
Repeat
i := aProcess.Output.Read(aBuffer[1], Length(aBuffer));
aString := aString + Copy(aBuffer, 1, i);
Until i = 0;
aProcess.Free;
aStrings := TStringList.Create;
aStrings.Text := aString;
//дальше делать разбор aStrings при необходимости
aStrings.Free;
end.Спасибо разбираюсь.
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
для того чтобы узнать что примонтировано читать /etc/mtab
man libc open http://www.opennet.ru/man.shtml?topic=open&category=2&russian=0
man libc read http://www.opennet.ru/man.shtml?topic=read&category=2&russian=0
man linc close http://www.opennet.ru/man.shtml?topic=close&category=2&russian=0
Далее парсинг данных
Добавлено спустя 3 минуты 11 секунд:
Рабочий стол http://forum.ubuntu.ru/index.php?topic=19054.0
Добавлено спустя 10 минут 42 секунды:
для гнома мой компьютер "живет" в /.gconf/apps/nautilus/desktop-metadata
man libc open http://www.opennet.ru/man.shtml?topic=open&category=2&russian=0
man libc read http://www.opennet.ru/man.shtml?topic=read&category=2&russian=0
man linc close http://www.opennet.ru/man.shtml?topic=close&category=2&russian=0
Далее парсинг данных
Добавлено спустя 3 минуты 11 секунд:
Рабочий стол http://forum.ubuntu.ru/index.php?topic=19054.0
Добавлено спустя 10 минут 42 секунды:
для гнома мой компьютер "живет" в /.gconf/apps/nautilus/desktop-metadata
- Alexx2000
- постоялец
- Сообщения: 490
- Зарегистрирован: 25.10.2006 00:22:07
- Откуда: Мытищи
- Контактная информация:
coyot.rush писал(а):для того чтобы узнать что примонтировано читать /etc/mtab
man libc open http://www.opennet.ru/man.shtml?topic=o ... &russian=0
man libc read http://www.opennet.ru/man.shtml?topic=r ... &russian=0
man linc close http://www.opennet.ru/man.shtml?topic=c ... &russian=0
Далее парсинг данных
Для чтения и парсинга файлов '/etc/fstab' и '/etc/mtab' в libc есть специальные функции: setmntent, getmntent, endmntent. Как их использовать можно посмотреть в манах (также можно глянуть пример их использования в исходниках DC)
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
Alexx2000 где можно почитать доку по системным вызовам, в систематизированным виде (наподобие MS SDK).
Лучше http://www.opennet.ru ничего пока не нашел, но сайт хорош когда заешь что искать, ну и разумеется исходники DC
Лучше http://www.opennet.ru ничего пока не нашел, но сайт хорош когда заешь что искать, ну и разумеется исходники DC
