Useful Tools | Linux | GitOps | DevOps
5.67K subscribers
133 photos
1 video
7 files
647 links
Полезные бесплатные opensource инструменты на все случаи жизни, а иногда и советы.

Понравился проект из поста - поддержи автора звездой!

Автор: @dmitry_malinin
Web: https://gitgate.d3.ru

Сотрудничество: @maxgrue
Обсуждение: @gittalk
Download Telegram
Совет дня:

Немного полезных CLI команд в bash про повторение аргументов.

!^      first argument
!$ last argument
!* all arguments
!:2 second argument

!:2-3 second to third arguments
!:2-$ second to last arguments
!:2* second to last arguments
!:2- second to next to last arguments

!:0 the command
!! repeat the previous line


публиковано в @gitgate

#tips #bash #cli
👍36🔥12
Совет дня:

Работающий почти везде visual bell для включение в bash скрипты, например для индикации окончания какого то этапа.

printf '\e[?5h'; sleep 0.2 ; printf '\e[?5l'


опубликовано в @gitgate

#tips #bash
👍26🔥8
Совет дня:

Простая арифметика прямо в CLI для bash

echo $((2+2*4))  


публиковано в @gitgate

#tips #bash #cli
🔥15👍10
bunster - скомпилируйте сценарии оболочки bash в статические двоичные файлы.

Вы когда-нибудь хотели, чтобы ваши сценарии оболочки были быстрее, портативнее и безопаснее? Bunster воплощает это в жизнь, преобразуя ваши сценарии оболочки в эффективные автономные двоичные файлы, которые легко распространять и развертывать на разных платформах (на данный момент поддерживается только Unix) .

В отличие от других инструментов, Bunster не просто оборачивает ваши сценарии в двоичный файл - он компилирует их в эффективный машинный код, используя мощную цепочку инструментов Go. Это обеспечивает производительность, портативность и надежность.

Технически говоря, Bunster на самом деле является shell-to-Go транслятором, который генерирует исходный код Go из ваших скриптов. Затем при необходимости используется Go Toolchain для компиляции кода в исполняемую программу.

https://github.com/yassinebenaid/bunster

опубликовано в @gitgate

#bash #go #binary #compiller
👍14🔥12
bashtop - монитор ресурсов, который показывает использование и статистику процессора, памяти, дисков, сети и процессов.

Возможности:
-простота в использовании, система меню, вдохновленная игрой.
- быстрый и отзывчивый пользовательский интерфейс с выбором процесса клавишами ВВЕРХ и ВНИЗ.
- функция отображения подробной статистики выбранного процесса.
- возможность фильтровать процессы.
- легкое переключение между вариантами сортировки.
- отправка SIGTERM, SIGKILL, SIGINT выбранному процессу.
- меню пользовательского интерфейса для изменения всех параметров файла конфигурации.
- график автоматического масштабирования для использования сети.
- показывает сообщение в меню, если доступна новая версия
- показывает текущие скорости чтения и записи дисков.
- несколько методов сбора данных, которые можно переключать при работе в Linux.

https://github.com/aristocratos/bashtop

опубликовано в @gitgate

#bash #cli #tui #top
🔥7👍6
Совет дня:

Показать в bash длину массива

echo $#<array>[@]

или если совсем правильно

echo ${#arrayname[@]}


Пример:

--> ARRAY=("one" "two" "three")
--> echo $ARRAY
one two three
--> echo $#ARRAY[@]
3


опубликовано в @gitgate

#tips #bash
👍28🔥10
Совет дня:

Как в bash удалить повторы из массива

<uniques>=($(echo "${<array>[@]}" | tr ' ' '\\n' | sort -u | tr '\\n' ' '))


Пример:

--> ARRAY=("one" "one" "two" "two" "two" "one" "three")
--> UNIQUES=($(echo "${ARRAY[@]}" | tr ' ' '\\n' | sort -u | tr '\\n' ' '))
--> echo $UNIQUES
one three two

улучшенный вариант от Ивана Гришина - @JohnMcGru

UNIQUES=( $(printf "%s\n" "${ARRAY[@]}" | sort -u ) )
echo "${UNIQUES[@]}"
###one three two

и правильнее, и короче
внутри скобочек VAR=(...) можно оставлять переводы строк

VAR=( it
  is
  OK
)
echo "${VAR[@]}"

опубликовано в @gitgate

#tips #bash
👍19🔥16
Совет дня:

Или bash Default values

Частенько требуется в bash скрипте указать значение переменной по умолчанию, например если не задано прямо.. Однако не все так просто...

Краткий списочек с описанием логики.


# bash one liner                                
# --------------

x="foo" && echo "${x:-bar} (x = $x)"
# foo (x = foo)

x="" && echo "${x:-bar} (x = $x)"
# bar (x = )

unset x && echo "${x:-bar} (x = $x)"
# bar (x = )

x="foo" && echo "${x-bar} (x = $x)"
# foo (x = foo)

x="" && echo "${x-bar} (x = $x)"
# (x = )

unset x && echo "${x-bar} (x = $x)"
# bar (x = )

x="foo" && echo "${x:=bar} (x = $x)"
# foo (x = foo)

x="" && echo "${x:=bar} (x = $x)"
# bar (x = bar)

unset x && echo "${x:=bar} (x = $x)"
# bar (x = bar)

x="foo" && echo "${x=bar} (x = $x)"
# foo (x = foo)

x="" && echo "${x=bar} (x = $x)"
# (x = )

unset x && echo "${x=bar} (x = $x)"
# bar (x = bar)

x="foo" && echo "(x = $x)" && echo "${x:?error message}"
# (x = foo) foo

x="" && echo "(x = $x)" && echo "${x:?error message}"
# (x = ) bash: x: error message

unset x && echo "(x = $x)" && echo "${x:?error message}"
# (x = ) bash: x: error message

x="foo" && echo "${x:+bar} (x = $x)"
# bar (x = foo)

x="" && echo "${x:+bar} (x = $x)"
# (x = )

unset x && echo "${x:+bar} (x = $x)"
# (x = )

опубликовано в #gitgate

#tips #bash
🔥17👍10
fly-to-podman - небольшой BASH скрипт, который помогает вам мигрировать из Docker в Podman.

Он переносит ваши контейнеры, образа и мапленные каталоги Docker в Podman, а также сохранить данные и конфигурации вашего контейнера (маунты, порты и т. д.).

Возможности:

- миграция образов Docker в Podman (включая теги)
- миграция мапленных каталогов (volumes) Docker в Podman (включая все данные)
- миграция сетей Docker в Podman (включая имена, IP-адресе, шлюзы, IP-диапазоны и т. д.)
- миграция контейнеров Docker в Podman (включая имена, идентификаторы и статусы, такие как политика перезапуска и т. д.)
- сохранение данных и конфигурации контейнера (маунты, открытые порты и т. д.)

https://github.com/Edu4rdSHL/fly-to-podman

опубликовано в @gitgate

#docker #podman #bash #converter
👍15🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Bashly - генератор кода и Bash CLI Framework

Bashly - приложение командной строки CLI (написанное на Ruby), позволяющее создавать многофункциональные инструменты командной строки bash.

Bashly позволяет вам сосредоточиться на конкретном коде, не беспокоясь об анализе аргументов командной строки, текстах использования, сообщениях об ошибках и других функциях, которые обычно обрабатываются фреймворком в любом другом языке программирования.

https://github.com/DannyBen/bashly

опубликовано в @gitgate

#bash #cli #ruby
👍8🔥5
Совет дня:

Условные выражения для файлов в bash

## True if file exists.
[[ -a ${file} ]]

## True if file exists and is a block special file.
[[ -b ${file} ]]

## True if file exists and is a character special file.
[[ -c ${file} ]]

## True if file exists and is a directory.
[[ -d ${file} ]]

## True if file exists.
[[ -e ${file} ]]

## True if file exists and is a regular file.
[[ -f ${file} ]]

## True if file exists and is a symbolic link.
[[ -h ${file} ]]

## True if file exists and is readable.
[[ -r ${file} ]]

## True if file exists and has a size greater than zero.
[[ -s ${file} ]]

## True if file exists and is writable.
[[ -w ${file} ]]

## True if file exists and is executable.
[[ -x ${file} ]]

## True if file exists and is a symbolic link.
[[ -L ${file} ]]


PS. в линукс все есть файл или поток :)

PPS. И переменные окружения.


опубликовано в @gitgate

#tips #bash
👍38🔥13
Совет дня:

Условные выражения для строковых переменных в bash

# True if the shell variable varname is set (has been assigned a value).
[[ -v ${varname} ]]

# True if the length of the string is zero.
[[ -z ${string} ]]

# True if the length of the string is non-zero.
[[ -n ${string} ]]

# True if the strings are equal. = should be used with the test command for POSIX conformance. When used with the [[ command, this performs pattern matching as described above (Compound Commands)
[[ ${string1} == ${string2} ]]

# True if the strings are not equal.
[[ ${string1} != ${string2} ]]

# True if string1 sorts before string2 lexicographically.
[[ ${string1} < ${string2} ]]

# True if string1 sorts after string2 lexicographically.
[[ ${string1} > ${string2} ]]



опубликовано в @gitgate

#tips #bash
👍31🔥10
Совет дня:

Арифметические операции в bash

# Returns true if the numbers are equal
[[ ${arg1} -eq ${arg2} ]]

# Returns true if the numbers are not equal
[[ ${arg1} -ne ${arg2} ]]

# Returns true if arg1 is less than arg2
[[ ${arg1} -lt ${arg2} ]]

# Returns true if arg1 is less than or equal arg2
[[ ${arg1} -le ${arg2} ]]

# Returns true if arg1 is greater than arg2
[[ ${arg1} -gt ${arg2} ]]

# Returns true if arg1 is greater than or equal arg2
[[ ${arg1} -ge ${arg2} ]]

# As with other programming languages you can use AND & OR conditions:
[[ test_case_1 ]] && [[ test_case_2 ]] # And
[[ test_case_1 ]] || [[ test_case_2 ]] # Or



опубликовано в @gitgate

#tips #bash
👍15🔥10
semaphore - современный Web UI интерфейс для Ansible, Terraform, OpenTofu, PowerShell, bash и других инструментов DevOps.

WebUI Semaphore позволяет:
- легко запускайте сценарии Ansible, код Terraform и OpenTofu, а также скрипты Bash и PowerShell.
- получатm уведомления о невыполненных задачах.
- eправлятm доступом к вашей системе развертывания.

Ключевая концепция:
- проекты это совокупность связанных ресурсов, конфигураций и задач.
- шаблоны задач это многократно используемые определения задач, которые могут выполняться по требованию или по расписанию.
- задача это конкретный экземпляр задания или операции, выполняемой semaphore.
- расписания позволяют автоматизировать выполнение задач в указанное время или через определенные интервалы.
- инвентари это набор целевых хостов (серверов, виртуальных машин, контейнеров и т. д.), на которых будут выполняться задачи.
- группа переменных относится к контексту конфига

https://github.com/semaphoreui/semaphore

Демо: https://portal.semaphoreui.com/

опубликовано в @gitgate

#webui #ansible #terraform #opentofu #powershell #bash
👍19🔥14
Rundeck - программное обеспечение с открытым исходным кодом, которое помогает автоматизировать рутинные операционные процедуры в центрах обработки данных или облачных средах.

Rundeck предоставляет ряд функций, которые облегчат трудоемкую рутинную работу и позволят вам легко масштабировать усилия по автоматизации и создавать самообслуживание для других. Команды могут сотрудничать, чтобы делиться тем, как автоматизируются процессы, в то время как другим доверяют просмотр операционной деятельности или выполнение задач.

Rundeck позволяет вам запускать задачи на любом количестве узлов из веб-интерфейса или интерфейса командной строки. Rundeck также включает другие функции, которые позволяют легко масштабировать ваши усилия по автоматизации, включая: контроль доступа, построение рабочего процесса, планирование, ведение журнала и интеграцию с внешними источниками для данных узлов и опций.

https://github.com/rundeck/rundeck

Документация: https://docs.rundeck.com/docs/

опубликовано в @gitgate

#webui #ansible #powershell #bash
👍10🔥9
xan - инструмент командной строки CLI, который можно использовать для обработки CSV файлов непосредственно из bash.

Он позволяет легко просматривать, фильтровать, разбивать на части, объединять, сортировать и объединять CSV файлы, а также предоставляет большой набор составных команд, которые можно объединять в цепочку для выполнения широкого спектра типичных задач.

xan также использует свой собственный язык выражений, чтобы вы могли выполнять сложные задачи, которые невозможно выполнить, полагаясь на самые простые команды. Этот минималистичный язык был адаптирован для данных CSV и намного быстрее, чем оценка типичных динамически типизированных языков, таких как Python, Lua, JavaScript и т. д.

xan можно использовать для отображения CSV файлов в терминале для удобства исследования и даже для создания простых визуализаций данных.

https://github.com/medialab/xan

опубликовано в @gitgate

#csv #bash #cli
👍23🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
shell-secrets - небольшой bash скрипт для хранения переменных среды окружения в зашифрованном виде (с помощью GPG) в виде файлов и атоматического дешифрования при использовании.

Простой, но полезный скрипт для чтения секретных значений из зашифрованных файлов и в то же время для упрощения входа и выхода из разных учетных записей.

https://github.com/waj/shell-secrets

опубликовано в @gitgate

#bash #vars #gpg #cli
👍23🔥7
self-instruction - самоучитель bash по материалам бесплатного курса от многоуважаемого @Tagd_Tagd

В материалах рассмотрены множество практических примеров применения bash, но не забыта и теория и, самое ценное, алгоритмические подходы... Каждый пример детально разбирается с пояснениями и альтернативными вариантами решения.

Рекомендуется для самостоятельного неторопливого изучения.

На сегодняшний момент курс успешно завершен, но не исключено что скоро начнется новый набор, не пропустите.. Анонс будет и в @gitgate

https://github.com/tagd-tagd/self-instruction

опубликовано в @gitgate

#bash #cources #knoweledgebase
🔥30👍18
timertab - простой способ создания, удаления и управления таймерами Systemd из bash скрипта

https://github.com/amlamarra/timertab

опубликовано в @gitgate

#systemd #timer #cron #bash
👍12🔥6