29. bash скрипты #3

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024

Комментарии • 52

  • @faridakbarov4532
    @faridakbarov4532 3 года назад +5

    Мурик спасибо за уроки)) лучшие уроки про bash скриптинг по мне!! продолжай также, и у тебя аудитория вырастет в разы, посовктовал твлй канал ужк десятку людей

    • @GNULinuxPro
      @GNULinuxPro  3 года назад

      Спасибо! =)

    • @faridakbarov4532
      @faridakbarov4532 3 года назад

      ты bash скриптинг будешь продолжать или уже завершил эту серию?

    • @GNULinuxPro
      @GNULinuxPro  3 года назад

      В ближайших планах нет, возможно когда-нибудь

  • @sergst52
    @sergst52 4 года назад +4

    Очень круто! Спасибо за уроки, Murad

    • @GNULinuxPro
      @GNULinuxPro  4 года назад

      спасибо, рад что понравилось :)

  • @denisbandurin2775
    @denisbandurin2775 2 года назад +2

    Последовательно, немного контурно, но четко поэтапно излагаешь Спасибо, дружище!

  • @gn01s3
    @gn01s3 4 года назад +1

    поздравляю с тысячей

  • @vendetta6150
    @vendetta6150 4 года назад +1

    ЭТО САМЫЙ ТОПОВЫЙ ПАРЕНЬ ВО ВСЕМ ЭТОМ ЮТУБЕ! МУРАД СПАСИБО ТЕБЕ ОГРОМНОЕ ЗА ПОМОЩЬ С САЙТОМ! TIRION! УДАЧИ В РАЗВИТИЕ КАНАЛА! С МЕНЯ ВЕЧНАЯ ПОДПИСКА И ПОСТОЯННЫЕ ЛАЙКИ НА ВИДЕО! ОГРОМНОЕ ТЕБЕ СПАСИБО!

    • @GNULinuxPro
      @GNULinuxPro  4 года назад +1

      Спасибо) Удачи!

  • @etodex
    @etodex 4 года назад +1

    Спасибо. :)

  • @user-zf9ur8sy5n
    @user-zf9ur8sy5n 3 года назад +1

    Не понятно. В случае if [ "%$group" = it ] || [ "$group" = security ] говоришь: если одно из условий окажется верным, то сработает команда после then, т.е. я понимаю на входе if получит 0, но если оба условия окажутся неверными, то всё равно if получит 0? Привел пример, в командной строке ввожу file 121 || file 221 (121 и 221 файла нет). В обоих случаях файла нет, но потом ввожу echo $? и вижу статус выхода 0, т.е. условие будет выполняться, даже если оба результата выдали ошибку, где подвох?

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +1

      Нет, если оба условия окажутся неверными, то if получит НЕ 0.
      Вы запустили команду file 122, а не ls. Команда file при отсутствии файла не выдаёт 0. Запустите просто file 1212; echo $? - какой бы результат ни был, всё равно 0.

    • @user-zf9ur8sy5n
      @user-zf9ur8sy5n 3 года назад

      @@GNULinuxPro Спасибо) Ну тогда странно, по логике ведь это ошибка "1212: cannot open `1212' (No such file or directory)" не должна давать 0...

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +1

      @@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

  • @yolo-cars
    @yolo-cars 2 года назад +1

    Спасибо! Есть вопросик: а где-то в man можно посмотреть информацию по операторам типа && или ||? Я пока что нашёл только man test, но там не все операторы описаны.

    • @GNULinuxPro
      @GNULinuxPro  2 года назад +1

      man bash

    • @yolo-cars
      @yolo-cars 2 года назад +1

      @@GNULinuxPro Спасибо!! Теперь вижу.

  • @inskyinsky2364
    @inskyinsky2364 2 года назад

    Привет!
    С добавлением admin в sudoers, используя простое условие с grep'ом, загвоздка получится, если там уже есть sysadmin или netadmin. Предполагаю, что надо какие-то регулярные выражения добавить к грепу, но я в них пока совсем не разбираюсь. По логике - регулярное выражение должно убрать из выборки грепа строки, которые начинаются с #, чтоб не искать слово админ в комментариях, а затем выбрать точное попадание по слову, admin, чтобы производные от него не помешали выполниться ветке условия. Правильно рассуждаю?

    • @GNULinuxPro
      @GNULinuxPro  2 года назад +1

      Привет!
      Да, всё верно
      Плюс учитывай, что могут быть юзеры типа admin1, administrator и т.п., на которые греп тоже будет срабатывать. В следующих темах это будет разбираться)

    • @inskyinsky2364
      @inskyinsky2364 2 года назад +1

      @@GNULinuxPro , спасибо! Будем продолжать. Надеюсь, после будущих уроков картинка в голове полностью прояснится.

  • @romandm98
    @romandm98 4 года назад

    Привет!спасибо за видео. в rhcsa происходят изменения , добавили кубер и опеншифт как обязательную часть, подскажи планируешь ли обучающие видео по этому направлению? PE180 /DO180

    • @GNULinuxPro
      @GNULinuxPro  4 года назад

      Привет! Кажется это не про RHCSA, а про RHCA, это архитектор, 3 ступень (админ - инженер - архитектор)

    • @romandm98
      @romandm98 4 года назад

      ​@@GNULinuxPro если бы ,вот пожатая ссыль на оф сайт, "Level up your Red Hat Enterprise Linux skills with containers
      " clck.ru/Qvtkm , я вот планировал 8 версию rhcsa сдавать в ноябре, а теперь лучше сдам 7, там пока нет изменений. хотя может и зря боюсь, там наверное будут основы требовать настроить , но все же (((

    • @GNULinuxPro
      @GNULinuxPro  4 года назад

      Спасибо за информацию. Хм. Понятия не имею, что они там добавили, должно быть что-то слишком простое, в RHCSA речь то про локалхост. Надо будет поискать информацию

  • @RootRealm
    @RootRealm 4 года назад +1

    )))

  • @Arius1987
    @Arius1987 2 года назад +1

    Какой-то очень жесткий синтаксис - стоит пропустить пробел или наоборот использовать лишний и скрипт выдает ошибку.

    • @GNULinuxPro
      @GNULinuxPro  2 года назад +1

      ну не всегда
      где-то пробелы важны, где-то нет

    • @Arius1987
      @Arius1987 2 года назад

      @@GNULinuxPro после питона непривычно. Там только требования отступов

  • @OneVendettaa
    @OneVendettaa 4 года назад

    с тобой как то можно связаться?? Вк телеграм или дискорд!? ОЧень нужна твоя помощь.

  • @Patifonii
    @Patifonii 3 года назад

    Получается id это и команда и переменная если мы можем получить ее значение через $(id -u) ?

    • @GNULinuxPro
      @GNULinuxPro  3 года назад

      не, мы можем в баше с помощью $() запустить команду, и вывод встроить в другую команду
      скажем echo My username is $(whoami)

    • @Patifonii
      @Patifonii 3 года назад

      @@GNULinuxPro А ну это было не очевидно )
      Есть еще переменная UID. Возможно проще через нее получать) для новичков было бы понятнее)

    • @GNULinuxPro
      @GNULinuxPro  3 года назад

      @@Patifonii я в 13 части про bash переменные говорил про $()
      что-то может забываться, но.. я могу в комментах подсказать

    • @Patifonii
      @Patifonii 3 года назад

      @@GNULinuxPro Подскажите в каких случаях нужно использовать ' ' а в каких " " ?

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +1

      @@Patifonii одинарные кавычки - это если мы не хотим, чтобы bash обрабатывал текст внутри кавычек. Скажем echo '$HOME' покажет просто $HOME
      Двойные - с обработкой. Допустим, echo "$HOME" - покажет /home/user. Ну и всё в таком духе

  • @feghg42g425t
    @feghg42g425t 4 года назад

    Глупый вопрос, но что значит &2 в скрипте

    • @GNULinuxPro
      @GNULinuxPro  4 года назад +1

      не так объяснил, сорри
      >&2 означает, что мы stdout направляем в stderr
      &2 указывает на stderr (& указывает на файловый дескриптор, то есть чтобы мы не файл создали с названием два, а именно в stderr писали)
      ruclips.net/video/ZVHx6zKXGc0/видео.html

    • @feghg42g425t
      @feghg42g425t 4 года назад

      @@GNULinuxPro разобрался, спасибо

    • @GNULinuxPro
      @GNULinuxPro  4 года назад

      Как в целом оцениваешь последние ролики про скрипты? имел ли раньше с ними дело? стало ли понятнее? может чего-то не хватает?

    • @feghg42g425t
      @feghg42g425t 4 года назад

      @@GNULinuxPro ​ @Murad Aslanov в целом нормально, возможно не всегда успеваю за ходом мыслей в видео) Только начинаю изучать скриптинг. А так мне больше по душе принцип повествования Кирилла Севаева, но твой тоже не плохой)

    • @Patifonii
      @Patifonii 3 года назад

      @@feghg42g425t Семаев. И у него Lpic. RH другой принцип - там надо практическую часть выполнять. Что на мой взгляд дает гораздо больше опыта для применения. Плюс на мой взгляд корки RH ценятся выше по этой же причине.

  • @SP-he9lj
    @SP-he9lj 4 года назад

    Murad, приветствую! Думаю, многие меня бы поддержали, и были тебе благодарны, если бы ты выпустил ролик или ряд роликов в своем стиле и манере детализации и подачи материала наподобие ролика "Учим CSS за 1 час! От Профессионала" про Docker.Уверен, видео набрало бы много просмотров, т.к. данная тема в последнее время набирает популярность и имеет потенциал в будущем, но достойного, понятного и внятного материала на русскоязычном ютубе по Docker нет.

    • @GNULinuxPro
      @GNULinuxPro  4 года назад

      Добрый день!
      В целом в планах докер есть, но, скорее всего, это будет не скоро. У меня сейчас хватает времени на один ролик в неделю, и я всё таки хочу добить основы. Еще как минимум 10-15 тем надо рассмотреть. НО, как тут писали в комментариях, в RHCSA добавили новые темы - кубер и опеншифт, а я обещал, что этого курса должно хватить на сдачу экзамена. Поэтому тему докера в этом курсе я также разберу. Но есть еще много других важных тем, до которых я пока не дошел.

  • @user-kh5bi4cw8k
    @user-kh5bi4cw8k 3 месяца назад +1

    Доброго времени суток!) я выполнял доп. задание которое нужно попробовать самостоятельно сделать. с помощью гугления проб и ошибок я получил такой вариант скрипта! если не затруднит гляньте на это.
    Имеет ли место быть такой способ?
    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

    • @GNULinuxPro
      @GNULinuxPro  3 месяца назад

      Привет!
      Возможно позабыл, а можете напомнить условия задания?
      А так по поводу скрипта, который вы скинули
      1. Если условие стоит проверить наличие файла, то лучше использовать if [ -f /path/to/file ]; then...
      Плюс, если речь про наличие файла в директории пользователя, то лучше не писать полный путь, а использовать ~username/file - [ -f ~root/myfile ]
      2. Касательно количества аргументов - немного переусложнено. В данном случае проверка одной переменной на совпадение одному из 4 условий - 0 аргументов, 1 аргумент, 2 аргумента, больше аргументов. В таких случаях легче использовать "case"
      Но можно и проще сделать. Сходу назначить переменным user и group значения $1 и $2. А дальше проверить каждую из этих переменных, есть ли у этих переменных значения. Если нет - то назначить.

    • @user-kh5bi4cw8k
      @user-kh5bi4cw8k 3 месяца назад +1

      Это вот этот кусочек с урока 09:39 ): А вы попробуйте самостоятельно сделать так, что если вводится один параметр, скрипт будет использовать его в качестве имени пользователя, а спрашивать только имя группы. Если больше двух параметров - то выдавать ошибку, что синтаксис неправильный и завершаться.

    • @GNULinuxPro
      @GNULinuxPro  3 месяца назад

      Понял, спасибо)