Мурик спасибо за уроки)) лучшие уроки про bash скриптинг по мне!! продолжай также, и у тебя аудитория вырастет в разы, посовктовал твлй канал ужк десятку людей
ЭТО САМЫЙ ТОПОВЫЙ ПАРЕНЬ ВО ВСЕМ ЭТОМ ЮТУБЕ! МУРАД СПАСИБО ТЕБЕ ОГРОМНОЕ ЗА ПОМОЩЬ С САЙТОМ! TIRION! УДАЧИ В РАЗВИТИЕ КАНАЛА! С МЕНЯ ВЕЧНАЯ ПОДПИСКА И ПОСТОЯННЫЕ ЛАЙКИ НА ВИДЕО! ОГРОМНОЕ ТЕБЕ СПАСИБО!
Не понятно. В случае if [ "%$group" = it ] || [ "$group" = security ] говоришь: если одно из условий окажется верным, то сработает команда после then, т.е. я понимаю на входе if получит 0, но если оба условия окажутся неверными, то всё равно if получит 0? Привел пример, в командной строке ввожу file 121 || file 221 (121 и 221 файла нет). В обоих случаях файла нет, но потом ввожу echo $? и вижу статус выхода 0, т.е. условие будет выполняться, даже если оба результата выдали ошибку, где подвох?
Нет, если оба условия окажутся неверными, то if получит НЕ 0. Вы запустили команду file 122, а не ls. Команда file при отсутствии файла не выдаёт 0. Запустите просто file 1212; echo $? - какой бы результат ни был, всё равно 0.
@@user-zf9ur8sy5n в мане по file написано: file will exit with 0 if the operation was successful or >0 if an error was encountered. The following errors cause diagnostic messages, but don't affect the program exit code (as POSIX requires), unless -E is specified: • A file cannot be found • There is no permission to read a file • The file type cannot be determined
Спасибо! Есть вопросик: а где-то в man можно посмотреть информацию по операторам типа && или ||? Я пока что нашёл только man test, но там не все операторы описаны.
Привет! С добавлением admin в sudoers, используя простое условие с grep'ом, загвоздка получится, если там уже есть sysadmin или netadmin. Предполагаю, что надо какие-то регулярные выражения добавить к грепу, но я в них пока совсем не разбираюсь. По логике - регулярное выражение должно убрать из выборки грепа строки, которые начинаются с #, чтоб не искать слово админ в комментариях, а затем выбрать точное попадание по слову, admin, чтобы производные от него не помешали выполниться ветке условия. Правильно рассуждаю?
Привет! Да, всё верно Плюс учитывай, что могут быть юзеры типа admin1, administrator и т.п., на которые греп тоже будет срабатывать. В следующих темах это будет разбираться)
Привет!спасибо за видео. в rhcsa происходят изменения , добавили кубер и опеншифт как обязательную часть, подскажи планируешь ли обучающие видео по этому направлению? PE180 /DO180
@@GNULinuxPro если бы ,вот пожатая ссыль на оф сайт, "Level up your Red Hat Enterprise Linux skills with containers " clck.ru/Qvtkm , я вот планировал 8 версию rhcsa сдавать в ноябре, а теперь лучше сдам 7, там пока нет изменений. хотя может и зря боюсь, там наверное будут основы требовать настроить , но все же (((
Спасибо за информацию. Хм. Понятия не имею, что они там добавили, должно быть что-то слишком простое, в RHCSA речь то про локалхост. Надо будет поискать информацию
@@Patifonii одинарные кавычки - это если мы не хотим, чтобы bash обрабатывал текст внутри кавычек. Скажем echo '$HOME' покажет просто $HOME Двойные - с обработкой. Допустим, echo "$HOME" - покажет /home/user. Ну и всё в таком духе
не так объяснил, сорри >&2 означает, что мы stdout направляем в stderr &2 указывает на stderr (& указывает на файловый дескриптор, то есть чтобы мы не файл создали с названием два, а именно в stderr писали) ruclips.net/video/ZVHx6zKXGc0/видео.html
@@GNULinuxPro @Murad Aslanov в целом нормально, возможно не всегда успеваю за ходом мыслей в видео) Только начинаю изучать скриптинг. А так мне больше по душе принцип повествования Кирилла Севаева, но твой тоже не плохой)
@@feghg42g425t Семаев. И у него Lpic. RH другой принцип - там надо практическую часть выполнять. Что на мой взгляд дает гораздо больше опыта для применения. Плюс на мой взгляд корки RH ценятся выше по этой же причине.
Murad, приветствую! Думаю, многие меня бы поддержали, и были тебе благодарны, если бы ты выпустил ролик или ряд роликов в своем стиле и манере детализации и подачи материала наподобие ролика "Учим CSS за 1 час! От Профессионала" про Docker.Уверен, видео набрало бы много просмотров, т.к. данная тема в последнее время набирает популярность и имеет потенциал в будущем, но достойного, понятного и внятного материала на русскоязычном ютубе по Docker нет.
Добрый день! В целом в планах докер есть, но, скорее всего, это будет не скоро. У меня сейчас хватает времени на один ролик в неделю, и я всё таки хочу добить основы. Еще как минимум 10-15 тем надо рассмотреть. НО, как тут писали в комментариях, в RHCSA добавили новые темы - кубер и опеншифт, а я обещал, что этого курса должно хватить на сдачу экзамена. Поэтому тему докера в этом курсе я также разберу. Но есть еще много других важных тем, до которых я пока не дошел.
Доброго времени суток!) я выполнял доп. задание которое нужно попробовать самостоятельно сделать. с помощью гугления проб и ошибок я получил такой вариант скрипта! если не затруднит гляньте на это. Имеет ли место быть такой способ? p.s делал только эту частичку по этому вывод направлял в файл Спасибо! #!/usr/bin/env bash #touch file if cat /home/root1/fileg > /dev/null then echo "file ok" else touch /home/root1/fileg fi #users and group if [ "$#" -gt 2 ] then echo "the syntax is incorrect" exit 1 else if [ -z $1 ] then read -p "print username: " user read -p "print usergroup: " group else if [ -z $2 ] then user=$1 read -p "print usergroup: " group echo username: $user group: $group else user=$1 group=$2 echo username: $user groupname: $group fi fi fi echo $user >> /home/root1/fileg echo $group >> /home/root1/fileg
Привет! Возможно позабыл, а можете напомнить условия задания? А так по поводу скрипта, который вы скинули 1. Если условие стоит проверить наличие файла, то лучше использовать if [ -f /path/to/file ]; then... Плюс, если речь про наличие файла в директории пользователя, то лучше не писать полный путь, а использовать ~username/file - [ -f ~root/myfile ] 2. Касательно количества аргументов - немного переусложнено. В данном случае проверка одной переменной на совпадение одному из 4 условий - 0 аргументов, 1 аргумент, 2 аргумента, больше аргументов. В таких случаях легче использовать "case" Но можно и проще сделать. Сходу назначить переменным user и group значения $1 и $2. А дальше проверить каждую из этих переменных, есть ли у этих переменных значения. Если нет - то назначить.
Это вот этот кусочек с урока 09:39 ): А вы попробуйте самостоятельно сделать так, что если вводится один параметр, скрипт будет использовать его в качестве имени пользователя, а спрашивать только имя группы. Если больше двух параметров - то выдавать ошибку, что синтаксис неправильный и завершаться.
Мурик спасибо за уроки)) лучшие уроки про bash скриптинг по мне!! продолжай также, и у тебя аудитория вырастет в разы, посовктовал твлй канал ужк десятку людей
Спасибо! =)
ты bash скриптинг будешь продолжать или уже завершил эту серию?
В ближайших планах нет, возможно когда-нибудь
Очень круто! Спасибо за уроки, Murad
спасибо, рад что понравилось :)
Последовательно, немного контурно, но четко поэтапно излагаешь Спасибо, дружище!
поздравляю с тысячей
ЭТО САМЫЙ ТОПОВЫЙ ПАРЕНЬ ВО ВСЕМ ЭТОМ ЮТУБЕ! МУРАД СПАСИБО ТЕБЕ ОГРОМНОЕ ЗА ПОМОЩЬ С САЙТОМ! TIRION! УДАЧИ В РАЗВИТИЕ КАНАЛА! С МЕНЯ ВЕЧНАЯ ПОДПИСКА И ПОСТОЯННЫЕ ЛАЙКИ НА ВИДЕО! ОГРОМНОЕ ТЕБЕ СПАСИБО!
Спасибо) Удачи!
Спасибо. :)
Не понятно. В случае if [ "%$group" = it ] || [ "$group" = security ] говоришь: если одно из условий окажется верным, то сработает команда после then, т.е. я понимаю на входе if получит 0, но если оба условия окажутся неверными, то всё равно if получит 0? Привел пример, в командной строке ввожу file 121 || file 221 (121 и 221 файла нет). В обоих случаях файла нет, но потом ввожу echo $? и вижу статус выхода 0, т.е. условие будет выполняться, даже если оба результата выдали ошибку, где подвох?
Нет, если оба условия окажутся неверными, то if получит НЕ 0.
Вы запустили команду file 122, а не ls. Команда file при отсутствии файла не выдаёт 0. Запустите просто file 1212; echo $? - какой бы результат ни был, всё равно 0.
@@GNULinuxPro Спасибо) Ну тогда странно, по логике ведь это ошибка "1212: cannot open `1212' (No such file or directory)" не должна давать 0...
@@user-zf9ur8sy5n в мане по file написано:
file will exit with 0 if the operation was successful or >0 if an error was encountered. The following errors
cause diagnostic messages, but don't affect the program exit code (as POSIX requires), unless -E is specified:
• A file cannot be found
• There is no permission to read a file
• The file type cannot be determined
Спасибо! Есть вопросик: а где-то в man можно посмотреть информацию по операторам типа && или ||? Я пока что нашёл только man test, но там не все операторы описаны.
man bash
@@GNULinuxPro Спасибо!! Теперь вижу.
Привет!
С добавлением admin в sudoers, используя простое условие с grep'ом, загвоздка получится, если там уже есть sysadmin или netadmin. Предполагаю, что надо какие-то регулярные выражения добавить к грепу, но я в них пока совсем не разбираюсь. По логике - регулярное выражение должно убрать из выборки грепа строки, которые начинаются с #, чтоб не искать слово админ в комментариях, а затем выбрать точное попадание по слову, admin, чтобы производные от него не помешали выполниться ветке условия. Правильно рассуждаю?
Привет!
Да, всё верно
Плюс учитывай, что могут быть юзеры типа admin1, administrator и т.п., на которые греп тоже будет срабатывать. В следующих темах это будет разбираться)
@@GNULinuxPro , спасибо! Будем продолжать. Надеюсь, после будущих уроков картинка в голове полностью прояснится.
Привет!спасибо за видео. в rhcsa происходят изменения , добавили кубер и опеншифт как обязательную часть, подскажи планируешь ли обучающие видео по этому направлению? PE180 /DO180
Привет! Кажется это не про RHCSA, а про RHCA, это архитектор, 3 ступень (админ - инженер - архитектор)
@@GNULinuxPro если бы ,вот пожатая ссыль на оф сайт, "Level up your Red Hat Enterprise Linux skills with containers
" clck.ru/Qvtkm , я вот планировал 8 версию rhcsa сдавать в ноябре, а теперь лучше сдам 7, там пока нет изменений. хотя может и зря боюсь, там наверное будут основы требовать настроить , но все же (((
Спасибо за информацию. Хм. Понятия не имею, что они там добавили, должно быть что-то слишком простое, в RHCSA речь то про локалхост. Надо будет поискать информацию
)))
Какой-то очень жесткий синтаксис - стоит пропустить пробел или наоборот использовать лишний и скрипт выдает ошибку.
ну не всегда
где-то пробелы важны, где-то нет
@@GNULinuxPro после питона непривычно. Там только требования отступов
с тобой как то можно связаться?? Вк телеграм или дискорд!? ОЧень нужна твоя помощь.
t.me/doatta
Получается id это и команда и переменная если мы можем получить ее значение через $(id -u) ?
не, мы можем в баше с помощью $() запустить команду, и вывод встроить в другую команду
скажем echo My username is $(whoami)
@@GNULinuxPro А ну это было не очевидно )
Есть еще переменная UID. Возможно проще через нее получать) для новичков было бы понятнее)
@@Patifonii я в 13 части про bash переменные говорил про $()
что-то может забываться, но.. я могу в комментах подсказать
@@GNULinuxPro Подскажите в каких случаях нужно использовать ' ' а в каких " " ?
@@Patifonii одинарные кавычки - это если мы не хотим, чтобы bash обрабатывал текст внутри кавычек. Скажем echo '$HOME' покажет просто $HOME
Двойные - с обработкой. Допустим, echo "$HOME" - покажет /home/user. Ну и всё в таком духе
Глупый вопрос, но что значит &2 в скрипте
не так объяснил, сорри
>&2 означает, что мы stdout направляем в stderr
&2 указывает на stderr (& указывает на файловый дескриптор, то есть чтобы мы не файл создали с названием два, а именно в stderr писали)
ruclips.net/video/ZVHx6zKXGc0/видео.html
@@GNULinuxPro разобрался, спасибо
Как в целом оцениваешь последние ролики про скрипты? имел ли раньше с ними дело? стало ли понятнее? может чего-то не хватает?
@@GNULinuxPro @Murad Aslanov в целом нормально, возможно не всегда успеваю за ходом мыслей в видео) Только начинаю изучать скриптинг. А так мне больше по душе принцип повествования Кирилла Севаева, но твой тоже не плохой)
@@feghg42g425t Семаев. И у него Lpic. RH другой принцип - там надо практическую часть выполнять. Что на мой взгляд дает гораздо больше опыта для применения. Плюс на мой взгляд корки RH ценятся выше по этой же причине.
Murad, приветствую! Думаю, многие меня бы поддержали, и были тебе благодарны, если бы ты выпустил ролик или ряд роликов в своем стиле и манере детализации и подачи материала наподобие ролика "Учим CSS за 1 час! От Профессионала" про Docker.Уверен, видео набрало бы много просмотров, т.к. данная тема в последнее время набирает популярность и имеет потенциал в будущем, но достойного, понятного и внятного материала на русскоязычном ютубе по Docker нет.
Добрый день!
В целом в планах докер есть, но, скорее всего, это будет не скоро. У меня сейчас хватает времени на один ролик в неделю, и я всё таки хочу добить основы. Еще как минимум 10-15 тем надо рассмотреть. НО, как тут писали в комментариях, в RHCSA добавили новые темы - кубер и опеншифт, а я обещал, что этого курса должно хватить на сдачу экзамена. Поэтому тему докера в этом курсе я также разберу. Но есть еще много других важных тем, до которых я пока не дошел.
Доброго времени суток!) я выполнял доп. задание которое нужно попробовать самостоятельно сделать. с помощью гугления проб и ошибок я получил такой вариант скрипта! если не затруднит гляньте на это.
Имеет ли место быть такой способ?
p.s делал только эту частичку по этому вывод направлял в файл
Спасибо!
#!/usr/bin/env bash
#touch file
if cat /home/root1/fileg > /dev/null
then echo "file ok"
else touch /home/root1/fileg
fi
#users and group
if [ "$#" -gt 2 ]
then echo "the syntax is incorrect"
exit 1
else
if [ -z $1 ]
then
read -p "print username: " user
read -p "print usergroup: " group
else
if [ -z $2 ]
then user=$1
read -p "print usergroup: " group
echo username: $user group: $group
else
user=$1
group=$2
echo username: $user groupname: $group
fi
fi
fi
echo $user >> /home/root1/fileg
echo $group >> /home/root1/fileg
Привет!
Возможно позабыл, а можете напомнить условия задания?
А так по поводу скрипта, который вы скинули
1. Если условие стоит проверить наличие файла, то лучше использовать if [ -f /path/to/file ]; then...
Плюс, если речь про наличие файла в директории пользователя, то лучше не писать полный путь, а использовать ~username/file - [ -f ~root/myfile ]
2. Касательно количества аргументов - немного переусложнено. В данном случае проверка одной переменной на совпадение одному из 4 условий - 0 аргументов, 1 аргумент, 2 аргумента, больше аргументов. В таких случаях легче использовать "case"
Но можно и проще сделать. Сходу назначить переменным user и group значения $1 и $2. А дальше проверить каждую из этих переменных, есть ли у этих переменных значения. Если нет - то назначить.
Это вот этот кусочек с урока 09:39 ): А вы попробуйте самостоятельно сделать так, что если вводится один параметр, скрипт будет использовать его в качестве имени пользователя, а спрашивать только имя группы. Если больше двух параметров - то выдавать ошибку, что синтаксис неправильный и завершаться.
Понял, спасибо)