Идеальный скрипт на bash | Bash ideal script
HTML-код
- Опубликовано: 25 авг 2024
- Телеграмм-канал про python и не только t.me/+b7-UPCwN...
Репозиторий с кодом скрипта gitlab.com/ane...
Опрос stackoverflow 2022 survey.stackov... , вкладка Professional Developers. Исторический экскурс в популярность гита в разное время в телеграмм t.me/vestnik_i...
Мой bash конфиг gitlab.com/ane... . Внимание функции set_prompt для формирования приглашения командной строки и переменной Last_Command, где сохраняется результат вычисления последней команды.
Хорошее видео про if в bash: • Never say "If" writing...
Спецсимволы в bash unix.stackexch...
Подробнее о разнице ; && || как разделителях unix.stackexch...
PS: починил звук, теперь пишу на Recording Tools MCU-01 вместо тапка
Просто шикарно. Никогда информация не заходит в голову так же хорошо, как через практику. Спасибо за видео, жду следующих выпусков!
Тут важно сесть и самому такую работу проделать над своим скриптом. Потому что на практике это сложнее, чем кажется
Фантастически понятно. Огромное спасибо !
Очень рад, что вам понравилось
Кто ты, воин?! 😮😮
Где самореклама или хотя бы приветствие/прощание? За 20 минут было ли хотя бы одно лишнее слово? Как добиться такого же уровня конструктивности и лаконичности?! Ты вообще человек?)
Привет тебе, и спасибо за добрые слова :)
Когда используется [[]] можно не брать переменные в кавычки. И ещё в этом случае можно использовать вместо -ne. Но это уже не posix, и если нужна обратная совместимость, лучше не использовать. В общем, я к чему. Тут либо на [] поменять можно, либо "" убрать
Прямо сейчас в процессе записи видео, где поясняю, почему надо [[ и не надо [, и ещё почему лучше -lt, чем <
А кавычки в баше лучше всегда пихать, даже когда они могут быть не нужны
@@MrAnetto интересно, ждём.
с улучшением качества звука и фиксом мерцаний сверху стало заметно приятнее, поставил три лайка какгрица
Что ещё интересного рассмотреть? Принимаю заявки
@@MrAnetto магические методы в python
@@dull7084 и метатаблицы в lua)
Странно это читать если учитывать тот факт, что это самое первое видео на канале
Для проверки правильнее ведь использовать флаг -d, который проверяет только на наличие папки с таким именем. В остальном видео супер)
Если не существует такого каталога, то надо потом всё равно проверять существование файла. При этом пользователю можно писать разное сообщение об ошибках, это да
спасибо, как раз для такой обезьяны как я
привет. У меня к вам одна просьба, если можно?
?
Видимо это и была просьба)
Привет.Можешь помочь со скриптом.Я пытаюсь написать скрипт на bash или perl который шифрует текстовый файл (хотя бы просто ксорит содержимое файла) и не получается.Perl для этого больше приспособлен но тоже не получается - всё время спотыкаюсь на нечитаемых символах
\b и так далее.В итоге у меня не получилось а было очень нужно вы итоге взял и быстренько написал это на C но часто возвращаюсь к этому скрипту и всё равно не выходит.Смысл такой: в терминале запускаем прогу (скрипт) с аргументом например 75 (число) и скрипт должен сделать xor со всеми байтами из файла.Должно получиться например файл до шифрования был 395 байт и после он должен быть тоже 395 но содержимое прочитать не возможно
Привет! В примере 75 - это число, с которым надо xor сделать?
В баш так себе с бинарными файлами. Но посмотрю, что можно сделать
@@MrAnetto да 75 это число с которым нужно делать xor
🤔mkdir {1..10}
Про это говорится на 5:25. Плюс за ещё более интересными практиками загляните в наш бесплатный курс на степике cli-for-dev, командная строка для разработчиков
Для тех кто не знает, но использование подобных операторов (предназначенных в большей мере строковым сравнениям) как -lt и ему подобных не является оптимизированным решением особенно для циклов. Взяв например разницу в переменную total от переменной start и end в конструкции которых будет содержатся $(date +%s%N), зациклим тело и сравним
: > test
i=1
while (( $i < 1000 )); do
start=$(date +%s%N)
if (( 1 < 3 )); then echo l; fi
end=$(date +%s%N)
total=$(( $end - $start ))
echo $total >> test
i=$(( $i + 1 ))
done
awk 'NR == 1 || $1 < min {min = $1} END {print min}' test
изменив тело условия в цикле на упрощенный оператор который используется в основном для строковых сравнений то получим ощутимую разницу в наносекундах. У меня было с числовым минимальная разница 585841 и со строковым 661532 наносекунд. К сожалению скрипт не идеален. Ищу тех кто знает больше(
Ну или например традиционный scp и cat используя ssh, преимущественно быстрее выполняет cat + ssh
600 000 наносекунд == 0.0006 секунды. Представленная вами разница в пределах погрешности измерений. Более того, если вам важны 10% скорости, то, возможно, bash не подходящий инструмент) собственно, однострочник типа mkdir {1..30} будет быстрее if. Но в видео же речь про поддерживаемость кода, а не скорость выполнения. Повторяюсь, возьмите Си и будет в сотни раз быстрее
@@MrAnetto Несомненно разница в скорости не столь велика, я лишь подчеркнул почему стоит делать так, а не иначе, ну и касательно "к сожалению скрипт не идеален" это не оскорбление, а отсылка "всем не угодишь", поэтому идеальных скриптов нет, ведь найдется тот кому не понравится. Если у вас есть источники информации по нетрадиционным методам работы bash, я бы с радостью черпнул информацию, так как я занимаюсь сборками Linux и внедряю в организации. Касательно Си, конечно хороший выбор в скорости выполнения необходимых задач, можно было бы спуститься ниже, но тем не менее нужен многолетний опыт для того чтобы не допустить уязвимость в собственном решении, к сожалению таковой опыт у меня отсутствует (
@АлексКорякин , всегда рад дискуссии. Если будет время, запишу видео про корректный замер времени выполнения, как я его вижу.
Что под нетрадиционными способами имеете в виду? У меня есть базовый курс по введению в Линукс для разработчиков stepik.org/course/169291/promo
Там основы, на мой вкус, наиболее полезные для старта
писать можно что угодно и сколько угодно без гита) и пишется Без гита. а для хранения строчек кода и используется гит. но видос шикарен
По stackoverflow developer survey 2023, 97% разработчиков используют git. А не пользуются системой контроля версий вообще менее 1.5% разработчиков
@@MrAnetto знаете,мне как то все равно на рейтинги,они аще никакого смысла в отрыве от контекста не имеют. мое сообщение- я могу писать код и для этого мне не нужен гит. мне нужны совсем другие инструменты,IDE например. код и гит- это параллельные технологии. я это имел в виду. а цыфры-это просто набор символов
@@MrChelovek68, а ещё без IDE можно писать код. Но так почти никто не делает, потому что с IDE быстрее, удобнее и эффективнее. Аналогично с git - это инструмент, без которого работать современному разработчику странно. Можно рыть яму руками, а не лопатой. Но зачем?
Для большей совместимости, кстати, лучше использовать такой шебанг:
#!/usr/bin/env bash
Только для питона такое встречал, для базовых штук типа bash или sh не видел, чтобы кто-то так делал. В какой ситуации баш не будет по этому пути, при этом env будет?
а еще лучше which bash