Наш скрипт на git: gitlab.com/doa... Цикл статей про bash скрипты: habr.com/ru/co... Плейлист: • Основы GNU/Linux и под... Телеграм: t.me/gnuslashl... Текстовой вариант: basis.gnulinux...
за этим всем будущее... самое интересное что на этих роликах сейчас 300 - 500 просмотров ... думаю еще лет 5 максимум и на таких роликах будет 3 - 5 миллиона просмотров!
хорошие ролики очень помогающие как новичкам так и другим людям которые о чем-то не знали(а так согласен с людьми которые просто на 1.5 скорость переключают ролик и слушают)
Подскажите , пожалуйста, по какой логике работает cp /etc/sudoers{,.bkp} . Я читал про этот способ копирования файла, никак не пойму, как это работает(как шаблон регулярки в фигурных скобках, приписанный к имени файла обрабатывается командой CP, которая создает новый файл, при том что в общем случае синтаксис команды : CP_аргумент_что_ куда )?
file{1, 2} в случае с башем раскрывается как "file1 file2" cp file{1, 2} Будет cp file1 file2 Соответственно cp /etc/sudoers{,.bkp} Будет cp /etc/sudoers /etc/sudoers.bkp То есть до запятой ничего нет, поэтому ничего не меняется, а после запятой .bkp, которые и добавляются ко второму значению
кажется я понял, эта регулярка раскладывается как : sudoers{,.bkp} = sudoers sudoers.bkp . Был бы третий элемент {,bkp,txt} : touch sudoers{,bkp,txt} = sudoers sudoers.bkp sudoers.txt
добрый! 3е задание что-то подтормаживаю как вывести оболочку пользователя можно использовать /etc/passwd но как получить нужные слова оттуда , grep $user /etc/passwd | awk -F"/" '{print $5}' попробовал так 👆 но естественно это костыль который сработает только если повезет)) подскажите пж как сделать правильно или хотяб намек )
Добрый =) Ну, на самом деле довольно близко. А костыльность в разделителе. Слешей в passwd может быть разное количество, по нему не получится ориентироваться. А вот что является разделителем в passwd? Вот по нему уже куда точнее можно ориентироваться
А как вы решаете проблему баш-скриптов, когда, если команда завершилась с ошибкой, то скрипт всё-равно продолжает выполняться? Я вот как ни искал, так и не смог найти ничего подходящего: опции баша не работают в некоторых случаях, а библиотеку скриптов баш (которая вроде как работает в 100%) не вариант ставить на каждый линукс.
Можно использовать set -e, но с этим надо быть осторожнее. То что команды завершаются с ошибками зачастую нормально. В некоторых случаях надо ещё pipefail использовать Можно ещё использовать trap
@@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
эмм.. вы про передачу параметров в скрипты? можно аргументы передавать как $1 и т.п. либо делать export var, чтобы переменная попала скрипту, а дальше использовать эту переменную
да чтобы не привязывать в скрипт конкретного пользователя, я могу передать его с помощью аргумента при запуске скрипта ./script test1 test2 test3 $1 = test1 $2 = test2 $3 = test3
touch file touch script nano script #!/usr/bin/env bash read -p "inpunt" zxc echo $zxc > ~/file ctrl+x chmod +x script sudo ./script Проблема заключается в том, что ничего никуда не выводится, в чем может быть причина?
Проверь cat /root/file потому что ты запускаешь скрипт от рута (sudo), соответственно, файлик создаётся и заполняется в домашней директории (~/) рута. Или просто запусти без sudo
@@GNULinuxPro тоже самое, дело в #!/usr/bin/env bash, если я ее удаляю то все работает идеально, как только добавляю так ничего не работает, попробовал указать /bin/bahs и тоже ничего не работает, сижу гуглю в чем проблема
за этим всем будущее... самое интересное что на этих роликах сейчас 300 - 500 просмотров ... думаю еще лет 5 максимум и на таких роликах будет 3 - 5 миллиона просмотров!
Мужик, благодарю за твой труд.
спасибо, надеюсь полезно
Круто, спасибо мужик!
Спасибо! Видосы что надо 👍
хорошие ролики очень помогающие как новичкам так и другим людям которые о чем-то не знали(а так согласен с людьми которые просто на 1.5 скорость переключают ролик и слушают)
отличное полезное видео
Спасибо за видосы! :)
ты шикарен
ахахах
godnota!
Спасибо
Подскажите , пожалуйста, по какой логике работает cp /etc/sudoers{,.bkp} . Я читал про этот способ копирования файла, никак не пойму, как это работает(как шаблон регулярки в фигурных скобках, приписанный к имени файла обрабатывается командой CP, которая создает новый файл, при том что в общем случае синтаксис команды : CP_аргумент_что_ куда )?
file{1, 2} в случае с башем раскрывается как "file1 file2"
cp file{1, 2}
Будет
cp file1 file2
Соответственно
cp /etc/sudoers{,.bkp}
Будет
cp /etc/sudoers /etc/sudoers.bkp
То есть до запятой ничего нет, поэтому ничего не меняется, а после запятой .bkp, которые и добавляются ко второму значению
кажется я понял, эта регулярка раскладывается как : sudoers{,.bkp} = sudoers sudoers.bkp . Был бы третий элемент {,bkp,txt} : touch sudoers{,bkp,txt} = sudoers sudoers.bkp sudoers.txt
Спасибо!@@GNULinuxPro
добрый! 3е задание что-то подтормаживаю как вывести оболочку пользователя
можно использовать /etc/passwd но как получить нужные слова оттуда ,
grep $user /etc/passwd | awk -F"/" '{print $5}'
попробовал так 👆 но естественно это костыль который сработает только если повезет))
подскажите пж как сделать правильно или хотяб намек )
Добрый =)
Ну, на самом деле довольно близко. А костыльность в разделителе. Слешей в passwd может быть разное количество, по нему не получится ориентироваться. А вот что является разделителем в passwd? Вот по нему уже куда точнее можно ориентироваться
@@GNULinuxPro ну конечно же (:) ! А я чёт торможу.
Огромное спасибо!
А как вы решаете проблему баш-скриптов, когда, если команда завершилась с ошибкой, то скрипт всё-равно продолжает выполняться?
Я вот как ни искал, так и не смог найти ничего подходящего: опции баша не работают в некоторых случаях, а библиотеку скриптов баш (которая вроде как работает в 100%) не вариант ставить на каждый линукс.
Можно использовать set -e, но с этим надо быть осторожнее. То что команды завершаются с ошибками зачастую нормально. В некоторых случаях надо ещё pipefail использовать
Можно ещё использовать trap
@@GNULinuxPro Я это всё пробовал, но в некоторых случаях (напр. ошибка внутри
@@nikit4167 В случае с сабшеллами надо дополнительно наследование врубить - inherit_errexit
@@GNULinuxPro всё-равно не работает:
cat
@@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
интересный у тебя акцент. Ты не Туркмен случайно?
Нет =)
Не понятно, чтобы передать параметры в переменные нужно обязательно задавать переменные формата $1..$100 ?
эмм.. вы про передачу параметров в скрипты?
можно аргументы передавать как $1 и т.п.
либо делать export var, чтобы переменная попала скрипту, а дальше использовать эту переменную
@@GNULinuxPro я про то, что вы стерли $user и написали $1 вот я и пытаюсь понять в чем отличие ? или 1 2 3 это номер параметра по порядку?
да
чтобы не привязывать в скрипт конкретного пользователя, я могу передать его с помощью аргумента при запуске скрипта
./script test1 test2 test3
$1 = test1
$2 = test2
$3 = test3
touch file
touch script
nano script
#!/usr/bin/env bash
read -p "inpunt" zxc
echo $zxc > ~/file
ctrl+x
chmod +x script
sudo ./script
Проблема заключается в том, что ничего никуда не выводится, в чем может быть причина?
Проверь
cat /root/file
потому что ты запускаешь скрипт от рута (sudo), соответственно, файлик создаётся и заполняется в домашней директории (~/) рута.
Или просто запусти без sudo
@@GNULinuxPro тоже самое, дело в #!/usr/bin/env bash, если я ее удаляю то все работает идеально, как только добавляю так ничего не работает, попробовал указать /bin/bahs и тоже ничего не работает, сижу гуглю в чем проблема
Какой дистрибутив?
Вы точно указывали #!/bin/bash, или #!/bin/bahs ?
Покажите пожалуйста вывод
ls -l /bin/bash /usr/bin/env
@@MRRIBO а и ещё
sudo which bash env
-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
,👍➕🔔➕✍️➕➡️