BashMaster
8.26K subscribers
728 photos
19 videos
1 file
752 links
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов.

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Как узнать информацию о загруженности системы

Команда top покажет запущенные процессы. Но лучше установить улучшенную альтернативу htop с расширенной статистикой, например, загруженности каждого ядра.
👍11🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Что такое тильда ~

Знак ~ означает домашний каталог текущего пользователя. Это удобный способ быстро перейти в домашнюю директорию или в каталог внутри нее.

cd ~/Downloads
cat ~/.ssh/id_rsa.pub
👍15
This media is not supported in your browser
VIEW IN TELEGRAM
Как вывести содержимое нескольких файлов одной командой

Команду cat для вывода содержимого файлов можно использовать вместе с маской. Тогда команда выведет содержимое всех файлов, которые подходят под эту маску.

cat *.dat
cat logs/nginx*2022-11*.log
👍13
This media is not supported in your browser
VIEW IN TELEGRAM
Как следить за логами веб-сервера в консоли

Команда tail -f выводит в реальном времени новые строки, которые появляются в файле. Таким способом удобно следить, например, за логами веб-сервера.

tail -f /var/log/nginx/access.log
tail -f ./app/logs/2022-11-*.dat
👍23🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Как выполнить команду под другим пользователем

Команда sudo позволяет выполнять команды от имени другого пользователя системы. Добавьте флаг -u и укажите юзернейм необходимого пользователя, или опустите его, чтобы выполнить команду под root.

Это может быть полезно, например, если вам требуется подключиться к локальной БД или выполнить команду приложения из под веб-сервера.

sudo -u postgres psql
sudo -u www-data php artisan:warm-cache
sudo mv secret.txt /root/secret.txt
👍23
This media is not supported in your browser
VIEW IN TELEGRAM
Зачем нужна комбинация &&

С помощью && можно объединить выполнение нескольких команд. Но выполнение прервется, если какая-то команда завершится неудачно.

Например, вам требуется скачать файл-установщик и выполнить его. Выполнение не будет иметь смысла, если скачивание прервется.

curl -sS https://url-to-installer.com/installer.sh -o /tmp/installer.sh && /tmp/installer.sh
git commit -m "Fix" && git push
👍32
This media is not supported in your browser
VIEW IN TELEGRAM
Как быстро найти команду в истории

Наверняка вы знаете, что предыдущие команды консоли можно перебирать стрелками вверх-вниз.

Но если вам нужно найти давнишнюю команду только по каким-то обрывкам слов, нажмите Ctrl + R и введите в консоль часть слова, чтобы вывести последнюю команду с искомым вхождением этой строки. Каждое последующее нажатие ищет следующую команду в истории.
🔥43👍13
This media is not supported in your browser
VIEW IN TELEGRAM
Как отфильтровать вывод предыдущей команды и зачем нужен pipe |

Bash во многом удобный инструмент именно благодаря своей возможности передавать результаты команд между друг-другом. Как раз для этой цели используется | (pipe, канал, конвеер).

Самый простой пример – отфильтровать вывод лога nginx, чтобы показать только запросы к определенному URL. Выводим содержимое файла с cat, фильтруем с помощью grep:

cat access.log | grep api/users
cat access.log | grep 02/Dec
cat access.log | grep api | grep 172.17.0.1
👍22🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
Как разбить команду на несколько строк

Если при вводе команды поставить знак \ (обратный слеш), то при переводе строки вы сможете продолжить написание команды.

Полезно, например, если вы хотите красиво отформатировать команду с большим количеством аргументов и отправить сниппет коллеге.

cd /app \
&& mkdir var \
&& cp .env.dist .env
👍32🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Зачем использовать симлинки

Символическая ссылка – это специальный файл, который на самом деле не содержит данных, а является указанием реального местоположения другого файла или папки.

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

Например, создать такую ссылку можно командой:
ln -s /data/uploads /app/public/uploads

Приложение обращаясь к загрузкам в папке ./public/uploads фактически будет обращаться к /data/uploads.
👍37🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Фигурные скобки в аргументах

С помощью фигурных скобок можно быстро размножить аргументы по шаблону. Например создать несколько файлов, изменить расширение, вывести последовательность:

echo {a..z}
touch {01,02,05..10}_data.txt
mv .env{.example,}
🔥29👍15
This media is not supported in your browser
VIEW IN TELEGRAM
test для быстрой проверки условий

Когда неохота писать условную команду if для выполнения короткого действия воспользуйтесь test с условными связками && и ||.
Например, создать файл, если его еще нет:

test -f ./etc/nginx.conf || touch ./etc/nginx.conf


Если вы используете проверку И, то не забудьте в конце дописать || true, иначе test оборвет ваш скрипт с провалом:

test "$RESULT" && echo "Success" || true
🔥20👍11👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Сортировка в консоли

Интуитивным перебором можно найти команду консоли почти на любой случай жизни.

Отсортировать файл можно конечно же командой sort. С флагом -r сортировка произойдет в обратном порядке.

Кстати можно сортировать еще и вывод через конвеер |.

sort data.txt
./app fetch-names | sort
👍22🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Как сохранить вывод команды в файл

Вывод любой консольной команды можно перенаправить в файл. Для этого используйте модификаторы >> чтобы добавить результат в конец файла и >, чтобы перезаписать файл.

sort data.txt > sorted.txt
cat nginx/access.log | grep 127.0.0.1 >> filtered_by_ip.log
👍32🔥6👎1
This media is not supported in your browser
VIEW IN TELEGRAM
TAB для автодополнения

Если во время ввода названия файла или папки в команде вы нажмете TAB, то консоль допишет искомое название.

Но TAB также умеет дополнять любые аргументы: подкоманды, названия веток, контейнеров, ssh хостов и так далее. Поэкспериментируйте сами.

Вообще autocomplete для различных команд можно устанавливать, поэтому если TAB для вашего приложения не сработал – попробуйте поискать нужный пакет автодополнений для этой программы.
👍19🔥5👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Как увидеть команды, которые выполняются внутри bash скрипта

Иногда хочется понять, правильно ли вы написали скрипт, или отлаживаете CI/CD джобу. Но как увидеть, какие именно команды выполняются, какие переменные передаются и так далее?

В этом вам точно поможет встроенная функция set -x. Все команды, которые будут идти после выполнения set -x будут отображены в консоли.

Эту функцию можно вызывать как в самом начале скрипта, так и окружить ей необходимый участок: set -x / set +x
👍36🔥20
This media is not supported in your browser
VIEW IN TELEGRAM
Калькулятор в консоли

Вы можете вычислять математические выражения в bash, если заключите их в комбинацию $(( )). Значение можно сразу вывести, записать в переменную или использовать еще как угодно.


echo $((2 * (30 - 19) / 5))
MATH=$((2**8 + 1))
👍41🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Парсниг JSON в консоли

Если вам требуется просто спарсить единственное поле объекта JSON, полученного например из API-эндпоинта, тогда вы можете обойтись sed.

Если же нужно, предположим, выбрать определенный ключ массива вложенного в глубину объекта, используйте утилиту jq (документация). Как минимум, jq выведет ваш JSON отформатированно и в цвете.
🔥22👍10👎1
Какой ваш уровень знаний в bash?
Anonymous Poll
76%
Начинающий
20%
Продвинутый
4%
Профессионал
Шпаргалка по Bash для начинающих

Часто забываете команды bash или другие возможности оболочки? Мы нашли для вас полезную статью-шпаргалку.

В ней вы найдёте шпаргалки на такие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.

Забыли, открыли, вспомнили и продолжили работу 👌
🔥22👍10