==================================================================================== === Раскрашивание man: ==================================================================================== # sudo apt-get install most echo 'export MANPAGER="/usr/bin/most -s"' >> ~/.bashrc ==================================================================================== === Перечитать .bashrc без перезагрузки системы: ==================================================================================== # source /path/to/.bashrc ==================================================================================== === Vim в качестве редактора mc по умолчанию: ==================================================================================== # echo 'export EDITOR=vim' >> ~/.bashrc ==================================================================================== === Создание нового пользователя: ==================================================================================== # adduser username ==================================================================================== === Добавление пользователя в группу sudo: ==================================================================================== # usermod -aG sudo username ==================================================================================== === Автозапуск приложения в debian: ==================================================================================== # echo 'exec awesome' >> ~/.Xsession ==================================================================================== === Применение настроек xterm: ==================================================================================== # xrdb -merge .Xresources ==================================================================================== === Просмотр списка шрифтов: ==================================================================================== # fc-list ==================================================================================== === Просмотр конфига без комментариев: ==================================================================================== # cat config_filename | grep -vE "^#|^$" ==================================================================================== === Копирование файла some_file на удаленную машину remote_host в каталог /remote/directory: ==================================================================================== # scp /directory/some_file user@remote_host:/remote/directory ==================================================================================== === Для инициализации сетевого интерфейса, отличного от lo, на перенесенной (в моем случае после использования p2v- или v2v-программ) виртуальной машине, нужно открыть /etc/udev/rules.d/persistent-net.rules и закомментировать/очистить/удалить его. === ==================================================================================== ==================================================================================== === Чтобы не показывать ошибки, которые выводятся в терминал при выполнении команды, нужно сделать перенаправление вывода STDERR: ==================================================================================== # find / -name core 2> /dev/null ==================================================================================== === Вывод только необходимой части файла: ==================================================================================== # cut -d: -f7 < /etc/passwd В примере записано следующее: отобразить содержимое седьмой колонки файла /etc/passwd, где в качестве разделителя используется двоеточие. ==================================================================================== === Вывод размера файловых систем и общего размера хранилища данных: ==================================================================================== # df -h --total ==================================================================================== === Изменить месторасположение базы данных locate: ==================================================================================== # locate -d (/var/lib/mlocate/mlocate.db по умолчанию) ==================================================================================== === Ограничить вывод команды locate: ==================================================================================== # locate -l 5 passwd (выводит 5 подходящих записей) ==================================================================================== === Разбить файл split.zip на файлы (по умолчанию каждый состоит из 1000 строк и начинается с символа "x"): ==================================================================================== # split split.zip ==================================================================================== === Однострочный man с поддержкой wildcards: ==================================================================================== # whatis -w 'ab*' ==================================================================================== === Изменить выводимые знаки препинания (здесь вместо ":" выводятся "#"): ==================================================================================== # grep "/bin/bash" /etc/passwd | cut -d':' -s -f1,6,7 --output-delimiter='#' ==================================================================================== === Просмотр установленных http-соединений: ==================================================================================== # watch -n 0.5 "netstat -ano | grep -v unix | grep ESTABLISHED | grep :80" ==================================================================================== === Удалить огромный файл (когда падает "rm"): ==================================================================================== # > /path/to/file.log ==================================================================================== === Решение проблемы с задержкой при логине через shh: ==================================================================================== # echo 'useDNS no' >> /etc/ssh/sshd_config (?) ==================================================================================== === Apache при перезапуске пишет, что не смог определить fqdn: ==================================================================================== # echo 'ServerName server_name' >> /etc/apache2/apache2.conf ==================================================================================== === Копирование файлов без изменения атрибутов: ==================================================================================== == Для того, чтобы при копировании у файлов не изменялись их атрибуты: хозяин, группа, права доступа и т.д., при выполнении cp надо использовать опцию -p. Но если копируются файлы нескольких пользователей, эту опцию может использовать только пользователь root. == ==================================================================================== === Просмотр mail-логов с подсветкой email-адресов: ==================================================================================== # vi -c "set ft=mail" /var/log/maillog ==================================================================================== === Изменение сетевых интерфейсов linux: ==================================================================================== # sudo vi /etc/udev/rules.d/70-persistent-net.rules == Нужно изменить значения полей NAME="eth0" на, к примеру, NAME="eth1" или что-то иное. == ==================================================================================== === Каждый read в bash читает одну строку из файла. Кажись. === ==================================================================================== ==================================================================================== === Использование кавычек в bash-сценарии: ==================================================================================== # a=$(ls -la $HOME) echo "$a" - кавычки позволяют сохранить оригинальный формат вывода ls -la. Без них вывод будет текстом без форматирования. ==================================================================================== === Запись загрузочного образа на флешку: ==================================================================================== # dd if=~/desktop/debian.iso of=/dev/sdb oflag=direct ==================================================================================== === Так как форматирование флешки после dd не является тривиальной задачей, то вот: ==================================================================================== # mkfs -t ntfs /dev/sdb == Или так: == # mkfs -t vfat -I /dev/sdb ==================================================================================== === Сменить дефолтное ядро при загрузке: ==================================================================================== == update-grub нужен для перечитывания новых данных в загрузчике. После этого можно редактировать /boot/grub/grub.cfg (за это можно палец отрезать. Редактироваться должен другой файл, но я не помню, какой (кажися, это /etc/default/grub). Вот так вот.) == ==================================================================================== === Ошибка с локалью, которая появляется при каждом чихе: ==================================================================================== # locale-gen sudo dpkg-reconfigure locales ==================================================================================== === Копирование из vim без мыши: ==================================================================================== # vim --version == Здесь должен присутствовать модуль clipboard (+ - ок, - - не ок). Можно либо пересобирать vim, либо установить графический vim, типа vim-gnome. == # echo 'set clipboard=unnamedplus' >> ~/.vimrc == Копирование в системный буфер обмена происходит через 'y' == ==================================================================================== === Создать пустой файл: ==================================================================================== # > filename ==================================================================================== === Установить новый truetype-шрифт: ==================================================================================== # sudo mkdir /usr/share/fonts/truetype sudo cp newfont /usr/share/fonts/truetype sudo fc-cache -fv ==================================================================================== === Просмотреть список открытых файлов: ==================================================================================== # lsof ==================================================================================== === Создать сжатый архив: ==================================================================================== # tar -cvzf examples2.tar.gz examples2 ==================================================================================== === Передача файлов без ftp или scp: ==================================================================================== == Получатель: == # nc -l -p 1234 | uncompress -c | tar xvfp - == Отправитель: == # tar cfp - /some/dir | compress -c | nc -w 3 [destination] 1234 ==================================================================================== === Использование pv при архивации: ==================================================================================== # tar -czf - . | pv -s $(du -sb | grep -o '[0-9]*') > out.tgz ==================================================================================== === Добавить звук из командной строки (для сервера ALSA): ==================================================================================== # amixer set Master playback 3+ amixer set Master playback 3- ==================================================================================== === Vim в качестве просмотрщика man-страниц: ==================================================================================== # echo 'export MANPAGER="/bin/sh -c "col -b | vim -c 'set ft=man ts=8 nomod nolist nonu noma' -""' >> ~/.bashrc ==================================================================================== === Создание скриншота с задержкой с помощью imagemagic: ==================================================================================== # sleep 10; import -window root MyScreenshot2.png ==================================================================================== === Создание каталога по ssh: ==================================================================================== # ssh user@192.168.0.1 'mkdir ~/backups/hello_from_kvms' ==================================================================================== === Сделать возможным открытие некоторых типов файлов с помощью gnome-commander: ==================================================================================== # vi ~/.local/share/applications/mimeapps.list [Default Applications] image/x-apple-ios-png=eog-usercreated.desktop eog-usercreated.desktop [Desktop Entry] Name=eog MimeType=image/x-apple-ios-png; Exec='/usr/bin/eog' Type=Application Terminal=false NoDisplay=true # vi ~/.local/share/applications/mimeinfo.cache [MIME Cache] image/x-apple-ios-png=eog-usercreated.desktop ==================================================================================== === Настройка сетевого интерфейса: ==================================================================================== # vi /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 gateway 192.168.1.1 ==================================================================================== === Убрать windows-like переносы строк: ==================================================================================== # dos2unix filename ==================================================================================== === Поиск IP-адреса: ==================================================================================== # ^(?:[0-9]{1,3}.){3}[0-9]{1,3}$ ==================================================================================== === .bashrc не применяется при логине в консоль: ==================================================================================== == Нужно создать файл .profile в домашнем каталоге пользователя со следующим содержимым: == # vi ~/.profile if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi mesg n ==================================================================================== === Просмотр версии пакета в репозитории: ==================================================================================== # apt-cache policy package_name ==================================================================================== === Освободить tcp-порт: ==================================================================================== # sudo fuser -k 443/tcp ==================================================================================== === Поиск и сортировка каталогов по занимаемому ими месту на диске: ==================================================================================== # du -m /some/path | sort -nr | head -n 20 du -cksh * ==================================================================================== === Редактировать crontab другого пользователя: ==================================================================================== # sudo crontab -e -u www-data ==================================================================================== === Копировать файл в подкаталог: ==================================================================================== # cp ReallyLongFileNameYouDontWantToTypeTwice{,.orig} ==================================================================================== === Найти строку по файлам (искать рекурсивно совпадения по целому паттерну, выводя номер строки): ==================================================================================== # grep -rn '/path/to/somewhere/' -e "pattern" ==================================================================================== === Запуск чего-либо от имени другого пользователя: ==================================================================================== # sudo -u www-data ps ==================================================================================== === Как определить keycode в linux: ==================================================================================== # xev ==================================================================================== === Найти файлы sql.gz старше 7 дней и удалить их: ==================================================================================== # find /tmp/*sql.gz -mtime +7 -type f -delete ==================================================================================== === Создать гигабайтный файл: ==================================================================================== # head -c 1G myfile ==================================================================================== === Не спрашивать пароль пользователя (sudo всё равно нужно вводить): ==================================================================================== # sudo visudo Defaults:user !authenticate ==================================================================================== === Найти файл и открыть его в текстовом редакторе: ==================================================================================== # find . -name "*.txt" -exec vim {} + ==================================================================================== === Создание случайных событий для генерации gnupg-ключа: ==================================================================================== # find / -type f | xargs grep blahblahblha ==================================================================================== === Запустить оболочку из-под другого пользователя: ==================================================================================== # sudo -i -u user ==================================================================================== === Создать образ диска: ==================================================================================== # genisoimage -o ~/os/debian_pr.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -V 'Debian 8' -boot-load-size 4 -boot-info-table -R -J -v -T /media/debian3 == Или == # genisoimage -o ~/os/debian_pr.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -V 'Debian 8' -boot-load-size 4 -boot-info-table -R -J -v -T /media/debian3 append file=/cdrom/isolinux/preseed.cfg ipv6.disable=1 debian-installer=en_US locale=en_US fb=false debconf/frontend=noninteractive console-setup/ask_detect=false console-setup/layoutcode=es kbd-chooser/method=es console-keymaps-at/keymap=es priority=critical initrd=/install.amd/initrd.gz splash quiet -- ==================================================================================== === Показать доступные обновления безопасности (два варианта): ==================================================================================== # sudo apt-get -s dist-upgrade | grep "^Inst" | grep -i securi == Или == # sudo unattended-upgrade --dry-run -d ==================================================================================== === Показать обновляемые пакеты: ==================================================================================== # sudo apt-get -s dist-upgrade | grep "^Inst" ==================================================================================== === Установить только обновления безопасности: ==================================================================================== # sudo unattended-upgrades == Или == # sudo apt-get -s dist-upgrade | grep "^Inst" | grep -i securi | awk -F " " {'print $2'} | xargs apt-get install ==================================================================================== === Отключить проверку пользовательского почтового ящика при подключении по ssh: ==================================================================================== # sudo vi /etc/pam.d/sshd == Закомментировать строку: == *session optional pam_mail.so standard noenv* ==================================================================================== === Найти все директории и просмотреть их содержимое: ==================================================================================== # find . -type d -exec ls -lah {} + ==================================================================================== === Просмотр версии ОС: ==================================================================================== # cat /etc/*release ==================================================================================== === Наблюдение за прогрессом конечного процесса (cp, mv, tar, etc): ==================================================================================== # git clone https://github.com/Xfennec/progress.git cd progress make sudo make install ==================================================================================== === Найти самые большие файлы (-print0 для поиска файлов с пробелами в названиях): ==================================================================================== # find . -type f -print0| xargs -0 ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n", size,$2);}' | head ==================================================================================== === Разархивировать всё: ==================================================================================== # for z in *.zip; do unzip $z; done ==================================================================================== === Мгновенная перезагрузка: ==================================================================================== # echo 1 > /proc/sys/kernel/sysrq; echo b > /proc/sysrq-trigger == Другие буквы, которые могут записываться в sysrq-trigger: == unRaw (take control of keyboard back from X), tErminate (send SIGTERM to all processes), kIll (send SIGKILL to all processes), Sync (flush data to disk), Unmount (remount all filesystems read-only), reBoot. ==================================================================================== === Добавить префикс к каждой строке файла: ==================================================================================== # awk '$0="prefix"$0' file > new_file ==================================================================================== === Распарсить csv-файл с запятой в роли разделителя и передать все значения четвертой колонки в текстовый файл: ==================================================================================== # cut -d, -f 4 1.csv > 1.txt ==================================================================================== === Скачать видео с youtube: ==================================================================================== # youtube-dl https://www.youtube.com/watch?v=3lMcZDho2UY ==================================================================================== === Скачать видео и сохранить с указанным шаблоном именования файла: ==================================================================================== # youtube-dl -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=3lMcZDho2UY ==================================================================================== === Просмотреть список доступных форматов видео: ==================================================================================== # youtube-dl https://www.youtube.com/watch?v=3lMcZDho2UY -F ==================================================================================== === Скачать файл конкретного формата (формат задан в числовом виде): ==================================================================================== # youtube-dl https://www.youtube.com/watch?v=3lMcZDho2UY -f XXX ==================================================================================== === Скачать mp3 из видео с youtube: ==================================================================================== # youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=3lMcZDho2UY ==================================================================================== === Скачать mp3 из подборки ссылок на видео с youtube (ссылки в файле): ==================================================================================== # for i in $(cat videos.txt); do youtube-dl -x --audio-format mp3 -o "%(title)s.%(ext)s" $i; done ==================================================================================== === Скачать видео из подборки ссылок с указанным шаблоном именования файла: ==================================================================================== # for i in $(cat videos.txt); do youtube-dl -o "%(title)s.%(ext)s" $i; done ==================================================================================== === Скачать плейлист с youtube в mp3: ==================================================================================== # youtube-dl -x --audio-format mp3 --playlist-start 1 --playlist-end 5 https://www.youtube.com/playlist?list=xxx ==================================================================================== === Скачать канал с видео: ==================================================================================== # youtube-dl -f best -citw -v https://www.youtube.com/channel/channel_id/playlists ==================================================================================== === Скачать весь плейлист с youtube: ==================================================================================== # yt-dlp -f best -ciw -o "%(title)s.%(ext)s" -v $URL ==================================================================================== === Заполнить файл случайными данными: ==================================================================================== # head -c 10M 1.txt ==================================================================================== === Дать возможность запуска конкретной программы из-под sudo без ввода пароля: ==================================================================================== # sudo visudo username ALL=NOPASSWD: /usr/bin/apt-get install ==================================================================================== === Поиск текста по файлам: ==================================================================================== # grep -e expr1 -e expr2 filename ==================================================================================== === Просмотр изменения содержимого файла в реальном времени: ==================================================================================== # tail -f file ==================================================================================== === Узнать время выполнения команды: ==================================================================================== # time command ==================================================================================== === Слежение за изменениями в выводе команды: ==================================================================================== # watch command ==================================================================================== === Просмотреть содержимое запакованного файла: ==================================================================================== # zcat file ==================================================================================== === Включить режим отладки в bash: ==================================================================================== # bash -x test.sh ==================================================================================== === Узнать, есть ли в памяти процесс processname: ==================================================================================== # pgrep -x processname ==================================================================================== === Попасть в меню grub: ==================================================================================== # vi /etc/default/grub # GRUB_HIDDEN_TIMEOUT=0 sudo update-grub ==================================================================================== === Запретить postfix'у писать в syslog: ==================================================================================== # vi /etc/rsyslog.conf mail.* -/var/log/mail.log !mail.*;*.* -/var/log/syslog ==================================================================================== === Скопировать ssh-ключ на удаленную машину: ==================================================================================== # ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.0.1 ==================================================================================== === DCHP release && renew: ==================================================================================== # sudo dhclient -r # sudo dhclient ==================================================================================== === Curl с авторизацией (нужно подставлять корректное название форм - в моем случае это "email"): ==================================================================================== # curl -F "email=user@example.com" -F "password=password" https://example.com/login -v ==================================================================================== === Сортировка в ncmpcpp: ==================================================================================== # Ctrl+V -> n/m -> Sort ==================================================================================== === Написать в другой терминал: ==================================================================================== # wall -n hi ==================================================================================== === Смонтировать LVM-раздел: ==================================================================================== # apt-get install lvm2 vgscan # Узнать имя LVM-группы lvs # Вывести список разделов группы modprobe dm-mod # Активировать группу vgchange -ay LVMgroup # Активировать группу mount /dev/LVMgroup/LVMvol /mnt/media ==================================================================================== === Срок действия TLS-сертификата: ==================================================================================== # echo | openssl s_client -servername alexeev.in.ua -connect alexeev.in.ua:443 2>/dev/null | openssl x509 -noout -dates ==================================================================================== === Сравнение float: ==================================================================================== # if (( $(awk 'BEGIN {print ("'$d1'" >= "'$d2'")}') )); then echo "yes" else echo "no" fi ==================================================================================== === Передать значение переменной в rc.local из /etc/profile, например: ==================================================================================== # vi /etc/rc.local . /etc/profile ==================================================================================== === Копирование найденных файлов: ==================================================================================== # find -name '*FooBar*' -print0 | xargs -0 cp -t ~/foo/bar ==================================================================================== === Проблемы с перезапуском сервиса Samba: ==================================================================================== == Failed to start samba.service: Unit samba.service is masked. == # sudo service smbd restart ==================================================================================== === Экранирование кавычек в ssh: ==================================================================================== # ssh user@server 'kill -9 `ps -ef | grep pname | grep -v "grep" | awk -F " " '"'"'{print $2}'"'"' | head -n 1`' ==================================================================================== === Конвертировать png в ico: ==================================================================================== # sudo apt install imagemagick convert img.png -define icon:auto-resize=16 img.ico ==================================================================================== === Смонтировать nfs-шару: ==================================================================================== # sudo mount -t nfs 192.168.0.187:/mnt/nfs/test ==================================================================================== === С помощью xargs можно добавлять к дополнительные элементы к именам файлов (например, дату): ==================================================================================== # ls | xargs -I FILE mv {} <...>-{} == Вместо <..> можно подставить всё, что угодно. Фигурные скобки {} в этом примере означают «текущий аргумент» (т.е. текущее имя файла). == ==================================================================================== === Изменить hostname на ubuntu 18.04 и подобных: ==================================================================================== # sudo vi /etc/cloud/cloud.cfg preserve_hostname: true ==================================================================================== === Скачать файл с smb-ресурса: ==================================================================================== # smbget smb://192.168.0.1/share/test.txt ==================================================================================== === Сделать дамп раздела, на лету сохраняя его на удаленный ресурс: ==================================================================================== # dd if=/dev/vda2 | gzip -c | ssh user@example.com 'dd of=/home/user/vda2.img' bs=2048 ==================================================================================== === Логировать rejected email с помощью pflogsumm и отправлять лог на email: ==================================================================================== # pflogsumm -d today /var/log/mail.log --problems-first --verbose-msg-detail --smtpd-warning-detail 0 -u 0 -h 0 --detail 1 -q | sed '/Per/,$d' | /usr/bin/mailx -s "$(date +%Y%m%d) rejected emails" user@example.com ==================================================================================== === Сравнить строчное содержимое переменных (-w и -B подавляют разницу в пробелах): ==================================================================================== # diff -w -B <(echo "$A") <(echo "$ETHALON") ==================================================================================== === Воспроизвести URL с youtube: ==================================================================================== # youtube-dl -o - https://www.youtube.com/watch?v=3lMcZDho2UY | mpv - ==================================================================================== === Воспроизвести список URL с youtube: ==================================================================================== # for i in $(cat ~/links.txt); do youtube-dl -o - $i | mpv -; done ==================================================================================== === Генерация новых временный паролей с их последующей отправкой на почту: ==================================================================================== # yes | otpw-gen -h 5 > ~/temp/tt.txt cat ~/temp/pw.txt | head -n 3 | tail -n 1 | mutt -s "$(date)_pw" user@example.com ==================================================================================== === Разрешить пользователю, логинящемуся через ssh по ключу, запуск только одной команды: ==================================================================================== # vi ~/.ssh/authorized_keys command="./any_command" KEY_TYPE KEY COMMENT ==================================================================================== === Как запретить программе срать в syslog: ==================================================================================== # touch /var/log/your.log chown syslog:adm /var/log/your.log vi /etc/rsyslog.d/00-programmname.conf if $programname == 'your_programm' then /var/log/your.log & stop ==================================================================================== === Расширить /run: ==================================================================================== # vi /etc/fstab none /run tmpfs defaults,size=64M 0 0 mount -o remount /run df -h /run ==================================================================================== === Проверить, открыт ли порт на хосте: ==================================================================================== # { /dev/null && echo "Port is open" || echo "Port is not open" ==================================================================================== === Установить vim дефолтным редактором и стащить нужную цветовую схему: ==================================================================================== # sudo update-alternatives --config editor wget https://raw.githubusercontent.com/Sergey1000/testrepo/master/peaksea.vim ==================================================================================== === .vimrc === ==================================================================================== # " It needs peaksea.vim in /usr/share/vim/vim*/colors runtime! debian.vim syntax on set background=dark colors peaksea set showcmd set showmatch set ignorecase set incsearch set number set hlsearch set autoindent set nocompatible set wrap set linebreak set smartindent set clipboard=unnamedplus if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif ==================================================================================== === Как должен выглядеть crontab для еженощного запуска bash-сценария (даже если у пользователя есть "x" на файл, только "bash -c" дает моему крону запускать скрипт): ==================================================================================== # 0 0 * * * bash -c "/home/user/script.sh" ==================================================================================== === Проверить работоспособность веб-сокетов: ==================================================================================== # websocat_linux64 wss://example.com/ws/events/55555555-5555-5555-5555-555555555555/ --one-message ==================================================================================== === Перенести джобы из одного инстанса Jenkins в другой, используя токен учетной записи с соответствующими правами: ==================================================================================== # curl -L https:///user1:token1@jenkins1.example.com/job/job1/config.xml | curl -X POST 'https:///user2:token2@jenkins2.example.com/createItem?name=job2' --header "Content-Type: application/xml" -d @- ==================================================================================== === Добавить раскладку и комбинацию для переключения языков: ==================================================================================== # setxkbmap -option "grp:alt_shift_toggle,grp_led:scroll"; setxkbmap -layout "us,ru" setxkbmap -layout "us,ru" && xscreensaver-command -lock ==================================================================================== === Монтирование каталога по ssh (вариант для fstab, не уверен, что работает): ==================================================================================== # user@name.zone:/home/user /home/user1/temp fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions 0 0 ==================================================================================== === Просмотр неврапнутого лога сервиса: ==================================================================================== # systemctl status --no-pager --full $service_name ==================================================================================== === Пример использования envsubst для подстановки значения переменных в файл: ==================================================================================== # export pw_from_envsubst="testtest" echo 'pw: $pw_from_envsubst' > temp.filename envsubst < temp.filename > orig.filename ==================================================================================== === Установка mysql-server >= 8.x. Как установить пароль для root. Непосредственно после установки нужно запустить: ==================================================================================== # mysql_secure_installation == После этого нужно поменять плагин для аутентификации - caching_sha2_password может работать не для всех приложений: == # ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ==================================================================================== === stdout и stderr на ввод разным командам: ==================================================================================== # some_command > >(/bin/cmd_for_stdout) 2> >(/bin/cmd_for_stderr) ==================================================================================== === Перенаправлять stdout и stderr в разные файлы с выводом обоих потоков на экран: ==================================================================================== # (some_command 2>&1 1>&3 | tee errorlog ) 3>&1 1>&2 | tee stdoutlog ==================================================================================== === Найти последние измененные файлы в дире: ==================================================================================== # find . -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head ==================================================================================== === Работа с пайпами stdout, stderr: ==================================================================================== # == Стандартный вывод - в файл, вывод ошибок - в терминал == ls /home /root > /tmp/1.txt ls: cannot open directory /root: Permission denied == Стандартный вывод - в терминал, вывод ошибок - в файл == $ ls /home /root 2> /tmp/1.txt /home: lost+found ser == Вывод всего - в файл == $ ls /home /root &> /tmp/1.txt ==================================================================================== === Открыть сокет для отправки запросов и получения ответов (башевый аналог curl): ==================================================================================== # exec 3<>/dev/tcp/blog.abccba.xyz/80 echo -e "GET /aws_tips.txt HTTP/1.1\r\nhost: blog.abccba.xyz\r\nConnection: close\r\n\r\n" >&3 cat <&3 ==================================================================================== === Создать архив каталога, исключив подкаталоги: ==================================================================================== # tar -zcvf filename.tgz --exclude='folder1' --exclude='folder2' qwe ==================================================================================== === Получить информацию об удаленных хосте и сервере: ==================================================================================== # curl --trace-ascii /tmp/debugdump.txt https://google.com grep -e "Host:" -e "Server:" /tmp/debugdump.txt ==================================================================================== === Просмотр логов nowrap: ==================================================================================== # systemctl status --no-pager nginx.service -l ==================================================================================== === Изменить расширения файлов в каталоге без дополнительных инструментов: ==================================================================================== # for i in * ; do mv "${i}" "${i%%.*}.mp4" ; done ==================================================================================== === Переместить все файлы, включая скрытые: ==================================================================================== # mv -f /path/subfolder/{.,}* /path/ ==================================================================================== === Сканер безопасности сервиса systemd: ==================================================================================== # systemd-analyze security service_name ==================================================================================== === Получить HTTP response status code: ==================================================================================== # curl -s -o /dev/null -w "%{http_code}" https://example.com ==================================================================================== === Отправить POST-запрос с JSON-пэйлоадом: ==================================================================================== # curl -X POST https://example.com/api/endpoint -H 'Content-Type: application/json' -d '{"key":"value"}' ==================================================================================== === Разбить архив на части по 1000 Мб и собрать архив из этих частей: ==================================================================================== # split -b 1000M db.sql.gz "db.part" cat db.parta* >db.sql.gz ==================================================================================== === Установить psql без сервера: ==================================================================================== # apt-get install -y postgresql-client