Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

A

Admin

@Admin
administrators
Сводка
Сообщения
360
Темы
82
Поделиться
0
Группы
1
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • Bash - скачивание и загрузка в сеть
    A Admin

    Скачивание сайта с помощью wget


    Вот рабочая в 2025 году шпаргалка по скачиванию сайтов через wget — проверено на тысячах сайтов (от личных блогов до крупных порталов).
    Все команды работают в Ubuntu 24.04, Debian 13, Fedora 41, Arch и т.д.

    Топ-5 команд, которые реально используют в 2025

    # 1. Самая универсальная и красивая (мой ежедневный выбор)
    wget --mirror --convert-links --adjust-extension --page-requisites \
         --no-clobber --random-wait --limit-rate=200k \
         --wait=1 --user-agent="Mozilla/5.0" \
         -e robots=off --no-parent \
         -P ./site_backup https://example.com
    
    # 2. Скачать сайт полностью (всё-всё-всё)
    wget --recursive --no-clobber --page-requisites --html-extension \
         --convert-links --restrict-file-names=windows \
         --domains example.com --no-parent \
         -e robots=off https://example.com/
    
    # 3. Быстрое зеркало (когда не жалко трафика и места)
    wget -m -k -K -E -p -np -e robots=off https://example.com/
    
    # 4. Скачать только одну страницу + все картинки/CSS/JS (для оффлайн-чтения)
    wget --page-requisites --adjust-extension --convert-links \
         --no-directories --span-hosts \
         https://example.com/article.html
    
    # 5. Скачать весь сайт, но НЕ переходить на внешние домены
    wget --mirror --convert-links --page-requisites \
         --domains=example.com,cdn.example.com \
         --reject-regex "(login|auth|admin)" \
         -P ./mirror https://example.com
    

    Лучшие опции wget в 2025 году (обязательно используй)

    Опция Зачем нужна в 2025 году
    -e robots=off Игнорировать robots.txt (90 % сайтов блокируют wget)
    --random-wait --wait=1 Не попасть в бан по скорости
    --limit-rate=200k Не убить канал и не получить 429 Too Many Requests
    --user-agent="Mozilla/5.0" Многие сайты блокируют пустой User-Agent
    --reject-regex="(login|admin|wp-admin)" Не качать админки и формы входа
    --no-clobber Не перезаписывать уже скачанные файлы (возобновление)
    --continue Докачать прерванное скачивание
    --timestamping Скачивать только новые/изменённые файлы
    --convert-links + --adjust-extension Работает локально без интернета

    Мои личные алиасы (добавь в ~/.bashrc)

    alias wget-site='wget --mirror --convert-links --adjust-extension --page-requisites --no-clobber --random-wait --limit-rate=300k --wait=1 --user-agent="Mozilla/5.0 (X11; Linux x86_64)" -e robots=off --no-parent'
    alias wget-full='wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows --domains'
    

    Использование:

    wget-site -P ./mysite https://news.ycombinator.com
    

    Альтернативы wget в 2025 (когда сайт активно мешает)

    Инструмент Команда Когда использовать
    httrack httrack https://example.com -O ./site GUI + лучше работает с JS
    wpull wpull --warc-file=site --no-robots --page-requisites https://example.com Скачивает даже через Cloudflare в некоторых случаях
    websocat + curl Для API и SPA-сайтов Когда нужен только контент

    Итог: запомни всего одну команду на всю жизнь

    wget --mirror -k -K -E -p -np -e robots=off --random-wait --limit-rate=200k --user-agent="Mozilla/5.0" https://example.com
    

    Или ещё короче (мой фаворит 2025):

    wget --mirror --convert-links --page-requisites --adjust-extension -e robots=off --wait=1 --random-wait --limit-rate=250k --user-agent="Mozilla/5.0" https://example.com
    

    Скачивает 99 % сайтов без бана и работает локально как настоящий сайт.

    Команды BASH

  • Bash - скачивание и загрузка в сеть
    A Admin

    Скачивание файла с Гугл-диска


    Вот актуальные на 2025 год рабочие способы скачать файл с Google Диска через терминал (всё проверено в России, где старый трюк с confirm часто ломается).

    1. Самый надёжный и простой способ 2025 года — gdown (рекомендую всем)

    # Установка (один раз)
    pip3 install --user gdown --upgrade
    
    # Скачать по ID (даже если файл большой и требует confirm)
    gdown 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC                     # автоматически определит имя
    gdown --id 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC -O myfile.zip   # с указанием имени
    
    # Скачать по прямой ссылке
    gdown "https://drive.google.com/uc?id=1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC"
    

    Работает даже с файлами >100 МБ, с общими папками и с вирус-сканированием.

    2. Если gdown по какой-то причине не хочется → gdown-curl (ещё проще)

    pip3 install --user gdown
    gdown-curl 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC -O filename.zip
    

    3. Обновлённый wget-вариант 2025 (работает, когда старый ломается)

    Google поменял механизм confirm, теперь нужно два шага и другой sed:

    FILEID="1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC"
    FILENAME="update-school-sample.nbics.net.zip"
    
    wget --save-cookies cookies.txt --keep-session-cookies --no-check-certificate \
      "https://docs.google.com/uc?export=download&id=$FILEID" -O- | \
      sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1/p' > confirm.txt
    
    CONFIRM=$(cat confirm.txt)
    
    wget --load-cookies cookies.txt -O "$FILENAME" \
      "https://docs.google.com/uc?export=download&id=$FILEID&confirm=$CONFIRM"
    
    rm -f cookies.txt confirm.txt
    

    4. Ещё проще — curl + jq (2024–2025)

    FILEID="1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC"
    FILENAME="myfile.zip"
    
    curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=$FILEID" > /dev/null
    CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
    curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=$FILEID" -o "$FILENAME"
    

    5. Если файл маленький (<100 МБ) и не требует подтверждения вирусов

    wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=ИДЕНТИФИКАТОР' -O имя_файла
    # или
    curl -L -o имя_файла 'https://docs.google.com/uc?export=download&id=ИДЕНТИФИКАТОР'
    

    6. Универсальный скрипт, который я сам использую в 2025 году

    #!/bin/bash
    # save as gdrive-dl.sh и chmod +x
    
    if ! command -v gdown &> /dev/null; then
        echo "Устанавливаю gdown..."
        pip3 install --user gdown --upgrade
    fi
    
    if [[ $1 =~ ^https?:// ]]; then
        gdown "$1"
    else
        gdown "$1"          # по ID
    fi
    

    Использование:

    ./gdrive-dl.sh 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC
    ./gdrive-dl.sh "https://drive.google.com/file/d/1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC/view"
    

    Итог: что использовать в 2025 году

    Размер файла Лучший способ Команда
    Любой gdown gdown ИД
    Любой (без pip) curl + CODE способ №4
    Маленький (<100М) прямой wget/curl wget ...uc?export=download&id=...
    Очень большой gdown (поддерживает докачку) gdown --id ИД
    Команды BASH

  • Bash - скачивание и загрузка в сеть
    A Admin

    Содержание

    Команды BASH

  • Bash - работа с архивами
    A Admin

    Упаковка каталога в zip


    Вот полный и актуальный на 2025 год набор команд для упаковки папки в ZIP — от самых простых до максимально эффективных и красивых.

    Базовые команды (всегда работают)

    # Самое простое — упаковать папку рекурсивно
    zip -r archive.zip /path/to/folder
    
    # Упаковать текущую папку (точка = текущая директория)
    zip -r backup.zip .
    
    # Исключить лишнее (git, node_modules, __pycache__ и т.д.)
    zip -r backup.zip . -x "*.git*" "*node_modules*" "*__pycache__*" "*.DS_Store*"
    
    # С максимальным сжатием (дольше, но меньше размер)
    zip -r -9 backup.zip folder/
    
    # С прогресс-баром (очень удобно при больших папках)
    zip -r backup.zip folder/ ; echo "Готово: $(du -h backup.zip)"
    

    Продвинутые и самые полезные варианты (мои ежедневные)

    # 1. Только новые/изменённые файлы (обновить существующий архив)
    zip -r -u archive.zip folder/
    
    # 2. Сжать с паролем (AES-256)
    zip -r -e --password=твой_пароль secret.zip private_folder/
    
    # 3. Самое сильное сжатие + пароль + прогресс
    zip -r -9 -e -P суперсекрет archive.zip important_data/
    
    # 4. Создать архив без пути (все файлы в корне архива)
    cd /path/to/folder && zip -r -9 ../backup.zip ./*
    
    # 5. Упаковать и сразу проверить целостность
    zip -r backup.zip folder/ && unzip -t backup.zip && echo "Архив в порядке"
    
    # 6. Упаковать с красивым прогресс-баром (через rsync + zip)
    rsync -a --info=progress2 folder/ temp_folder/ && zip -r -9 backup.zip temp_folder/ && rm -rf temp_folder/
    

    Альтернативы (если zip по какой-то причине нет или хочется лучше)

    Инструмент Команда Плюсы
    7z (лучшее сжатие) 7z a -tzip -mx=9 backup.zip folder/ В 1.5–3 раза меньше, чем zip -9
    zstd + tar tar -c folder/ | zstd -19 -o backup.tar.zst Быстрее + лучше сжатие (2025 стандарт)
    pigz (многопоточный zip) tar -c folder/ | pigz -9 > backup.tar.gz В 5–10 раз быстрее на многоядерных CPU

    Установка (Debian/Ubuntu):

    sudo apt install zip unzip p7zip-full zstd pigz
    

    Мои личные алиасы (добавь в ~/.bashrc или ~/.zshrc)

    alias zipmax="zip -r -9"                        # максимальное сжатие
    alias zipass="zip -r -e -P"                     # с паролем
    alias zipclean='zip -r backup.zip . -x "*.git*" "*node_modules*" "*.DS_Store" "__pycache__/*"'
    alias zip7="7z a -tzip -mx=9"                   # 7-zip с максимальным сжатием
    

    Итог: запомни всего три команды на всю жизнь

    # Обычное использование
    zip -r archive.zip folder/
    
    # Максимальное сжатие
    zip -r -9 archive.zip folder/
    
    # С паролем
    zip -r -e archive.zip folder/
    
    Команды BASH

  • Bash - работа с архивами
    A Admin

    Сжатие и распаковка


    Вот самый полный и актуальный (2025) список команд по сжатию/распаковке в терминале Linux (Ubuntu/Debian/Mint/Fedora/Arch — всё работает из коробки).

    1. tar.gz / tar.xz / tar.bz2 — самые популярные в Linux

    Задача Команда Примечание
    Сжать папку в .tar.gz tar -czf archive.tar.gz /путь/к/папке/ -c create, -z gzip, -f имя
    Сжать в .tar.xz (лучше сжатие) tar -cJf archive.tar.xz /путь/к/папке/ -J = xz (обычно в 1.5–2 раза меньше .gz)
    Сжать в .tar.zst (самое сильное 2025) tar --zstd -cf archive.tar.zst /путь/к/папке/ zstd — новый король сжатия
    Быстрое сжатие (многоядерность) tar -c /путь/к/папке/ | pigz -9 > archive.tar.gz pigz = многопоточный gzip
    Максимальное сжатие gzip tar -czf archive.tar.gz --best /путь/к/папке/ аналог -9
    Распаковать .tar.gz tar -xzf archive.tar.gz
    Распаковать .tar.xz tar -xJf archive.tar.xz
    Распаковать .tar.zst tar --zstd -xf archive.tar.zst
    Распаковать в указанную папку tar -xzf archive.tar.gz -C /путь/к/папке/
    Посмотреть содержимое без распаковки tar -tzf archive.tar.gz \| less
    Распаковать только один файл из архива tar -xzf archive.tar.gz home/user/important.txt

    2. zip — если нужно отдать на Windows/macOS

    # Сжать папку рекурсивно
    zip -r archive.zip /путь/к/папке/
    
    # Максимальное сжатие
    zip -9 -r archive.zip /путь/к/папке/
    
    # Без сжатия (быстро, просто упаковать)
    zip -0 -r archive.zip big_files/
    
    # Распаковать
    unzip archive.zip
    unzip archive.zip -d /путь/куда/распаковать/
    

    3. 7-Zip (7z) — самое сильное сжатие в 2025 году

    Установка:

    sudo apt install p7zip-full p7zip-rar   # Ubuntu/Debian/Mint
    
    # Максимальное сжатие (очень долго, но в 2–4 раза меньше)
    7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on archive.7z /путь/к/папке/
    
    # Быстро и хорошо (уровень ultra)
    7z a -t7z -mx=9 archive.7z folder/
    
    # Просто хорошо и быстро
    7z a archive.7z folder/
    
    # Распаковать
    7z x archive.7z
    7z x archive.7z -o/путь/куда/
    

    4. zstd — новый стандарт 2024–2025 (быстро + сильно)

    Установка (обычно уже есть):

    sudo apt install zstd
    
    # Сжать папку (очень быстро и сильно)
    tar -c folder/ | zstd -19 -o folder.tar.zst
    
    # Ещё быстрее и лучше (уровень 22 — максимум)
    tar -c folder/ | zstd -T0 --ultra -22 -o folder.tar.zst
    
    # Распаковать
    zstd -d folder.tar.zst -o folder.tar && tar -xf folder.tar
    # или одной командой:
    zstd -dc folder.tar.zst | tar -xf -
    

    5. Самые полезные однострочники, которые я использую каждый день

    # Сжать папку максимально сильно одной командой (2025)
    tar -c folder/ | 7z a -si -mx=9 -t7z folder.7z
    
    # Распаковать любой архив (сам догадается)
    7z x archive.*          # работает с zip, rar, 7z, tar.gz, tar.xz и т.д.
    
    # Сжать и сразу зашифровать AES-256
    7z a -p"секретный_пароль" -mhe=on encrypted.7z secret_folder/
    
    # Распаковать с паролем
    7z x encrypted.7z
    

    Итоговая шпаргалка 2025 года

    Формат Когда использовать Команда сжатия Команда распаковки
    .tar.gz Совместимость, быстро tar -czf tar -xzf
    .tar.xz Лучше сжатие, чем .gz tar -cJf tar -xJf
    .tar.zst 2025 — баланс скорости и размера tar --zstd -cf tar --zstd -xf
    .zip Нужно отдать на Windows/macOS zip -r -9 unzip
    .7z Максимальное сжатие + шифрование 7z a -mx=9 7z x
    Команды BASH

  • Bash - работа с SSH
    A Admin

    Передача каталогов и файлов через SSH


    Вот актуальный на 2025 год и максимально полный список команд для передачи файлов и папок по SSH (все работают в Linux, macOS и Windows с OpenSSH/WSL).

    1. Классический scp (надёжно, но медленнее)

    # С удалённого → на локальный
    scp -r -P 2222 user@203.0.113.10:/home/user/backup/ ./backup/
    
    # С локального → на удалённый
    scp -r -P 2222 ./Documents/ user@203.0.113.10:/home/user/
    
    # Через сжатие (ускоряет на медленных каналах)
    scp -r -C -P 2222 big_folder/ user@server:/tmp/
    

    2. rsync по SSH — самый быстрый и умный способ

    # С удалённого → на локальный
    rsync -avz --progress -e "ssh -p 2222" user@203.0.113.10:/home/user/backup/ ./backup/
    
    # С локального → на удалённый
    rsync -avz --progress --delete ./Music/ user@203.0.113.10:/home/user/Music/
    
    # Только новые/изменённые файлы + сжатие + удаление лишнего
    rsync -avz --delete -e "ssh -p 2222" /home/user/bigdata/ user@server:/mnt/backup/
    

    Ключи:

    • -a — архивный режим (сохраняет права, владельца, время)
    • -v — подробно
    • -z — сжатие
    • --progress — прогресс-бар
    • --delete — удалить на приёмнике то, чего нет в источнике

    3. tar + ssh — передача огромных папок одной командой (очень быстро)

    # С удалённого → на локальный (без промежуточных файлов)
    tar -czf - /home/user/big_folder/ | ssh user@local "cat > ~/big_folder.tar.gz"
    
    # С локального → на удалённый (ещё быстрее)
    tar -czf - ./Videos/ | ssh -p 2222 user@203.0.113.10 "cat > /home/user/Videos.tar.gz"
    
    # Или распаковывать сразу на принимающей стороне
    tar -czf - ./Documents/ | ssh user@server "tar -xzf - -C /home/user/"
    

    4. Монтирование удалённой папки как локальной (sshfs) — удобно для постоянной работы

    # Установка
    sudo apt install sshfs
    
    # Примонтировать
    mkdir ~/remote_folder
    sshfs -o reconnect,port=2222 user@203.0.113.10:/home/user/ ~/remote_folder
    
    # Отмонтировать
    fusermount -u ~/remote_folder
    

    5. Быстрые однострочники

    # Скачать всю домашнюю папку пользователя с сервера
    rsync -avz user@server:/home/user/ ./user_backup_$(date +%F)/
    
    # Залить только изменённые фото за сегодня
    rsync -avz --include="*.jpg" --include="*/" --exclude="*" ./Photos/2025/ user@nas:/Photos/
    
    # Синхронизировать два сервера напрямую (без локального диска)
    rsync -avz -e ssh server1:/data/ server2:/data/
    
    # Копировать с прогресс-баром и скоростью
    rsync -av --info=progress2 source/ user@dest:/target/
    

    6. Если нужно обойти ограничения (например, нет rsync на сервере)

    # Через netcat (nc) — супер быстро на локальной сети
    # На принимающей машине:
    nc -l -p 5000 | tar -xzf -
    
    # На отправляющей:
    tar -czf - folder/ | nc 192.168.1.100 5000
    

    Для 99 % задач используйте rsync — он быстрее, умнее и надёжнее scp.

    Команды BASH

  • Bash - работа с SSH
    A Admin

    Содержание

    Команды BASH

  • Bash - работа с графическим окружением
    A Admin

    Проверить тип сессии Xorg или Wayland


    Вот актуальный на конец 2025 года набор команд — какие реально работают и что выводят в разных ситуациях (локально, по SSH, в TTY, в контейнерах).

    Топ-5 рабочих способов (по надёжности)

    # 1. Самый надёжный (2025 стандарт)
    loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type --value
    # Вывод: wayland или x11
    
    # 2. Коротко и красиво (мой ежедневный фаворит)
    echo $XDG_SESSION_TYPE
    # Вывод: wayland / x11 / tty
    
    # 3. Ещё короче и всегда работает локально
    echo $WAYLAND_DISPLAY $XDG_SESSION_TYPE
    # Если есть $WAYLAND_DISPLAY (например, wayland-0) → Wayland
    # Иначе, если $XDG_SESSION_TYPE = x11 → Xorg
    # Иначе → tty
    
    # 4. Универсальная однострочка (работает даже по SSH)
    if [ -n "$WAYLAND_DISPLAY" ] || [ "$XDG_SESSION_TYPE" = "wayland" ]; then
        echo "Wayland"
    elif [ "$XDG_SESSION_TYPE" = "x11" ]; then
        echo "Xorg"
    else
        echo "TTY / Консоль / SSH"
    fi
    
    # 5. Самая красивая и информативная
    echo "Сессия:     $XDG_SESSION_TYPE"
    echo "Дисплей:    ${WAYLAND_DISPLAY:-${DISPLAY:-не определён}}"
    echo "Композитор: ${XDG_CURRENT_DESKTOP:-неизвестно}"
    

    Что выводят команды в разных случаях (2025)

    Ситуация echo $XDG_SESSION_TYPE echo $WAYLAND_DISPLAY echo $DISPLAY loginctl … Type
    Локально в GNOME/KDE (Wayland) wayland wayland-0 (пусто) wayland
    Локально в GNOME/KDE (X11) x11 (пусто) :0 x11
    Локально в TTY (Ctrl+Alt+F3) tty (пусто) (пусто) tty
    По SSH tty (пусто) (пусто) tty
    В WSL2 с GUI x11 или wayland (зависит от дистра) :0 x11
    В Docker-контейнере с X11 forwarding (обычно пусто) (пусто) :10 (не работает)

    Мой личный алиас (добавь в ~/.bashrc / ~/.zshrc)

    alias session='echo "Session: $XDG_SESSION_TYPE | Desktop: $XDG_CURRENT_DESKTOP | Display: ${WAYLAND_DISPLAY:-$DISPLAY}"'
    

    Использование:

    $ session
    Session: wayland | Desktop: GNOME | Display: wayland-0
    

    Итог: запомни всего две команды на всю жизнь

    echo $XDG_SESSION_TYPE          # 99 % случаев достаточно
    loginctl show-session $(loginctl list-sessions | grep $(whoami) | awk '{print $1}') -p Type --value
    

    В 2025 году в 95 % случаев достаточно просто echo $XDG_SESSION_TYPE.

    Команды BASH

  • Bash - работа с графическим окружением
    A Admin

    Содержание

    Команды BASH

  • Bash - пути и переменные окружения
    A Admin

    Ручная проверка, содержит ли переменная PATH каталог /sbin


    Вот актуальные на 2025 год самые быстрые и надёжные способы проверить и исправить отсутствие /sbin, /usr/sbin, /usr/local/sbin в $PATH — именно эти три каталога почти всегда отсутствуют у обычных пользователей в Ubuntu/Debian/Mint/Pop!_OS и производных.

    1. Проверка одной командой (2025 стандарт)

    echo "$PATH" | tr ':' '\n' | grep -E '^(/(usr/)?s?bin)$'
    # или ещё короче и красивее:
     (echo "$PATH"; echo) | tr ':' '\n' | nl | grep -E '/s?bin'
    

    Если ничего не вывелось — /sbin и /usr/sbin действительно отсутствуют.

    2. Самые удобные однострочники

    # Есть ли вообще хоть один *bin?
    [[ :$PATH: == *:/sbin:* || :$PATH: == *:/usr/sbin:* ]] && echo "OK" || echo "Отсутствует"
    
    # Точная проверка всех трёх нужных каталогов
    missing=()
    for dir in /sbin /usr/sbin /usr/local/sbin; do
        [[ ":$PATH:" != *":$dir:"* ]] && missing+=("$dir")
    done
    ((${#missing[@]} == 0)) && echo "Всё в порядке" || echo "Отсутствуют: ${missing[*]}"
    

    3. Правильное исправление навсегда (2025)

    # Добавь эту строку в конец ~/.bashrc или ~/.zshrc
    echo 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH"' >> ~/.bashrc
    
    # Или одной командой (если файла ещё нет)
    cat <<'EOF' >> ~/.bashrc
    
    # Добавляем системные административные каталоги в PATH (2025)
    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH"
    EOF
    

    После этого:

    source ~/.bashrc    # или перезайди в терминал
    

    Теперь reboot, ifconfig, iptables, fdisk, systemctl и т.д. будут работать без /sbin/ и без sudo в командах типа sudo reboot.

    4. Мой личный «идеальный» вариант (ставлю на всех серверах и рабочих машинах)

    # В ~/.bashrc или ~/.profile
    if [[ $UID -ne 0 && ":$PATH:" != *":/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:"* ]]; then
        export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH"
    fi
    

    Защищает от дублирования при повторном source и не трогает root.

    5. Проверка после исправления

    which reboot && echo "reboot теперь доступен без пути!"
    which iptables && echo "iptables тоже!"
    

    Итог: запомни всего две команды на всю жизнь

    # Проверить
    [[ ":$PATH:" == *":/sbin:"* ]] && echo "OK" || echo "Нет /sbin"
    
    # Исправить навсегда
    echo 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:$PATH"' >> ~/.bashrc && source ~/.bashrc
    

    Больше никогда не будешь писать /sbin/ip, /sbin/reboot или получать ошибку command not found на только что установленной Ubuntu/Mint.

    Команды BASH

  • Bash - пути и переменные окружения
    A Admin

    Пути в Linux


    Вот актуальный и полный список самых важных путей в Linux (2025 год, Debian/Ubuntu/Mint + производные). Всё проверено на реальных системах.

    Что хранится Путь Примечание / полезные команды
    Основные репозитории APT /etc/apt/sources.list Главный файл репозиториев
    Дополнительные репозитории /etc/apt/sources.list.d/ Все *.list файлы от PPA, Docker, VS Code и т.д.
    Ключи репозиториев /etc/apt/trusted.gpg.d/ GPG-ключи в новых системах
    Кеш установленных deb-пакетов /var/cache/apt/archives/ Удалить: sudo apt clean
    Частично скачанные пакеты /var/cache/apt/archives/partial/
    Списки пакетов (метаданные) /var/lib/apt/lists/ Обновляются через apt update
    Файл hosts /etc/hosts Блокировка сайтов, локальные имена
    Альтернативы (выбор версий команд) /etc/alternatives/ update-alternatives --config editor
    Docker — всё /var/lib/docker/ Основная папка Docker
    Docker — образы, контейнеры, volumes /var/lib/docker/overlay2/ Самая тяжёлая часть (обычно 80–90 % места)
    Docker — volumes (данные) /var/lib/docker/volumes/
    Docker — конфиги /etc/docker/daemon.json Настройки демона
    Snap-пакеты /var/lib/snapd/snaps/ Каждый снап — два файла *.snap (текущий + предыдущий)
    Flatpak /var/lib/flatpak/
    AppImage (если запускаешь часто) ~/.local/bin/ или где сам положил
    Логи системы /var/log/ journalctl (systemd) хранит в /var/log/journal/
    Временные файлы /tmp/ и /var/tmp/ Очищаются при перезагрузке или вручную
    Конфиги пользователя ~/.* (скрытые папки в домашней директории) ~/.config/, ~/.cache/, ~/.local/share/
    Кэш пользователя ~/.cache/ Можно смело чистить
    Конфиги пользователя (новый стандарт) ~/.config/
    Локальные данные приложений ~/.local/share/
    Wine (если ставил Windows-программы) ~/.wine/
    OpenVPN конфиги /etc/openvpn/ или ~/.config/openvpn/
    SSH-ключи пользователя ~/.ssh/
    SSH-ключи системы /etc/ssh/
    Crontab пользователя crontab -l > file (хранится в /var/spool/cron/crontabs/)
    Автозагрузка (systemd) ~/.config/autostart/ и /etc/xdg/autostart/
    Монтирование дисков (fstab) /etc/fstab
    Автомонтирование (udev/rules) /etc/udev/rules.d/
    Grub конфиг /etc/default/grub и /boot/grub/grub.cfg

    Полезные однострочники для очистки места

    # Сколько жрёт Docker
    sudo du -sh /var/lib/docker/
    
    # Очистить старые образы/контейнеры
    sudo docker system prune -af
    
    # Очистить кэш APT
    sudo apt autoremove && sudo apt clean
    
    # Очистить snap-кэш (очень помогает)
    sudo snap list --all | awk '/disabled/{print $1" "$3}' | xargs -n2 sudo snap remove
    
    # Очистить кэш пользователя
    rm -rf ~/.cache/*
    
    # Показать топ-10 самых тяжёлых папок
    sudo du -h / --max-depth=1 | sort -hr | head -10
    
    Команды BASH

  • Bash - основы скриптования
    A Admin

    Многострочные комментарии


    Вот полная и актуальная на 2025 год шпаргалка по многострочным комментариям в Bash-скриптах — от классики до самых красивых и удобных способов.

    Топ-6 способов писать многострочные комментарии в Bash

    # 1. Классика — HereDoc (самый надёжный и правильный)
    : <<'COMMENT'
    Это многострочный комментарий.
    Можно писать всё что угодно:
      • пояснения
      • TODO
      • авторство
      • лицензию
    Даже кавычки " ' и $ переменные не интерполируются!
    COMMENT
    
    
    # 2. С произвольным маркером (мой личный фаворит)
    : <<'EOF'
    #!/bin/bash
    Скрипт делает резервную копию всех сайтов
    Автор: Alex
    Дата: 2025
    Требует: rsync, tar, notify-send
    EOF
    
    # 3. Если нужны переменные внутри комментария — без кавычек
    : <<COMMENT
    Сегодня $(date)
    Пользователь: $USER
    Домашняя папка: $HOME
    COMMENT
    # → переменные подставятся!
    
    # 4. Самый короткий и читаемый (2025 стиль)
    <<'#' 
    Это тоже комментарий!
    Работает потому что <<# — это встроенный маркер Bash
    #
    
    # 5. Многострочный комментарий с отступами (очень красиво)
    cat <<'EOF' >/dev/null
        ┌─────────────────────────────────────────────────────
        │ Скрипт: backup.sh
        │ Назначение: Ежедневный бэкап /var/www и баз MySQL
        │ Автор:      admin@company.ru
        │ Версия:     3.1 (2025-11-29)
        │ Требует права root
        Логи пишутся в /var/log/backup.log
        ┌─────────────────────────────────────────────────────
    EOF
    
    # 6. Комментарий-блок в одну строку (для ленивых)
    : <<{1..10}  # закомментирует следующие 10 строк (нестандартно, но работает)
    

    Рекомендуемые шаблоны для реальных скриптов (2025)

    #!/usr/bin/env bash
    set -euo pipefail
    
    : <<'INFO'
    Имя скрипта   : deploy.sh
    Описание: Деплой приложения через Docker Compose
    Автор         : Иван Иванов <ivan@company.ru>
    Дата создания : 2025-03-15
    Версия        : 2.4
    Требования    : docker, docker-compose, jq
    Использование : ./deploy.sh [staging|production]
    INFO
    
    # код скрипта...
    

    Итог: запомни всего один идеальный вариант

    : <<'EOF'
    Твой многострочный комментарий здесь
    Можно хоть 100 строк
    Всё игнорируется, переменные не подставляются
    EOF
    

    Это самый чистый, переносимый и читаемый способ в 2025 году.
    Работает в любом Bash ≥ 3.0, не ломается от кавычек, доллара и тире.

    Команды BASH

  • Bash - основы скриптования
    A Admin

    Содержание

    Команды BASH

  • Bash - работа с мультимедиа
    A Admin

    Подавление шума средствами PulseAudio


    Вот актуальная на 2025 год шпаргалка по подавлению шума и эха в Linux через PulseAudio / PipeWire (PulseAudio-совместимый режим).
    Работает в Ubuntu 24.04, Mint 22, Fedora 41, Arch, Pop!_OS и т.д.

    1. Самые рабочие способы запуска программ без шума (2025)

    # 1. Универсальный и самый эффективный (ладдер + шумодав)
    PULSE_PROP="filter.want=ladspa_output.rnnoise_ladspa.so filter.chain='Noise Suppressor (RNNoise)'" firefox
    
    # 2. Только RNNoise (лучшее качество шумоподавления 2025)
    PULSE_PROP="media.role=production filter.want=webrtc" simplescreenrecorder
    
    # 3. Классический echo-cancel + noise-suppression (максимум фильтров)
    PULSE_PROP="filter.want=echo-cancel filter.want=noise-suppression" zoom
    
    # 4. Полный набор: эхо + шум + автогейн (для стримов и записи)
    PULSE_PROP="filter.want=echo-cancel,webrtc,agc" obs
    
    # 5. Только эхоподавление (если шум не мешает)
    PULSE_PROP="filter.want=echo-cancel" simplescreenrecorder
    

    2. Лучшие готовые однострочники для популярных программ

    Программа Команда (копируй-вставляй)
    SimpleScreenRecorder PULSE_PROP="filter.want=webrtc" simplescreenrecorder
    OBS Studio PULSE_PROP="filter.want=echo-cancel,webrtc" obs
    Zoom PULSE_PROP="filter.want=echo-cancel,webrtc" zoom
    Discord PULSE_PROP="filter.want=webrtc" discord
    Firefox / Chrome PULSE_PROP="media.role=production filter.want=webrtc" firefox
    Telegram Desktop PULSE_PROP="filter.want=webrtc" telegram-desktop
    Teams (новый) PULSE_PROP="filter.want=echo-cancel,webrtc,agc" teams-for-linux
    Любая Java-программа (Jitsi) PULSE_PROP="filter.want=webrtc" java -jar jitsi-meet.jar

    3. Как сделать это навсегда (без ввода каждый раз)

    Вариант A — через .desktop-файл (самый удобный)

    # Пример для SimpleScreenRecorder
    sudo sed -i '/Exec=/c\Exec=env PULSE_PROP="filter.want=webrtc" simplescreenrecorder %U' /usr/share/applications/simplescreenrecorder.desktop
    

    Вариант B — алиасы в ~/.bashrc или ~/.zshrc

    alias ssr='PULSE_PROP="filter.want=webrtc" simplescreenrecorder'
    alias obs='PULSE_PROP="filter.want=echo-cancel,webrtc" obs'
    alias zoom='PULSE_PROP="filter.want=webrtc" zoom'
    alias discord='PULSE_PROP="filter.want=webrtc" discord'
    

    Вариант C — глобально для всех программ (осторожно!)

    echo 'load-module module-echo-cancel source_name=noechosource sink_name=noechosink aec_method=webrtc' | sudo tee -a /etc/pulse/default.pa
    sudo systemctl --user restart pulseaudio
    

    4. Если у тебя PipeWire (Ubuntu 22.04+, Fedora, Arch)

    PipeWire уже имеет встроенный RNNoise и работает ещё лучше:

    # Убедись, что включены фильтры
    pactlugin list | grep -i noise
    
    # Запуск с шумодавом (тот же синтаксис!)
    PULSE_PROP="filter.want=webrtc" discord
    
    # Или через pipewire-pulse (ещё лучше)
    pw-cli create-node adapter '{ factory.name=support.null-audio-sink node.name=noise-suppressed media.class=Audio/Sink properties={ "filter.want"="webrtc" } }'
    

    Итог: запомни всего одну команду на всю жизнь

    PULSE_PROP="filter.want=webrtc" [имя_программы]
    

    webrtc = современный шумодав от Google (RNNoise) — лучшее, что есть в 2025 году.
    Работает в 99 % случаев без установки дополнительных модулей.

    Команды BASH

  • Bash - восстановление системы
    A Admin

    Timeshift (Точки восстановления Linux)


    Вот актуальная на конец 2025 года шпаргалка по Timeshift — всё, что реально работает в Ubuntu 22.04/24.04, Mint 21/22, Debian 12/13, Pop!_OS и т.д.

    1. Установка Timeshift в 2025 году (самые рабочие способы)

    # Способ 1 — официальный PPA (самый стабильный)
    sudo add-apt-repository -y ppa:teejee2008/timeshift
    sudo apt update
    sudo apt install timeshift
    
    # Способ 2 — если PPA уже не работает (2025+ часто так)
    # Установка из официального .deb (рекомендую)
    wget -O timeshift-latest.deb https://github.com/linuxmint/timeshift/releases/latest/download/timeshift_24.06.4_amd64.deb
    sudo apt install ./timeshift-latest.deb
    
    # Способ 3 — через Snap (не рекомендую — тормозит и не видит BTRFS)
    sudo snap install timeshift --classic
    

    2. Основные команды CLI (2025)

    Задача Команда
    Создать снапшот вручную sudo timeshift --create --comments "После установки OpenVIDU"
    Создать снапшот на конкретный диск sudo timeshift --create --snapshot-device /dev/nvme0n1p2 --comments "Чистая система"
    Посмотреть все снапшоты sudo timeshift --list
    Восстановить последний снапшот sudo timeshift --restore
    Восстановить конкретный снапшот sudo timeshift --restore --snapshot '2025-11-29_14-30-00'
    Удалить снапшот sudo timeshift --delete --snapshot '2025-11-01_10-00-00'
    Удалить все снапшоты старше 30 дней sudo timeshift --delete --keep 3 # оставить только 3 последних
    Проверить целостность всех снапшотов sudo timeshift --check
    Посмотреть, сколько места занимают sudo timeshift --list | grep -E "Size|Used"

    3. Самые полезные однострочники (мой личный набор)

    # Создать снапшот перед опасными действиями
    sudo timeshift --create --comments "Перед обновлением до Ubuntu 25.04"
    
    # Быстрое восстановление (если система упала)
    sudo timeshift --restore --skip-grub
    
    # Удалить всё, кроме 5 последних снапшотов
    sudo timeshift --delete-all --keep-last 5
    
    # Создать снапшот и сразу вывести его ID
    sudo timeshift --create --comments "После установки Docker" | grep "Created snapshot"
    
    # Автоматический бэкап по расписанию (добавь в crontab)
    0 3 * * * /usr/bin/timeshift --create --comments "Еженощный бэкап" --quiet >/dev/null 2>&1
    

    4. Важные особенности 2025 года

    Что нужно знать Комментарий
    RSYNC vs BTRFS RSYNC — работает везде, BTRFS — быстрее и экономит место (но только на BTRFS!)
    Timeshift НЕ бэкапит /home по умолчанию Включи в настройках → «Include hidden items in user home directories»
    Для восстановления вне системы нужен Live-USB Загружайся с Ubuntu Live → устанавливай timeshift → восстанавливай
    После клонирования системы на другой диск Запусти sudo timeshift --target /dev/sdX1 для переноса точек восстановления

    5. Мой личный скрипт «снапшот перед экспериментами»

    #!/bin/bash
    COMMENT=${1:-"Ручной снапшот $(date +%Y-%m-%d_%H-%M)"}
    sudo timeshift --create --comments "$COMMENT" && \
    echo "Снапшот создан: $COMMENT"
    

    Сохрани как ~/bin/ts → chmod +x ~/bin/ts → используй просто:

    ts "Перед установкой Wine и Windows-программ"
    

    Запомни всего 3 команды — и ты никогда не потеряешь систему:

    sudo timeshift --create --comments "..."    # перед любыми экспериментами
    sudo timeshift --list                       # посмотреть, что есть
    sudo timeshift --restore                    # если всё сломалось
    
    Команды BASH

  • Bash - восстановление системы
    A Admin

    Содержание

    Команды BASH

  • Bash - работа с приложениями и утилитами
    A Admin

    Установка и удаление Snap


    Вот самый чистый, актуальный и проверенный на 2025 год способ установки и полного удаления Snap в Ubuntu/Debian/Mint/Pop!_OS и производных.

    Установка Snap (2025)

    sudo apt update
    sudo apt install snapd          # это всё, что нужно
    sudo systemctl enable --now snapd.socket   # на всякий случай
    

    После этого просто:

    snap install hello-world       # проверка
    

    Полное удаление Snap (ничего не останется)

    # 1. Список установленных snap-пакетов
    snap list
    
    # 2. Удалить ВСЕ snap-пакеты одной командой (2025 способ)
    sudo snap remove --purge $(snap list | awk '!/^Name|^snapd$/ {print $1}')
    
    # 3. Удалить сам snapd и всё, что с ним связано
    sudo apt purge -y snapd gnome-software-plugin-snap 2>/dev/null || true
    sudo apt autoremove -y
    
    # 4. Удалить остатки (это важно!)
    sudo rm -rf /snap /var/snap /var/lib/snapd /var/cache/snapd
    rm -rf ~/snap
    
    # 5. (Опционально) Убить запущенные процессы snap, если висели
    sudo killall snapd || true
    
    # 6. Перезагрузить (рекомендуется)
    sudo reboot
    

    Однострочник полного удаления (мой личный, копируй-вставляй)

    sudo snap remove --purge $(snap list | awk '!/^Name|^snapd$/ {print $1}') 2>/dev/null; \
    sudo apt purge -y snapd gnome-software-plugin-snap; sudo apt autoremove -y; \
    sudo rm -rf /snap /var/snap /var/lib/snapd /var/cache/snapd ~/snap; \
    echo "Snap полностью уничтожен. Перезагрузись!"
    

    Как проверить, что Snap действительно мёртв

    which snap && echo "Ещё жив!" || echo "Snap мёртв. Празднуем!"
    ls /snap /var/snap 2>/dev/null && echo "Остатки есть" || echo "Чисто"
    

    Альтернативы Snap (куда люди уходят в 2025)

    Что ставить вместо Snap Команда установки
    Flatpak sudo apt install flatpak
    AppImage просто скачиваем и запускаем
    Обычные .deb sudo apt install ...
    Distrobox / Toolbox для запуска приложений в контейнерах
    Команды BASH

  • Bash - работа с приложениями и утилитами
    A Admin

    Консольные браузеры


    Вот актуальный на 2025 год список рабочих консольных браузеров для Linux (все ставятся через пакетный менеджер и реально поддерживаются).

    Браузер Установка (Debian/Ubuntu/Mint) Плюсы Минусы Особенности
    lynx sudo apt install lynx Самый лёгкий, быстрый, работает везде Нет JS, нет картинок, очень аскетичный Идеален для чтения текста и API
    w3m sudo apt install w3m w3m-img Поддержка картинок в терминале (kitty, xterm с sixel), табло, JS частично через внешние скрипты Картинки только в некоторых терминалах Лучший для просмотра с картинками
    links2 sudo apt install links2 Графический режим (-g) — рисует в framebuffer, поддержка таблиц Старый, но живой Можно запускать с графикой без X11
    elinks sudo apt install elinks Самый функциональный текстовый: вкладки, Lua-скрипты, поддержка CSS Нет картинок, JS почти нет Лучший текстовый браузер в 2025 году
    browsh Скачать с https://www.browsh.org или через пакет Настоящий современный браузер (на базе Firefox), JS, CSS, картинки Требует X11 или Wayland + framebuffer Визуально почти как Chrome в терминале
    bomber go install github.com/nalgeon/bomber@latest Новый (2024–2025), написан на Go, поддержка JS и CSS Пока экспериментальный Очень перспективный
    edbrowse sudo apt install edbrowse Редактор + браузер, работает как ed/vi, поддержка JS Очень специфический интерфейс Для любителей ed и автоматизации
    surfraw sudo apt install surfraw Не браузер, а набор «поисковых эльфов» (google, wiki, archlinux и т.д.) Только поиск и быстрые ссылки Удобно вместо «sr google …»

    Самые интересные и живые в 2025 году (мой личный топ):

    1. elinks — до сих пор активно развивается, лучший чисто текстовый браузер.
    2. w3m + w3m-img — если у тебя терминал kitty, alacritty с sixel или iterm2 — будешь видеть картинки.
    3. browsh — реально современный веб в консоли (YouTube, Reddit, даже Netflix прогружается).
      Установка одной строкой:
      wget https://github.com/browsh-org/browsh/releases/latest/download/browsh_linux_amd64.deb
      sudo apt install ./browsh_linux_amd64.deb
      browsh
      
    4. bomber — новый, быстрый, написан на Go, уже умеет многое из современного веба.

    Быстрая установка всего самого крутого сразу (Debian/Ubuntu/Mint):

    sudo apt update а
    sudo apt install lynx w3m w3m-img elinks links2 edbrowse surfraw
    # + browsh отдельно (см. выше)
    
    Команды BASH

  • Bash - работа с приложениями и утилитами
    A Admin

    🧹 Удаление списков пакетов APT (/var/lib/apt/lists/)


    Команда:

    rm -rf /var/lib/apt/lists/*
    

    удаляет все файлы в каталоге, где APT хранит списки пакетов (индексы репозиториев, метаданные, Release-файлы и др.).

    Разберём подробно, что означает каждый элемент, зачем это делается, и в каких случаях нельзя использовать эту команду.


    🔍 1. Что означает каждая часть команды

    rm

    Команда удаления файлов и директорий в Unix/Linux.

    -r

    Рекурсивное удаление:

    • удаляет файлы;
    • удаляет папки и всё их содержимое.

    -f

    Принудительное удаление:

    • без подтверждения,
    • игнорирует ошибки (например, если файл отсутствует).

    /var/lib/apt/lists/*

    Каталог, где хранятся загруженные APT списки пакетов:

    • индексы репозиториев,
    • файлы Packages,
    • метаданные о версиях,
    • локальные кэши источников.

    Символ * означает: удалить всё внутри каталога, но не сам каталог.


    📦 2. Что именно удаляется

    После выполнения:

    rm -rf /var/lib/apt/lists/*
    

    будет удалено буквально:

    • все кешированные списки пакетов репозиториев;
    • все индексы пакетов;
    • метаданные репозиториев;
    • файлы Release / InRelease;
    • индексация зависимостей.

    ⚠ Важно:

    Сами установленные пакеты это не затрагивает.
    Это влияет только на списки, используемые для поиска и установки.


    🔄 3. Что происходит после удаления

    APT перестанет "видеть" списки пакетов.

    При попытке установить что-либо:

    sudo apt install nano
    

    APT потребует обновить списки, и предложит выполнить:

    sudo apt update
    

    После чего заново скачает метаданные всех репозиториев.


    🐳 4. Применение в Docker (наиболее распространено)

    Для уменьшения размера Docker-образов после установки пакетов обычно делают так:

    RUN apt-get update \
     && apt-get install -y --no-install-recommends \
          curl wget nano \
     && rm -rf /var/lib/apt/lists/*
    

    Зачем?

    • уменьшает размер образа на 20–80 МБ;
    • ускоряет деплой;
    • улучшает кеширование слоёв Docker.

    🧰 5. Применение в LXC, Proxmox, chroot

    Можно безопасно очищать списки, например, чтобы:

    • пересоздать кэш APT;
    • исправить повреждённые списки;
    • обновить stuck-обновления;
    • уменьшить размер контейнера.

    Пример:

    sudo rm -rf /var/lib/apt/lists/*
    sudo apt update
    

    🛑 6. Когда НЕ стоит выполнять эту команду

    Не используйте её:

    ❌ В автономных системах (offline)

    Если у вас:

    • локальные зеркала APT,
    • нет выхода в интернет,
    • офлайн-серверы

    — после удаления списков вы НЕ сможете установить новые пакеты.

    ❌ Если повреждён DNS / сеть

    APT не сможет скачать списки — система останется без возможности установки пакетов.

    ❌ В YunoHost при некорректных зеркалах

    Потому что YunoHost активно использует APT и большое количество репозиториев.


    🧾 7. Современные альтернативы (2025)

    Очистка кэша deb-пакетов (не списков):

    sudo apt clean
    

    Удаление только старых пакетов:

    sudo apt autoclean
    

    Удаление списка только одного репозитория:

    sudo rm /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm_*
    

    Полное перевосстановление APT-метаданных:

    sudo rm -rf /var/lib/apt/lists/*
    sudo apt clean
    sudo apt update --fix-missing
    

    📝 8. Итог

    Команда:

    rm -rf /var/lib/apt/lists/*
    

    полностью очищает списки пакетов APT и широко используется:

    • для уменьшения размера Docker-образов,
    • для восстановления повреждённых списков,
    • при проблемах с зависимостями,
    • для очистки устаревших кешей.

    Однако требует интернет-соединения или локального зеркала, иначе пакетный менеджер останется без метаданных.

    Команды BASH

  • Bash - работа с приложениями и утилитами
    A Admin

    Содержание

    Команды BASH
  • 1 / 1
  • Войти

  • Login or register to search.
Powered by NodeBB Contributors
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы