Как писать Bash-скрипты прямо в браузере
Три онлайн-редактора для Bash: Rextester, MyCompiler и LeetCode. Можно запускать код, работать с временными файлами и делиться результатом.
Фото: Daniil Komov / Pexels
Фото: Emre Karademir / PexelsЗдесь собраны все публикации блога Bashdays — заметки про Linux, DevOps и айтишные технологии.
Три онлайн-редактора для Bash: Rextester, MyCompiler и LeetCode. Можно запускать код, работать с временными файлами и делиться результатом.
Фото: Daniil Komov / PexelsИспользуем filefrag, sync и dd, чтобы найти physical_offset файла, прочитать его напрямую с блочного устройства и проверить удалённые данные.
Фото: FOX ^.ᆽ.^= ∫ / PexelsСобираем ctypes.sh, компилируем разделяемую библиотеку на C и вызываем её функции из Bash через dlopen и dlcall.
Фото: Jakub Zerdzicki / PexelsИщем фрагменты удалённого crontab на диске через grep, восстанавливаем задания и добавляем защиту crontab -i и ежедневную резервную копию.
Фото: Mikhail Nilov / PexelsКороткий авторский техномем о Bash, Linux и спокойствии разработчика за терминалом.
Фото: Jakub Zerdzicki / PexelsПрактический Bash-скрипт для отправки текстовых сообщений и файлов пользователю или в групповой чат через MAX Bot API. Разбираем параметры запуска, загрузку вложений, формирование JSON через jq и антифлуд-задержку.
Фото: Darina Belonogova / PexelsЛичный опыт переноса shell-скрипта с Linux на OPNsense и BSD. Разбираем различия csh и sh, перенос строк, особенности date и awk, отсутствие /dev/shm и набор консольных редакторов.
Фото: Brian Jesus / PexelsРазбираем, почему Flask возвращает Not Found при проксировании приложения через location /app в Nginx. На конкретной конфигурации показываем, как завершающий слэш в proxy_pass меняет путь запроса и устраняет ошибку маршрутизации.
Фото: Sérgio Souza / PexelsПрактический минимум Git для DevOps-инженера без погружения в редкие команды и сложную теорию. Разбираем clone, pull, commit, push, checkout, ветки и типичный рабочий процесс с GitLab или GitHub.
Фото: Daniil Komov / PexelsПроверяем через strace, как Nautilus определяет тип файла по расширению или содержимому. Создаём файл с сигнатурой BZ2, наблюдаем системные вызовы openat и read, а затем сравниваем поведение после добавления расширения txt.
Фото: Eva Bronzini / PexelsНастраиваем direnv для автоматической загрузки и выгрузки переменных окружения при переходе между каталогами проектов. Устанавливаем hook для Bash, разрешаем .envrc и проверяем изоляцию переменной FOO на практике.
Фото: Arina Krasnikova / PexelsНастраиваем личный SOCKS5-прокси через SSH без доступа пользователя к shell и SFTP. Ограничиваем аккаунт в sshd_config, запускаем динамический проброс порта и подключаем Firefox с передачей DNS-запросов через прокси.
Фото: Holger Schué / Pexels