Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175

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

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

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

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

Прога-то несложная, вот поэтому очень хотелось бы разобраться в ней. Не так давно стал изучать bash, все тонкости ещё не успел выучить
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2024, 14:32
Ответы с готовыми решениями:

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

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

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

30
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
06.10.2024, 18:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kubuntovod Посмотреть сообщение
главный вывод, который Вам следует сделать
это то, что есть инструмент на 3 порядка приличней, чем bash.
с похожим синтаксисом и в той же unix-идеалогии.
называется perl.
в отличие от bash масштабируется на задачи любой сложности.
есть отладчик.
есть громадная библиотека готовых модулей под любые задачи.
всегда под руками, не нуждается в установке.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
06.10.2024, 18:22
Цитата Сообщение от volodin661 Посмотреть сообщение
называется perl.
В перловом скрипте тильда раскроется в хомяк?
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
06.10.2024, 19:39
нет, поведение perl макс. приближено к unix OS.

(sorry за ссылку именно на вашу цитату; не о тильде шла речь)
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175
06.10.2024, 22:25  [ТС]
называется perl.
Как раз мы его тоже проходим, начали недавно)
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
07.10.2024, 03:01
Цитата Сообщение от Nepravilon Посмотреть сообщение
Как раз мы его тоже проходим, начали недавно
inspect_path (функциональный стиль):
Perl
1
2
#!/usr/bin/env perl -l
map print("$_: NOT EXISTS"), grep !-d, split /:/, $ENV{PATH}
inspect_path (классический стиль):
Perl
1
2
3
4
5
6
#!/usr/bin/env perl -l
 
for my $path ( split /:/, $ENV{PATH} )
{
    -d $path ? print("$path: OK") : print("$path: NOT EXISTS!") 
}
варианты выше не будут раскрывать тильду ~ в спецификации.

для раскрытия ~ можно в первом варианте добавить ещё одно звено в конвейере - вызов функции glob

inspect_path (функциональный стиль):
Perl
1
2
#!/usr/bin/env perl -l
map print("$_: NOT EXISTS"), grep !-d, map glob, split /:/, $ENV{PATH}
а во втором добавить вызов функции glob с аргументом $path в теле оператора for:

inspect_path (классический стиль):
Perl
1
2
3
4
5
6
#!/usr/bin/env perl -l
 
for my $path ( split /:/, $ENV{PATH} )
{
    -d glob $path ? print("$path: OK") : print("$path: NOT EXISTS!") 
}
сделать скрипт исполняемым с помощью команды chmod
Bash
1
chmod +x inspect_path
и выполнить:
Bash
1
./inspect_path
Добавлено через 1 минуту
Цитата Сообщение от Nepravilon Посмотреть сообщение
Как раз мы его тоже проходим, начали недавно
inspect_path (функциональный стиль):
Perl
1
2
#!/usr/bin/env perl -l
map print("$_: NOT EXISTS"), grep !-d, split /:/, $ENV{PATH}
inspect_path (классический стиль):
Perl
1
2
3
4
5
6
#!/usr/bin/env perl -l
 
for my $path ( split /:/, $ENV{PATH} )
{
    -d $path ? print("$path: OK") : print("$path: NOT EXISTS!") 
}
варианты выше не будут раскрывать тильду ~ в спецификации.

для раскрытия ~ можно в первом варианте добавить ещё одно звено в конвейере - вызов функции glob

inspect_path (функциональный стиль):
Perl
1
2
#!/usr/bin/env perl -l
map print("$_: NOT EXISTS"), grep !-d, map glob, split /:/, $ENV{PATH}
а во втором добавить вызов функции glob с аргументом $path

inspect_path (классический стиль):
Perl
1
2
3
4
5
6
#!/usr/bin/env perl -l
 
for my $path ( split /:/, $ENV{PATH} )
{
    -d glob $path ? print("$path: OK") : print("$path: NOT EXISTS!") 
}
сделать скрипт исполняемым с помощью команды chmod
Bash
1
chmod +x inspect_path
и выполнить:
Bash
1
./inspect_path
1
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
07.10.2024, 13:21
---
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
12.10.2024, 18:00
Есть же утилита:
Bash
1
realpath -e ${PATH//:/ }
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175
12.10.2024, 19:04  [ТС]
Есть же утилита:
А что она делает? Полностью пути выводит или что?
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
12.10.2024, 19:15
Nepravilon, Я на рабочем компе, даже не могу скрин сделать:
Bash
1
2
3
4
5
6
7
8
realpath -e ${PATH//:/ } /na/pravo/ /na/levo/
/usr/local/bin
/usr/bin
/usr/bin
/usr/local/games
/usr/games
realpath: /na/pravo/: Нет такого файла или каталога
realpath: /na/levo/: Нет такого файла или каталога
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175
12.10.2024, 23:10  [ТС]
Я так понимаю, строки:

Bash
1
2
3
4
5
/usr/local/bin
/usr/bin
/usr/bin
/usr/local/games
/usr/games
Это имеющиеся пути, а

Bash
1
2
3
realpath -e ${PATH//:/ } /na/pravo/ /na/levo/
realpath: /na/pravo/: Нет такого файла или каталога
realpath: /na/levo/: Нет такого файла или каталога
Проверка поиска?
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
13.10.2024, 08:36
Цитата Сообщение от Nepravilon Посмотреть сообщение
Проверка поиска?
Валидация путей. В даннгом случае в переменной PATH. Я просто дописала несуществующие пути для всестороннего вывода.

Добавлено через 17 минут
Если непонятно вот это ${PATH//:/ } - операция подстановки, то можете глянуть самостоятельно:
Code
1
echo ${PATH//:/ }
и
Code
1
echo $PATH
Ну и не мешает взглянуть на страницу справки. Это лучше, чем верить мне на слово. Можете открыть и в ручную найти нужную строку в секции Parameter Expansion, а можете скопировать следующую строку, вставить в терминал и нажать enter:
Code
1
LESS=+/parameter//pattern/string man bash
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2024, 08:36

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru