2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
1

Нужно проверить корректность путей в переменной $PATH

01.10.2024, 14:32. Показов 296. Ответов 14

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане! Возникла вот такая задачка, думаю над ней, пока что ничего в голову не пришло. Возможно нужно прописать регулярное выражение, осталось только понять какое.

Хотелось бы, чтобы кто-то дал примерный вектор направления, в какую сторону думать. А там уже что-нибудь нарисуется)

Прога-то несложная, вот поэтому очень хотелось бы разобраться в ней. Не так давно стал изучать bash, все тонкости ещё не успел выучить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2024, 14:32
Ответы с готовыми решениями:

Список несуществующих путей из значения переменной PATH
Проанализировать значение системной переменной PATH и вывести на экран список несуществующих путей....

Нужно проверить на корректность ввода E-mail адреса
Допустим пользователь вводит _____@___.___ Как мы можем проверить эти три ↑ ..... ...

Работа с классом regex. Есть текстовый файл с описанием переменных, нужно его проверить на корректность
Всем привет! Есть текстовый файл с описанием переменных нужно его проверить на корректность. Если...

Обход всех путей из PATH
Помогите, пожалуйста, как можно обойти все папки из PATH?

14
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
01.10.2024, 14:49 2
1. Разбить по разделителю, в массив
2. Пройтись по массиву, проверить, существует ли каталог (элемент массива)

Первое - split
Второе - цикл и проверка существования каталога
Bash
1
if [ -d /home/user/Desktop ]; then ...
Добавлено через 9 минут
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Первое - split
Обманул. Это со змеюки
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
01.10.2024, 15:25  [ТС] 3
Да, в bash не split используется)

Я для разбиения использовал следующую конструкцию с командой tr:

Bash
1
paths=$(echo $PATH | tr ":" "\n")
Добавлено через 4 минуты
Что интересно, следуя вашей логике, у меня все стандартные пути отобразились и выразились как корректные, а вот ввёл пользовательский, который сам добавил в .bashrc, его прога посчитала некорректной. А всего-то в коде цикл и условный оператор с одним if и else, простенький довольно.
0
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
01.10.2024, 15:30 4
Вот так можно:
Bash
1
IFS=':' read -r -a paths <<< "$PATH"
Цитата Сообщение от Nepravilon Посмотреть сообщение
его прога посчитала некорректной.
Как проверяете путь?
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
01.10.2024, 15:34  [ТС] 5
Путь проверяю так:

Bash
1
2
3
4
5
6
7
8
for path in $paths
do
 if [ -d $path ]; then
  echo "Путь $path является корректным"
 else
  echo "Путь $path НЕ является корректным или не существует"
 fi
done
Мой каталог не видит

Добавлено через 1 минуту
А все остальные выводятся прекрасно

Добавлено через 51 секунду
Я кажется понял, в чём проблема. Мой каталог называется MY_PATH, и там есть символ нижнего подчёркивания, который автоматически распознаётся как некорректный
0
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
01.10.2024, 15:39 6
А если так
Bash
1
if [ -d "$path" ]; then
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
01.10.2024, 15:47  [ТС] 7
Нет, результат тот же
0
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
01.10.2024, 15:58 8
У себя попробовал. Путь
Bash
1
/home/user/Desktop/to_HOME
Прекрасно распознаётся. Если добавляю к имени каталога 1, то он не находится. Всё, как и положено.
0
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
01.10.2024, 17:37 9
Не, проблема где-то в другом месте. Подчеркушка никак не должна влиять. Показывайте, какой у Вас полный проблемный путь.
Миниатюры
Нужно проверить корректность путей в переменной $PATH  
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
02.10.2024, 16:52  [ТС] 10
/home/user/MY_PATH
0
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
02.10.2024, 17:23 11
Что-то не то у Вас с оболочкой. Проверил у себя, никаких проблем. Ни в ZSHELL, ни в BASH.
Bash
1
2
3
4
5
user@acer ~ % mkdir MY_PATH
user@acer ~ % if [ -d /home/user/MY_PATH ]; then echo YES; fi
YES
user@acer ~ % if [ -d /home/user/MY_PATH1 ]; then echo YES; fi
user@acer ~ %
Попробуйте в цикле вывести, построчно, все пути, которые распарсятся в массив. Может оно криво туда ложится.
0
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,262
02.10.2024, 19:41 12
Nepravilon, ls /home/user/MY_PATH выдаёт ошибку? Если да, то надо бы пробить на содержание непринтабельных символов в названии.

По правам доступа: у юзера запускающего скрипт с данной директорией "дружба" есть?
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
02.10.2024, 19:49  [ТС] 13
Kubuntovod, нет, пути парсятся нормально.

Kukstyler, ошибку команда не выдаёт. Все файлы, которые там есть, выводятся
0
Эксперт NIX
3218 / 875 / 195
Регистрация: 14.01.2013
Сообщений: 4,279
Вчера, 07:40 14
Bash
1
if [ -d /home/user/MY_PATH ]; then echo YES; fi
Ничего не выдаёт?

А что говорит
Bash
1
ls -l /home/user/MY_PATH
?
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 170
Вчера, 14:20  [ТС] 15
Эта штука:

Bash
1
ls -l /home/user/MY_PATH
просто вывела все три моих файла, которые там находятся. Хотя пишет: "Итого 12".

Если со скрытыми:

Bash
1
ls -al /home/user/MY_PATH
То пишет: "Итого 20". Хотя всего 5 файлов (2 скрытых, 3 моих).

Добавлено через 45 секунд
То есть система-то видит мою директорию, но почему-то в коде она обрабатывается как некорректная:

Bash
1
2
3
4
5
6
7
8
for path in $paths
do
 if [ -d $path ]; then
  echo "Путь $path является корректным"
 else
  echo "Путь $path НЕ является корректным или не существует"
 fi
done
Добавлено через 20 минут
КСТАААТИ, ДРУЗЬЯ

Я написал полный путь, и мне вывелось, что всё корректно. Т.е. я прописал /home/user/MY_PATH, а до этого прописывал через тильду.

И если просто точку поставил, то она тоже отобразилась.

Вот так дела)

Всем спасибо за ваши ответы!
0
Вчера, 14:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Вчера, 14:20
Помогаю со студенческими работами здесь

Работа path путей в linux и python
Всем привет. В общем у меня есть сервер, я на него закинул свой проект на python. В enviroments...

Примеры абсолютных/относительных путей (Path)
Здравствуйте, можете привести примеры: абсолютных и относительных путей &quot;path&quot;?

Проблемы с javac.exe, в Path несколько путей
Начинаю программировать на Java. В командной строке при указании при попытке выполнения javac...

Программы в консоли не видят файлы из путей в $PATH
Перенес файл composer в /usr/local/bin. Этот путь есть в $PATH. Сам файл доступен теперь везде, но...

Проблема с переменной %path%
Батник Проверка.bat не работает у некоторых пользователей. Причем версия системы идентичная:...

Содержимое переменной PATH
Здравствуйте. Где находится содержимое переменной PATH? Я смотрел содержимое ~/.bashrc,...

Проверить код на корректность
Может кто проверить uses Crt; var k:integer; S1: real; C : array real; S : array of real;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru