27. bash скрипты #1

Поделиться
HTML-код
  • Опубликовано: 5 окт 2024
  • Наш скрипт на git: gitlab.com/doa...
    Цикл статей про bash скрипты: habr.com/ru/co...
    Плейлист: • Основы GNU/Linux и под...
    Телеграм: t.me/gnuslashl...
    Текстовой вариант: basis.gnulinux...

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

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

    за этим всем будущее... самое интересное что на этих роликах сейчас 300 - 500 просмотров ... думаю еще лет 5 максимум и на таких роликах будет 3 - 5 миллиона просмотров!

  • @artems7104
    @artems7104 4 года назад +2

    Мужик, благодарю за твой труд.

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

      спасибо, надеюсь полезно

  • @babichfx
    @babichfx 3 года назад +3

    Круто, спасибо мужик!

  • @rufatganiyev2934
    @rufatganiyev2934 3 года назад +2

    Спасибо! Видосы что надо 👍

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

    хорошие ролики очень помогающие как новичкам так и другим людям которые о чем-то не знали(а так согласен с людьми которые просто на 1.5 скорость переключают ролик и слушают)

  • @partsan
    @partsan 4 года назад +2

    отличное полезное видео

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

    Спасибо за видосы! :)

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

    ты шикарен

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

    godnota!

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

    Спасибо

  • @11cotton
    @11cotton 7 месяцев назад

    Подскажите , пожалуйста, по какой логике работает cp /etc/sudoers{,.bkp} . Я читал про этот способ копирования файла, никак не пойму, как это работает(как шаблон регулярки в фигурных скобках, приписанный к имени файла обрабатывается командой CP, которая создает новый файл, при том что в общем случае синтаксис команды : CP_аргумент_что_ куда )?

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

      file{1, 2} в случае с башем раскрывается как "file1 file2"
      cp file{1, 2}
      Будет
      cp file1 file2
      Соответственно
      cp /etc/sudoers{,.bkp}
      Будет
      cp /etc/sudoers /etc/sudoers.bkp
      То есть до запятой ничего нет, поэтому ничего не меняется, а после запятой .bkp, которые и добавляются ко второму значению

    • @11cotton
      @11cotton 7 месяцев назад +1

      кажется я понял, эта регулярка раскладывается как : sudoers{,.bkp} = sudoers sudoers.bkp . Был бы третий элемент {,bkp,txt} : touch sudoers{,bkp,txt} = sudoers sudoers.bkp sudoers.txt

    • @11cotton
      @11cotton 7 месяцев назад +1

      Спасибо!@@GNULinuxPro

  • @AlexMatsu-m9w
    @AlexMatsu-m9w 4 месяца назад

    добрый! 3е задание что-то подтормаживаю как вывести оболочку пользователя
    можно использовать /etc/passwd но как получить нужные слова оттуда ,
    grep $user /etc/passwd | awk -F"/" '{print $5}'
    попробовал так 👆 но естественно это костыль который сработает только если повезет))
    подскажите пж как сделать правильно или хотяб намек )

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

      Добрый =)
      Ну, на самом деле довольно близко. А костыльность в разделителе. Слешей в passwd может быть разное количество, по нему не получится ориентироваться. А вот что является разделителем в passwd? Вот по нему уже куда точнее можно ориентироваться

    • @AlexMatsu-m9w
      @AlexMatsu-m9w 4 месяца назад +1

      @@GNULinuxPro ну конечно же (:) ! А я чёт торможу.
      Огромное спасибо!

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

    А как вы решаете проблему баш-скриптов, когда, если команда завершилась с ошибкой, то скрипт всё-равно продолжает выполняться?
    Я вот как ни искал, так и не смог найти ничего подходящего: опции баша не работают в некоторых случаях, а библиотеку скриптов баш (которая вроде как работает в 100%) не вариант ставить на каждый линукс.

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

      Можно использовать set -e, но с этим надо быть осторожнее. То что команды завершаются с ошибками зачастую нормально. В некоторых случаях надо ещё pipefail использовать
      Можно ещё использовать trap

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

      @@GNULinuxPro Я это всё пробовал, но в некоторых случаях (напр. ошибка внутри

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

      @@nikit4167 В случае с сабшеллами надо дополнительно наследование врубить - inherit_errexit

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

      @@GNULinuxPro всё-равно не работает:
      cat

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

      @@nikit4167 У вас после сабшела стоит оператор "И". В мане по башу
      The -e setting shall be ignored when executing the compound list following the while, until, if, or elif reserved word, a pipeline beginning with the ! reserved word, or any command of an AND-OR list other than the last.
      В таких случая ошибки надо обрабатывать самостоятельно, к примеру, с помощью kill 0

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

    интересный у тебя акцент. Ты не Туркмен случайно?

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

    Не понятно, чтобы передать параметры в переменные нужно обязательно задавать переменные формата $1..$100 ?

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

      эмм.. вы про передачу параметров в скрипты?
      можно аргументы передавать как $1 и т.п.
      либо делать export var, чтобы переменная попала скрипту, а дальше использовать эту переменную

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

      @@GNULinuxPro я про то, что вы стерли $user и написали $1 вот я и пытаюсь понять в чем отличие ? или 1 2 3 это номер параметра по порядку?

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

      да
      чтобы не привязывать в скрипт конкретного пользователя, я могу передать его с помощью аргумента при запуске скрипта
      ./script test1 test2 test3
      $1 = test1
      $2 = test2
      $3 = test3

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

    touch file
    touch script
    nano script
    #!/usr/bin/env bash
    read -p "inpunt" zxc
    echo $zxc > ~/file
    ctrl+x
    chmod +x script
    sudo ./script
    Проблема заключается в том, что ничего никуда не выводится, в чем может быть причина?

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

      Проверь
      cat /root/file
      потому что ты запускаешь скрипт от рута (sudo), соответственно, файлик создаётся и заполняется в домашней директории (~/) рута.
      Или просто запусти без sudo

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

      @@GNULinuxPro тоже самое, дело в #!/usr/bin/env bash, если я ее удаляю то все работает идеально, как только добавляю так ничего не работает, попробовал указать /bin/bahs и тоже ничего не работает, сижу гуглю в чем проблема

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

      Какой дистрибутив?
      Вы точно указывали #!/bin/bash, или #!/bin/bahs ?
      Покажите пожалуйста вывод
      ls -l /bin/bash /usr/bin/env

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

      @@MRRIBO а и ещё
      sudo which bash env

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

      -rwxr-xr-x. 1 root root 1150736 Jan 12 10:24 /bin/bash
      -rwxr-xr-x. 1 root root 42472 Apr 27 2020 /usr/bin/env
      (which)
      /bin/bash
      /bin/env

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

    ,👍➕🔔➕✍️➕➡️