Test Engineering Notes
3.81K subscribers
177 photos
2 videos
648 links
Україномовний канал про технічні аспекти тестування, розподілені системи, блокчейн.

Консультації з автоматизації, менторинг, тестові співбесіди - @al8xr
Download Telegram
Шпаргалка по Linux command line

#testing #linux

На работе мне частенько приходится коннектиться по ssh к удаленным машинам и работать там без графического интерфейса. Поэтому знание командной строки очень помогает.

Решил тут поделиться своей шпаргалкой по командной строке Linux, а также книгой по этой теме.
Тут только базовые вещи, никакого излишнего хардкора.

А какие команды вы используете чаще всего?
🔥9👍3
Cheatsheet команд Linux

#linux #tools

Доброго ранку.
Знайшов для вас підбірку основних команд Linux. Можна проглянути та знайти ті, про які ви ще не чули.
А можна залишити в якості швидкого довідника.

Всім вдалого та продуктивного дня!
👍181
Працюємо з декількома сессіями з командою screen

#scripting #bash #linux

Задача
Треба запустити N вузлів з різними вхідними параметрами, портами та ін. Для кожного вузла підготований власний shell-скрипт.

- Можна робити це вручну, в різних табах терміналу.
- Можна - запускати та відправляти процеси в бекграунд.

А можна - за допомогою команди screen.
Ця команда дозволяє переключатись між різними окремими сессіями в терміналі (наприклад коли вам треба запустити якісь процеси в рамках однієї SSH сессії). Доволі зручно.

#!/bin/bash
nodes=("a" "b" "c" "d" "e")

for node in "${nodes[@]}"; do
screen -dmS $node bash -c "~/scripts/${node}.sh; exec bash"
echo "Started ${node} node"
done
echo "Nodes have been started in separate screens."

Прибрати усі наявні скріни можна наступним скріптом:

#!/bin/bash
active_sessions=$(screen -ls | grep -o '[0-9]\+\.')

for session in $active_sessions; do
screen -S "${session%?}" -X quit
done
echo "All screen sessions have been terminated and closed."
👍11👏2
Незрозумілі Bash скрипти (та команди) - та що з цим робити

#scripting #linux

Задача: Що робити, коли з вами поділились корисною складною cmd командою або скриптом - а ви не розумієте, як вона працює?
Щось типу
git log --graph --abbrev-commit --pretty=oneline origin..mybranch


Рішення:
- Можна, авжеж, й далі вважати себе маглом та думати, що це магія поза зоною вашого розуміння. (привіт, синдром самозванця!)
- Можна запитати в автора та попросити розповісти (тут треба мати прокачані soft skills)
- Можна запитати в ChatGPT (nice!)
- А можна скористатись досить непоганим сервісом explainshell де вам розберуть кожну команду та параметр.
👍322🥱1
Легке покращення командної стрічки вже сьогодні

#testing #cmd #linux

Задача
В повсякденній роботі мені потрібно працювати з багатьма різними інструментами з комадної стрічки. Час від часу нові версії інструментів з'являються та я забуваю, де яка версія лежить. Плюс - багато інструментів потрібно використовувати з зазделегідь прописаними параметрами на вході.

Що хотілося б?
Мати можливість викликати інструменти короткими командами та не паритись, де конкретно ці інструменти лежать.

Рішення
Я скористався старими добрими alias'ами (псевдонімами) в Linux. Це можливість створити нові команди на основі старих, або навіть комбінації декількох команд.
Наприклад, для Git це може бути
git st
замість
git status -sb
. Або ж
some-cli 
замість
 docker exec container-name some-cli

Як зробити?
1. Створити файл ~/.bash_aliases та покласти усі псевдоніми туди. Щось типу:
alias ls='ls --color=auto'
2. Додати інформацію про новий файл до ~/.bashrc
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

P.S. Потрібно слідкувати за версіями інструментів та своєчасно оновлювати їх.
P.P.S. Можна робити псевдоніми для Git команд прямо в його конфігурації
git config --global alias.co checkout
👍122
Про історію команд в консолі

#cmd #linux

В повсякденній роботі я багато користуюся командною стрічкою. Для того, щоб не робити нескінченний копіпаст одних і тих самих команд, можна застосувати декілька базових хитростей з історією.

1. Подивитись минулі команди стрілочкою вгору (але то буває надто довго)

2. Подивитись історію за допомогою команди history

history
...
2000 ls
2001 cat contractlog.json
2002 ls
2003 ll
2004 history

// виконати команду знову - !N, де N - номер команди зі списку
!2001

// шукати в історії команди також можливо
history | grep search


Важливо. Кільксть збережених команди в історії обмежена. Конфігурувати цю кількість можна за допомогою змінної HISTSIZE=1000.

3. Виконати пошук команди за допомогою reverse search
- Натисніть Ctrl+R в консолі
- Введіть частину команди
- Оберіть те, що потрібно та натисніть Enter для запуску. Або ж стрілку вправо для того, щоб внести правки в команду
- Якщо ж знайшли не те - повторіть пошук знову з Ctrl+R

 2001  cat contractlog.json 
2002 ls
2003 ll
2004 history
(reverse-i-search)`cont': cat contractlog.json
cat contractlog.json


Можна шукати за допомогою інших інструментів, але про них - наступного разу.
24👍12🔥3🫡1
Про brace expansion в linux

#linux #cmd

Уявімо, що вам потрібно створити декілька файлів чи тек зі схожими назвами.

Можна робити так
mkdir -p test/data/chrome test/data/firefox test/data/safari

А можна застосувати так штуку, як brace expansion
mkdir -p test/data/{chrome,firefox,safari}

що в результаті буде мати той же самий ефект - створить три теки з різними назвами.

Можна мати декілька expansions
> echo test/{1,2,3}/data/{5,6,7}
> test/1/data/5 test/1/data/6 test/1/data/7 test/2/data/5 test/2/data/6 test/2/data/7 test/3/data/5 test/3/data/6 test/3/data/7

Виглядає прикольно, але є ще більше "магії".

Наприклад вам треба створити 10 тестових файлів зі з порядковими номерами в назвах, але щоб ці номери ще й були з інтервалом в 10
touch file-{0..100..10}.txt

ls file*
file-0.txt file-100.txt file-10.txt file-20.txt file-30.txt file-40.txt file-50.txt file-60.txt file-70.txt file-80.txt file-90.txt
36👍14
Робимо свою базу даних за допомогою інструментів Linux

#linux

Коротка, але дуже цікава стаття про те, як можна створити базу даних за допомогою нативних інструментів Linux - grep, cut, awk, sort, head, tail та join.
👍13😁21