linux
grep
grep 'first\|second\|third' file— grep по нескольким значениям. Значения разделяются экранированной прямой чертой\|:grep -o pattern file.log— показывать только подходящую часть строки, а не всю целикомgrep -v pattern file.log— инверсия матчинга. То есть искать то, что не подходит под шаблон- использовать регулярки для поиска
find
- вывести список всех типов файлов, присутствующих в каталоге
- найти и удалить файлы по расширению
- найти с использованием
regex find + grep: поиск фразы в файлах, лежащих внтури lang, из поиска исключить некоторые директории- поиск по размеру
- поиск по нескольким именам
du
# просмотр размера папки catalog
du -sh catalog
#просмотр размеров каталогов в текущей папке
du -sh *
# просмотр размеров каталогов в текущей папке c игнором каталога
du -sh --exclude=some_dir *
# сортировка по размеру от больших к меньшим
du -sh * | sort -rh
tar
tar -xzf file.tar.gz --strip-components=1— пропустить верхний каталог при извлечении
bash
sudo !!— повторение предыдущей команды отsudo- Очистка файла через
sudo -u - Создание функции-обёртки для вызова команды
~/.bashrc
# работа с composer, установленным в докере dcomposer () { docker compose -f /opt/my-site/docker-compose.yml exec -i php-fpm composer "$@" } ugit () { sudo -u www-data git "$@" } # completion (автодополнение) для ugit как для git source /usr/share/bash-completion/completions/git __git_complete ugit __git_main - массивы,
${values[*]},${values[@]}
install
Для создания каталогов можно использовать команду install с параметром -d.
Она позволяет указать владельца и группу для создаваемых каталогов.
# создание каталога
sudo install -d my-site -o www-data -g www-data
# создание пустого файла
sudo install -m 600 -o www-data -g www-data /dev/null empty-file.txt
ssh
Сперва необходимо сгенерировать ключ.
Потом публичную часть ключа необходимо скопировать на удалённый сервер.
Для копирования публичной части ключа удобно использовать утилиту ssh-copy-id.
Для удобства все команды запускаются внутри ~/.ssh.
ssh-keygen -t ed25519 -C 'Какой-то коментарий для ключа'
ssh-copy-id -i identity_key -p port user@ip
Проброс портов
Есть ssh доступ к машине, находящейся за vpn. Есть сайт/сервис внутри vpn, который недоступен для текущей машины, но доступен для машины, для которой есть ssh доступ. Можно использовать ssh туннелирование для доступа к закрытым ресурсам:
Либо через настройки ssh_config (тут параметры разделены пробелом)
Получить доступ к сайту some-site.inner, работающему по http, используя имеющийся ssh доступ к машине @ip
http://localhost:8080 откроется some-site.inner
Аналогично для https:
https://localhost:8043 откроется some-site.inner.
Браузер выдаст ошибку сертификата, необходимо согласиться продолжать работу.
less
Команды
С помощью + можно указать, какие команды выполнить после открытия.
Например, команда G открывает файл с конца.
less +G file.log— открыть файл с концаR(shift + r) — перечитать и перерисовать файлF— следить за изменением файла
Опции
Опции передаются через -S при вызове, либо нажатие -S в программе. Некоторые опции могут быть указаны только при запуске:
-Nотображать номера строк при запуске (на больших файлах сильно замедлит запуск)-Sпереключить перенос строк-Xпри отрисовке не очищать экран, а вставить ниже. Например, если содержимое файла небольшое, то less запустится сразу после prompt вместо очистки всего экрана. Удобно при использовании например для git log-Fавтоматически закрыть less если содержимое занимает меньше одного экрана. При установленном параметреSи слишком длинной строке не сработает — считается что содержимое не влезло в экран-xуказать длину таба (Tab stop)
sudo
- Запуск
sudo gitбез запроса пароля: - Запуск
gitот имениwww-dataбез запроса пароля:sudo -u www-data git status: - Подключение доп файлов в основном конфиге (символ
#обязательный) - Открытие нестандартного файла конфигурации
- Открытие
sudo vim, при этомvimиспользует конфиги текущего пользователя:
systemd
- Запуск одноразовых задач в фоне
# запуск долгой выгрузки в фоне. php работает в docker контейнере
systemd-run \
--unit=php-export-job \
--no-block \
--property=Type=oneshot \
docker exec --user www-data php-fpm php -f /var/www/scripts/run.php
# проверка статуса
systemd-run status php-export-job
Локали
Проверить настройки категории локали, отвечающей за формат числа
Обновить категорию локали глобально. Для применения необходимо перезайти
Часовые пояса
timedatectl— проверить установленную дату и часовой поясsudo timedatectl list-timezones— список часовых поясовsudo timedatectl set-timezone Europe/Moscow— установить часовой поясtimedatectl timesync-status,timedatectl status