Linux для Начинающих - Скрипты Linux Bash, Часть-2
HTML-код
- Опубликовано: 26 авг 2024
- Использование связки
IF-ELIF-ELSE-FI
Использование CASE
Циклы FOR с коммандой Linux
Циклы FOR с цифровым промежутке
Циклы FOR как в С, C++, Java
Циклы WHILE
Буду рад паре баксов, можно даже Канадских :) www.paypal.me/...
Спасибо!
Спасибо тебе огромное за поддержку!
@@ADV-IT Спасибо и Вам за такой курс. Только что сдал экзамен 750/800.
@@user-mp7zp3hc5p Круто поздравляю!
Более быстрого курса по программированию ещё не видел) 2 видео это рекорд
Посмотрел "секретное", часовое видео с обучающих курсов по скриптам bash и не понял практически ничего. Но после просмотра ваших двух видео у меня полностью открылись глаза на скрипты! Спасибо вам огромное!
Рад что помог
Если бы только одно " "секретное", часовое видео ", а то их(видео) десятки просмотренных часовых и более видео - у продвинутых ГУРУ....И эффект NULL)))))) А тут 10 мин, все получается с первого раза и в голове полное ОК!)))) Спасибо за ОТЛИЧНЫЕ Уроки!!
@@sergewhynot7306
дай плз линк на одно из таких видео, которое ты смотрел. хочу оценить.
дай плз линк на это часовое видео, которое ты смотрел. хочу оценить его.
То чуство, когда в универе ничего не понял, а здесь за 2 уроки всё. Спасибо) С меня подписка)
Чувак! Я 2 дня не мог разобраться как из строки данные через маркеры записывать. Люто плюсую! Уроки пушка
Вы просто супер. Всё доступно, благодаря вам - написал необходимые скрипты в универ.
Огромное спасибо за курс. Очень интересно. Ваш стиль обьяснения очень нравиться: просто, с юмором, без заумностей. Очень легко воспринимается.
Очень нравится. Хорошая подача материала, как будто в реале с человеком общаюсь!
Контент который никогда не устаревает)))
Спасибо за видео. Перед очередным занятием(на иврите), просматриваю ваши видео. Так легче заходит материал.
Спасибо Вам за ваше время и желания помочь другим!
Супер, кратко и по делу, но с пояснениями, что к чему. Большое спасибо!)
Дениска Ты Лучший.
Никого не слушай.
Люблю твои уроки, Люблю твою интонацию и акцент особенно когда добавляешь слова на иврите.
Бэкицур - ТОДА РАБА!!!
Здорово👏✊👍. Благодарю, Денис. Так классно изучать с тобой, все эти вещи! 🎉
самое то , объясняет четко и с юмором все оки , красава .
Отличные уроки! :)
Спасибо!
@@ADV-IT
19:55
а вы не забыли поставить ";;" в двух строчках для CASE????
вы раздолбай)
@@manOfPlanetEarth нет
@@ADV-IT
что "нет"?) а в видео тогда зачем ";;"?)
@@manOfPlanetEarth Всё что в видео работает отлично. Так что ничего там не забыл.
Скрипты напоминают Паскаль, который в школе учили. Это так же можно написать на скрипте банальный калькулятор 😂
пересматриваю второй раз
и только после курса основ програмирования понял скрипти =)
Всё оч круто. Но самое главное ждал: как хранить функции в отдельных файлах и юзать их в основном скрипте. Но всё равно спасибо. Хороший подход к изложению. Грац!
Свои функции можно хранить в файле .bashrc
Спасибо! Благодаря вам полюбил Linux...
Уроки отличные, как и весь канал Дениса. Огромное спасибо!
П.С
Странно, что никто не заметил. При вводе Trump в myscript3.sh, вывод должен был быть Hello Trump.
Я немного подправил. Кстати он у нас теперь мистер.
Ну и Петю приветствуем на чатлано-пацакском языке, что бы было понятно что это из второго аргумента прилетело.
#!/bin/bash
if [[ $1 == 'Vasya' ]]; then
echo "Privet $1"
elif [[ $1 == 'Trump' ]]; then
echo "Hello mr.$1"
else
echo "Zdorovo $1"
fi
read -p "Enter the number:" x
echo "Starting CASE selection..."
case $x in
1) echo "This is one";;
[2-9]) echo "Two-Nine";;
'Petya') echo "Ky $x";;
*) echo "Parameter is not defined"
esac
Потому что в редакторе не Trump a Trupm)
Подача просто космос)) в благодарность подпишусь
на пайтоне все намного проще, синтаксис легче, но после пайтона суть написанных скриптов я уловил и уже легче в освоении, спасибо Денис
сейчас бы питон с bash сравнивать...
@@user-nn8le4fq5i qotagimdi jemesh
После C# вообще - Хэтьфу!
6:41 Трамп стал TrupM))))
Денис, огромное тебе спасибо за курс! Да прибудет с тобой сила!!!
Кстати, на 11:22 цикл "for" работает и без `ls *.txt`:
#!/bin/bash
for myfile in *.txt; do
cat $myfile
done
Зачем ты сделал с ls? Может есть какие то случаи, для которых это нужно?
И ещё, на 17:11 ты объявляешь перед функцией глобальную переменную summa=0. Я убрал эту строчку и скрипт всё равно работает. То есть переменные, объявленные внутри функций в Bash всегда являются глобальными?
UPD: Кароч нагуглил, шо если нужна локальная переменная в теле функции, то перед именем переменной нужно дописать слово local. Например: local summa= .
спасибо
о как! параметра -p для команды read ещё не знал) спасибро!
Денис! Ты - бог)) все супер понятно и весело😁 для начинающих то что нужно👍
Я не пойму зачем тебе bash
Ruslan Volovik так не думай об этом
Ну тут стало не очень понятно что для чего и за чем , но автор молодец усмотрел все видео подряд
Немного расстроился когда автор в первом скрипте так и не исправил опечатку "Trupm"
Да ладно, главное понятно объясняет)))))
@@olabo5097 Ну да, объясняет интересно : )) Хотя справидливости ради замечу что некоторые темы раскрыты не полностью.
Да так как он написал trump то он вывел ошибку с ответом zdarova
Уже не страшно...))
Like ОГРОМНЫЙ , спасибо большое, искал эту простую инфу целый час
прошел год+ )
что с линуксом и скриптами в итоге?
Спасибо, очень доступно, но с Trump ошиблись немного в порядке букв
Спасибо большое за урок было очень полезно!!!!
Спасибо! Спасибо! Спасибо! Отличная подача!
Дякую за уроки!
Спасибо ❤
Так круто!!!! Коротко та Ясно!!!!!!!
"чо у меня тут зеленое?" ))))))))))) Афтаротбога! Все ясно, понятно и с юморком )
Спасибо! 💕даже такой тупой как я становится понятно
UNIX старая классика! Но изложена здесь неплохо на простом и понятном всем рус. яз.
уроки очень крутые !!! Спасибо
Выходит все переменные в BASH имеют глобальную видимость. В powershell, например, переменные внутри функции по умолчанию живут только в теле функции.
Спасибо!
Спасибо за поддержку!
Очередное супер и спасибо
ZDAROVA TRAMP))))
Вопрос по переменной summa в функции, мы ее явно не возврящали, но она оказалась видна вне функции, получается что любые переменные фунций не изолированы.. Как то такой подход bash не совсем труе с точки зрения программирования или есть нюанс?
Спасибо большое, очень полезно
Если я правильно все понял то поидее можно написать скрипт который автоматически запустится если совпадет к примеру служебный параметр по входу учетной записи с определенным ником, или не определенным, а по списку чтоб проверял и искал совпадения как с буквами А_z
Или с определенным ip
Добрый день, а вот как можно будет выбрать сразу несколько строк. Допустим взять многострочный комментарий из файла. Что в таком случае нужно будет сделать?
я понял почему питон=)
спасибо!
Денис сделайте, пожалуйста отдельным курсом, ряд уроков по Bash скриптам !!! :)
Да там всё просто, в этих двух уроках все основы есть
@@ADV-IT Спасибо за ответ Денис и конечно за все уроки !:)
В четвёртой здесь строчке скрипта у меня написано Petya и так всё работает, т.е. выводит Privet Petya. Но это я убрал с Petya кавычки. С кавычками ("Petya") у меня выводится Parameter unknown, sorry, т.е. воспринимает как пятую строчку скрипта (*) echo "Parameter unknown, sorry"). В видео у автора Петя в кавычках и всё равно Privet Petya. Вопрос: у нас по-разному работает из за разницы дистрибутивов (Ubuntu vs CentOS) или из за разных версий bash?
case $x in
1) echo “This is one”;;
[2-9]) echo “two-nine”;;
Petya) echo “Privet $x”;;
*) echo “Parameter unknown, sorry”
esac
Хрен его знает
Огромное спасибо за "вводный курс" очень многие пробелы заполнились, но остались-таки пара вопросов. Есть (в качестве образца) рабочий скрипт, который содержит в себе tar файл, распаковывает его во временную папку, пользуется его содержимым и по окончании удаляет его. И более простой вопрос: как с пом. скрипта раскомментировать необходимую строку в конф.файле? Буду очень признателен за ответ(ы).
команда *sed* тебе поможет
www.cyberciti.biz/faq/how-to-use-sed-to-find-and-replace-text-in-files-in-linux-unix-shell/
@@ADV-IT опять же спасибо))
Вот вопрос такой, а можно чтоб функция выходной параметр записывала в название файла по схеме с $0 ?????
Составил следующий скрипт:
#!/bin/bash
read -p "Enter your Exam points: " x
echo "AAAAAAAAND....."
case $x in
[1-59]) echo "You are NOT pass the Exam";;
[60-100]) echo "You are PASS the Exam";;
*) echo "Exam points undefined"
esac
При вводе от 1 до 5 пишет правильный ответ, при вводе 6 пишет, что "You are PASS the Exam", при вводе остальных чисел выдает "Exam points undefined"
.
Где накосячил? Не могу понять.. Help!
Попробуй $x в кавычки "$x" и поставь точку+запятая в конце *) echo "Exam points undefined"
@@ADV-IT попробовал и так, и так, и вместе - результат тот же... даже пробовал задавать иксу определенное значение (х=...), но без толку. Такое ощущение, что он не хочет именно [1-59] и [60-100] корректно читать..
@@ADV-IT такая же ошибка 😢
@@paulruru8665 судя по описанию свич реагирует на цифры а не числа. Ну тогда все кроме первого разряда не имеет значение
@@paulruru8665
case $x in
[1-9]|1[0-9]|[2-5][0-9]) echo "Exam Failed with mark $x";;
[6-9][0-9]|100) echo "Exam Passed with mark $x";;
*) echo "Exam Mark undefined $x";;
esac
Главное вовремя)))
Я теперь Башист)))
Денис, а на сколько пользуется популярностью линуксовый powershell? Тебе известны случаи его применения в прод средах?
Не видел чтобы его использовали, на линуксе все bash.
Синтаксис жесткий
Почему при параметре Трамп у вас выдает здарова, вместо хеллоу? Сделал у себя все по видео, выдает как надо при параметре трап выдает привет, при дургом здарова, как так?
Денис опечатался и в скрипте написал Trupm вместо Trump, поэтому скрипт повёл его по пути else ))
Денис с
кажи а как ты сам учишь? На каких сайтах ты смотришь что как пишется?
Самый клевый канал для обучения это ruclips.net/user/thenewboston
А так я по книжкам в основном учил все.
Скажи, а в Израиле сильно помогает сертификация AWS? Просто я базово знаю Java Spring Hibernatе. Но этого все еще недостаточно уже пол года не могу найти работу. Вот думаю линукс чтуть подучить и AWS может б ты что то посоветовал?
Мне помогли эти сертификаты, после двух я сразу нашел работу в Петах-Тикве как Solutions Architect /DevOps AWS
При этом у меня не было опыта в AWS
А если знаешь питон, можно его вместо баша использовать, или это абсолютно разные по назначению вещи? Просто синтаксис баша, как по мне, так себе, даже return нету.
Bash тут будет чуть важнее
функции в сценарном языке? хм, странное решение. ..
Не сценарный
А вот как на счёт простой задачи: пользователь вводит символ математической операции +-* или /, а мы проверяем, правильный ли симол ввёл пользователь?
Ну так попробуй сделай, проверяй ввод пользователя через IF или через CASE
Это очень просто
слушай а бэш скрипты это на каком языке программирования мы пишем или они так и называются условно?
Так и называются bash, скрипты Linux
Денис, привет!
Подскажи пожалуйста как лучше/удобнее/практичнее писать скрипты на linux? С помощью bash или все же python? Где то видел, что из под python можно и параметры передавать и команды линуксовые выполнять.
Что лучше в итоге? :) и что ты используешь для автоматизации в рамках DevOps?
А вообще есть куча вопросов про DevOps, куда можно написать и поспрашивать (если можно)? Сейчас работаю администратором в одном известном банке России, хочу квалифицироваться в DevOps инженера.
Заранее спасибо!
Я пишу и так и так, Python тоже не у всех установлен.
Практичнее писать на Python конечно, тоже самое работает на Windows и на Linux.
Но Bash тоже штука хорошая.
Вот только вчера писал скрипт который копирует AWS ECR Docker Images с одного региона на другой, всё на bash + awsci
Не могу понять в case если загнать в квадратную скобку 10(вместо 9 как на видео) т. е [1-10]) скрипт игнорирует параметр 10, почему? Извиняюсь заранее за тупой вопрос, учусь.
[ $COUNTER -ln 10] это значит меньше чем 10 -ln -> less than
[ $COUNTER -le 10] это значит меньше или равно 10 -le -> less than or equal
Вот документация www.tldp.org/LDP/abs/html/comparison-ops.html
Привет, можешь подсказать с такой задачей Bash, есть в каталоге /usr/test/ файл test.doc (есть и другие но нужен только он , мне нужно перенести файл в каталог /usr/local/backup/и положить не просто в этот каталог а в такую-же папку где лежал файл , через find нашел файл , а как с него достать название директории, не выходит. Что бы было после переноса /usr/local/backup/test/test.doc
Если запускать из /usr/test/ то так:
mkdir -p /home/denis/backup/$(basename $(pwd)); mv test.doc /home/denis/backup/$(basename $(pwd))/
@@ADV-IT find /usr/test/-type f -name "*.tar.bz2" потом найти basename $(dirname /usr/test/test.doc) думал как то так сначало найти все архивы, и через exec найти выполнять задачу, но не вышло
@@Levinsite Я показал начало, дальше ты сам
@@ADV-IT я разобрался , спасибо
Сложный для начинающих был урок)
Денис, спасибо за урок. В конце видео дан скрипт с результатом экзамена (пасхалочка). Не смог его запустить. Текст был скопирован полностью, но скрипт не запустился. Пытаюсь понять, где ошибка, можешь подсказать?
В невнимании
Если у меня всё работает и у тебя всё должно работать, перепроверь, где-то что-то пропустил.
@@ADV-IT Спасибо! Пересмотрел. Запустил, нашёл проблему.
у меня for с cat myfile что то не сработал, хоть и все точь в точь написал...=(
видать не в точь в точь
myOS=uname -a
echo "My OS = $myOS"
На федоре чего-то ничего не выводит.
Никто не знает почему ?
myOS=$(uname -a)
или
myOS=`uname -a`
не подскажите пожалуйста, почему не получается засунуть 2 функции в один скрипт?
Засовывается и 100 функций
#!/bin/bash
function one() {
echo "Hello from Function-1"
}
function two() {
echo "Hello from Function-2"
}
one # call function one
two # call function two
пытался сделать на последней версии и выдало ошибку(
На любой версии будет таже ощибка, ищи её
А как в modaXterm отключить дисконнект от сервера при простое терминала? А то пишу скрипт, не сохранил и прога предлагает снова подсоединиться. Или это Амазон делает?
Погугли
@@ADV-IT а это кто такие?)
@@Alex_La www.google.com
@@ADV-IT это шутка была)
А если у самого скрипта будут входные аргументы, то как быть с аргументами функции?
Значит используй аргументы входные как аргументы функции
Там нумерация независима. Ну если ты передаёшь в скрипт 2 параметра var1 и var2 и хочешь чтобы функция внутри скрипта их сложила то функцию надо вызывать примерно так : Myfunction $1 $2 . А внутри функции ничего не меняется
О и потом названия файлов чтоб меняясь заставляли скрипт заново срабатывать уже для других условий функций ниже или циклов. Чет типо того:))
Сложно!!!!
я программировал на сиси плюсплюсе
Децл опечатка: "$1"=="Trupm"
и как оно тогда сработало, если с ошибкой написано. я щас чуть не сломался пока думал
А оно и не сработало. написало ЗДАРОВА, но Трампу писать нужно хелло
Это хуже php
unexpected eof while looking for matching
Про оператор case вообще не понятно !
#Линукс для гопников
почему в примерах нет путина!??? это дискриминация по рассовому признаку!!! петя есть дональд есть , а володьки нет - нипарядог!!!
Да и хрен с ним, с лилипутиным ))))))))))))))))))
Слишком много касяков для тутора((
Это больше похоже на понты, чем на урок. Смотрите как я могу.
Могу! и других научить хочу чтобы тоже могли.
Надеюсь. Главное самому разобраться детально. Тут не школа, когда можно 5 раз объяснить и самому понять. Если что, то это только к этому уроку комментарий.
Я когда учил, всегда смотрел несколько видео от разных чуваков, так получаешь несколько примеров и все становится супер понятно.
гвнина
Все так плохо?
Люди добрые, подскажите, пожалуйста, что со мной не так?(
Вроде переписал код с примера, но у меня почему-то не работает. Буду очень благодарен за помощь!
#!/bin/bash
x=62
case $x in
[1-59]) echo "Exam Failed with mark $x"
[60-100]) echo "Exam Passed with mark $x"
*) echo "Exam Mark undefined $x"
esac
Ошибка:
./script.sh: line 5: syntax error near unexpected token `)'
./script.sh: line 5: ` [60-100]) echo "Exam Passed with mark $x"'
Попробовал даже добавить ;; после каждого case:
#!/bin/bash
x=62
case $x in
[1-59]) echo "Exam Failed with mark $x";;
[60-100]) echo "Exam Passed with mark $x";;
*) echo "Exam Mark undefined $x";;
esac
И тут неожиданный результат:
Exam Mark undefined 62
Я что-то ничего не понимаю... Почему такой результат? Должно ведь выводить Exam Passed with mark 62 по идеи и нужно ли добавлять ;; после каждого case или нет?
Прошу прощения за такую статью, но я уже который час под ряд не могу понять...
Bash Range не понимает цифры напрямую, поэтому нужно разкладывать вто такL
#!/bin/bash
x=62
case $x in
[1-9] | 1[1-9] | 2[1-9] | 3[1-9] | 4[1-9] | 5[1-9]) echo "Exam Failed with mark $x";;
6[0-9] | 7[0-9] | 8[0-9] | 9[0-9] | 100 ) echo "Exam Passed with mark $x";;
*) echo "Exam Mark undefined $x";;
esac
@@ADV-IT А ведь говорили мне мама, чтобы я был гуманитарием... Спасибо большое за ваши труды и помощь! Вы самый лучший преподаватель! Здоровья Вам и всего наилучшего!
бля все бы хорошо но у меня уши загибаются от неправильного произношения и ударения, зря я русский и английский на 100 баллов сдавал по егэ
Так, а эти скрипты- это что? Есть язык джава, там скрипты, есть пайтон, вы еще сказали что в нано можно писать на пайтон. А это что за скрипты в вашем видео?
Линукс скрипты на Bash