Programming, electronics, lifestyle

16 Apr 2020

Заметка по работе с Bash

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

Перенаправления и pipe

| - передача аргумента
> – передача вывода команды в новый файл или перезапись существующего файла
>> - передача вывода команды в новый файл или дозапись с конца

Стандартный вывод команды происходит с числом 1, вывод ошибок с числом 2. Выводы перенаправлять в разные файлы отдельно.

2>&1 – перенаправляет вывод ошибки на стандартный вывод, поэтому они появляются вместе и могут быть совместно перенаправлены в файл.
2>1 – перенаправит вывод ошибки в файл с именем 1, а не в стандартный вывод 1.

Источники:

Параллельное исполнение в Bash

nohup - запускает с игнорирование потери связи с пользователем (при выходе пользователя из системы все будет продолжаться в фоновом режиме)

Источники:

Полезные ссылки

  • Изменение значения окружения указывающей на разделение списка f-notes.info
  • Хороший справочник по встроенным командам bash losst.ru
  • bash awk habr.ru
  • bash uniq (удаление повторов строк) linux.org.ru
  • разница return and exit stackoverflow
  • Вывод echo \r losst.ru
  • переменные окружения env, $SHELL, $EDITOR unix1.jinr.ru
  • firewall gui centos – system-config-firewall

Отладка программ

  • strace - системные вызовы
  • ltrace - трейсить вызовы из SO
  • ldd - посмотреть зависимые библиотеки

Поиск

# вывод логов содержащих строку `Aug  8 16:`
grep 'Aug  8 16:' aug8_daemon.log  > aug8_16hour_daemon.log

grep user /etc/mysql/my.cnf

# вывод номера строки
# -i – регистронезависимый поиск
grep -bi 'user' /etc/mysql/my.cnf

# вывести строки не содержащие не начинающиеся на #
grep -v '^#' /etc/mysql/my.cnf

Источники:

Проверка версии Debian

cat /etc/os-release
> lsb_release -a

No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.1 (stretch)
Release:        9.1
Codename:       stretch

Копирование с exclude

rsync -av --progress * --exclude sakis_install.sh
sudo cp -r * -i sakis_install.sh

Добавление прав для выполнения sudo

usermod -a -G sudo artem

Очистить history

cat /dev/null > ~/.bash_history && history -c && exit

Источник:

Screen

virt / virsh

# virsh commands
virsh list --all
for i in $(virsh list --name); do virsh shutdown $i; done
virsh start <servername>
virsh vol-list --pool libvirt_vg
virsh vol-delete /dev/libvirt_vg/<backup-machine> --pool libvirt_vg
virsh blockresize <backup-machine> --path /dev/libvirt_vg/<backup-machine> --size 115343360k

lsblk -p
lvresize -L+50G /dev/libvirt_vg/<servername>
lvs
lvs --units k
pvs
virsh blockresize <servername> --path /dev/libvirt_vg/<servername> --size 167772160k

# Resetting Virtual Machine Settings (unconfigure)
virt-sysprep
virt-configure

Пакетный менеджер apt и dpkg

# Мощное удаление всего что можно APT
sudo apt-get remove lxde-common lxde-icon-theme omxplayer x11-common midori lxde python3 python3-minimal

# Удаление всех файлов связанных с `x11`
sudo apt-get remove $(sudo dpkg --get-selections | grep -v "deinstall" | grep x11 | sed s/install//)

# Удаление всех файлов связанных с `audio`
sudo apt-get remove $(sudo dpkg --get-selections | grep -v "deinstall" | grep audio | sed s/install//)

# Удаление неиспользуемых пакетов
sudo apt-get autoremove

Управление установленными репозиториями – файл /etc/apt/sources.list

# Посмотреть какому пакету принадлежит файл
sudo dpkg -S FILE

# Посмотреть какие файлы принадлежат пакету
sudo dpkg -L ros-kinetic-catkin

Название вкладки

image