Меню Закрыть

Полезные команды bash

Заметка содержит набор команд, который бывают полезны при работе в консоли

grep – поиск текста

# Исключить строки, содержащие подстроку
grep -v "substring" filename.txt

# Вывести только искомый фрагмент
grep -o "substring" filename.txt

# Искать по регулярному выражению
grep -P "\d+" filename.txt

# Подсветить найденный фрагмент
grep --color "substring" filename.txt

# Рекурсивный поиск по всем поддиректориям
grep -r "substring" *

# Не выводить имя файла при поиске по файлам
grep -h "substring" *.txt
# или
grep --no-filename "substring" *.txt

tail – вывод последних строк файла

Для примера будем использовать файл, содержащий 20 строк

cat filename.txt
Показать
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Вывести 5 последних строк
tail -n 5 filename.txt
# или
tail -n5 filename.txt
# или
tail -5 filename.txt

# Вывести файл, начиная с пятой строки
tail -n +5 filename.txt

# Следить за файлом и выводить по мере добавления новых строк, например, за файлом лога
tail -fn0 filename.txt

# Следить за файлом и выводить по мере добавления новых строк, если на момент вызова команды еще нет файла
tail -Fn0 filename.txt
# Вывести первых 5 строк
head -n 5 filename.txt
# или
head -n5 filename.txt
# или
head -5 filename.txt

# Вывести все строки с начала, за исключением 5 последних
head -n -5 filename.txt

sed

# Удалить пустые строки
cat filename.txt | sed '/^$/d'

git

# Удалить тег локально
git tag -d <tag>

# Удалить тег в удаленном репозитории
git push origin :refs/tags/<tag>

# Второй способ удалить в удаленном репозитории
git push --delete origin <tag>

GPG

# Создать GPG ключ
gpg --full-generate-key

# Просмотр ключей
gpg --list-keys

# Экспортировать приватный ключ в файл export.gpg
gpg -o export.gpg --armor --export-options backup --export-secret-keys 4907A111A483CB6B3C4E894E7C8CD3E06FEB83C8
# или с указанием идентификатор
gpg -o export.gpg --armor --export-options backup --export-secret-keys gpg@example.com

# Импортировать ключ из файла export.gpg
gpg --import-options restore --import export.gpg

# Установка доверия ключа в не интерактивном режиме, например, после импорта
echo -e "5\ny\n" | gpg --command-fd 0 --expert --edit-key 4907A111A483CB6B3C4E894E7C8CD3E06FEB83C8 trust

# Подтвердить все ключи в не интерактивном режиме
for fpr in $(gpg --list-keys --with-colons  | awk -F: '/fpr:/ {print $10}' | sort -u); do  echo -e "5\ny\n" |  gpg --command-fd 0 --expert --edit-key $fpr trust; done

# Сжать и зашифровать директорию
tar -czf - folder | gpg -e -r 4907A111A483CB6B3C4E894E7C8CD3E06FEB83C8 > folder.tar.gz.gpg

# Распаковать зашифрованный архив
gpg --decrypt folder.tar.gz.gpg | tar -xzf -

# Удалить секретный ключ
gpg --delete-secret-keys 4907A111A483CB6B3C4E894E7C8CD3E06FEB83C8

# Удалить открытый ключ
gpg --delete-keys 4907A111A483CB6B3C4E894E7C8CD3E06FEB83C8

Другие примеры работы с GPG

Управление пользователями и группами

# Создать пользователя и домашнюю директорию
useradd --create-home username

# Добавление текущего пользователя в группу
sudo usermod -a -G <название группы> $USER

docker

# Получить entrypoint образа
docker inspect -f '{{.Config.Entrypoint}}' <image id>

# Получить тип операционной системы
docker version --format '{{.Server.Os}}'

# Получить платформу
docker version --format '{{.Client.Arch}}'

# Размер лога контейнеров
sudo du -h $(docker inspect --format='{{.LogPath}}' $(docker ps -qa))

# Тип системного драйвера логов
docker info --format '{{.LoggingDriver}}'

# Тип драйвера лога контейнера
docker inspect -f '{{.HostConfig.LogConfig.Type}} {{.Name}}' $(docker ps -qa)

systemd

# Валидация времени для таймера
systemd-analyze calendar --iterations 5 "*-*-* *:00/5"

# Вывод всех таймеров
systemctl list-timers --all

Манипуляции с переменными

# Перевести в верхний регистр
"${VAR^^}"

# Перевести в нижний регистр
"${VAR,,}"

# Заменить первый символ a на b
"${VAR/a/b}"

# Заменить все символы a на b
"${VAR//a/b}"

Разное

# Загрузить переменные окружения из файла
set -o allexport; source .env; set +o allexport

# Установить время модификации файла
touch -m -t $(date +%Y%m%d%H%M) filename

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии