• Как грамотно создать Linux дистрибутив?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Комментировать
  • Как вывести список пользователей с порядковым номером c сохранением сортировки по алфавиту?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    awk -F: '{print "- "$1}' /etc/passwd |sort |nl
    Ответ написан
    Комментировать
  • В каких редакторах текста (или Сервисах Заметок / Аутлайнерах) есть режим фильтрации строк - и продолжение работы с тем что осталось?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    вы наверное тока про windows ?
    если и про linux то тут такое можно слепить на коленке, вот к примеру однострочная функция на баше которая собирает по кирпичикам то что вам нужно
    xyz(){ cat "$1" |fzf --reverse |{ read x;echo "$x" | dte |{ read y; awk -i inplace -v x="$x" -v y="$y" '$0==x{$0=y}{print}' "$1"; } } }

    здесь довольно простая логика работы
    cat читает указанный файл и передаёт данные через трубу(|) в утилиту fzf с помощью которой фильтруем нужные нам строки, далее запоминаем наш выбор в переменную x и передаем отфильтрованную строку в консольный редактор dte которые умеет в stdin|stdout то есть принимает данные из потока | редактирует | передаёт отредактированное дальше в поток, после чего запоминаем отредактированные данные в переменную y, а под конец с помощью утилиты awk еще раз читаем наш файл и заменяем строку x на строку y.

    запускается довольно просто:
    xyz /path/to/file
    Ответ написан
  • Как передать переменную в curl?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    send=$(echo "$send" | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g')
    curl -X POST -H 'Content-type: application/json' --data "$(jq -n --arg text "$send" '{text: $text}')" https://hooks.slack.com/services/???????????/???????????/????????????????????????

    первая строка - переприсваиваем send для обрезания невидимых символов цветовых кодов
    во второй строке с помощью jq формируем валидный json для отправки данный в ключе --data
    Ответ написан
    Комментировать
  • Почему systemd-journald ест много оперативки?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    возможно она у вас там мешки ворочает
    картинка
    62962cc3963ff385227468.png

    если журнал за предыдущие рабочии сессии для вас не критичен то:
    /etc/systemd/journald.conf
    Storage=volatile
    RuntimeMaxUse=20M
    Ответ написан
    Комментировать
  • Как удалить лишние файлы в linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    создадим тестовую площадку:
    mkdir -p /tmp/TEST && touch "/tmp/TEST/backup-name-back-"{01..05}"-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-"{10..13}-{100..104}".bak" && tree /tmp/TEST

    вывод tree
    /tmp/TEST
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-100.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-101.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-102.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-103.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-104.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-100.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-101.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-102.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-103.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-104.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-100.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-101.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-102.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-103.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-104.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-100.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-101.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-102.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-103.bak
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    ├── backup-name-back-02-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-100.bak
    ...
    ├── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-102.bak
    ├── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-103.bak
    └── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    
    0 directories, 100 files

    получим 100 файлов бэкапа

    теперь несколько однострочников
    прописываем полный путь к папке где хранятся бэкапы и заодно закинем список для сравнения в переменную Т
    DIR="/tmp/TEST"; T=$(ls $DIR/* |awk -F'[-.]' '{print $4" "$(NF-2)$(NF-1)";"$0}')

    показать что останется после удаления
    echo "$T" |sort -nr |sort -un |awk -F';' '{print $2}'

    показать что удалиться
    comm -3 <(echo "$T" |sort -n) <(echo "$T" |sort -nr |sort -un) |awk -F';' '{print $2}'

    !!! удаляем !!!
    rm $(comm -3 <(echo "$T" |sort -n) <(echo "$T" |sort -nr |sort -un) |awk -F';' '{print $2}')

    по итогу получим:
    $ tree /tmp/TEST
    /tmp/TEST
    ├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    ├── backup-name-back-02-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    ├── backup-name-back-03-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    ├── backup-name-back-04-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    └── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
    
    0 directories, 5 files
    Ответ написан
    1 комментарий
  • Почему не берутся пробелы в bash переменной?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    решение через IFS:
    x="$IFS";IFS=$'\n';for WhatFile in $(find $Downloads -regex ".*\.\(mkv\|m4v\|mp4\|ts\|avi\)" -and -mmin +30 | sort -r );
    do
    IFS="$x"

    п.с.
    первоначальный(неверный) вариант
    кавычки, в одном месте поменяй на одинарные а в другом добавь двойные
    for WhatFile in "$(find $Downloads -regex '.*\.\(mkv\|m4v\|mp4\|ts\|avi\)' -and -mmin +30 | sort -r )";
    Ответ написан
    23 комментария
  • Можно ли менять файлы etc в filezilla?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    можно, для этого нужно подключится под рутом (root)

    === сервер ubuntu 20.04 ===
    должен быть установлен и запущен sshd сервер
    а также в файле /etc/ssh/sshd_config
    найти и установить значение
    PermitRootLogin yes
    после чего перезапустить sshd.service
    sudo systemctl restart sshd.service

    === filezilla ===
    протокол: SFTP
    Пользователь: root
    Ответ написан
  • Существует ли, утилита для Linux с выводом программ для их запуска?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    смотри rofi и подобные
    Ответ написан
    Комментировать
  • Как получить путь до рабочего стола пользователя Ubuntu?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    for user in /home/* #поиск домашнего каталога

    а с чего вы взяли что домашний каталог пользователя обязательно должен находится в /home ?
    $ man useradd
    ...
    -b, --base-dir BASE_DIR
    The default base directory for the system if -d HOME_DIR is not specified. BASE_DIR is concatenated with the account name to define the home directory. If the -m option is not used, BASE_DIR must exist.
    
    If this option is not specified, useradd will use the base directory specified by the HOME variable in /etc/default/useradd, or /home by default.


    то есть, при сотворении пользователя его домашний каталог находится в домашнем БАЗОВОМ каталоге для пользователей который указывается либо через переменную --base-dir либо берётся из /etc/default/useradd (где он по умолчанию /home)

    Как получить путь до рабочего стола пользователя Ubuntu?

    если нужен путь до рабочего стола текущего пользователя то проще некуда:
    systemd-path user-desktop
    если для другого(не тока текущего) пользователя то можно так:
    su - YOUR_USER -c "systemd-path user-desktop"
    или лучше так:
    runuser -l YOUR_USER -c "systemd-path user-desktop"


    если нужно узнать имена всех несистемных пользователей, то
    $ man useradd
    ...
    UID_MAX (number), UID_MIN (number)
    Range of user IDs used for the creation of regular users by useradd or newusers.
    
    The default value for UID_MIN (resp. UID_MAX) is 1000 (resp. 60000).

    но для верности можно глянуть в /etc/login.defs и оттуда узнать UID_MIN и UID_MAX
    eval $(awk '/^UID_/{print $1"="$2}' /etc/login.defs)

    ну а затем отфильтровать файл /etc/passwd по этим параметрам
    awk -v MIN=$UID_MIN -v MAX=$UID_MAX -F: '$3>MIN && $3<MAX {print $1}' /etc/passwd

    в итоге получим список несистемных пользователей на данной системе

    Есть sh скрипт который должен создать 2 desktop файла на рабочем столе и разрешить их выполнение, попробовал этот код:

    если нужно для текущего пользователя то проще простого:
    DESKTOP=$(systemd-path user-desktop)
    cp sources/update.desktop $DESKTOP && chmod ugo+rwx $DESKTOP/update.desktop
    cp sources/shutdown.desktop $DESKTOP && chmod ugo+rwx $DESKTOP/shutdown.desktop

    если для всех пользователей то просто закинуть нужные действия в функцию и запускать её от указанных пользователей в цикле
    Ответ написан
    Комментировать
  • Как объединить строки в bash скрипте?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    awk '{printf $0}' data.txt
    Ответ написан
  • Как на Убунте добавить в файл host через bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    echo "127.0.0.1 site.com" | sudo tee -a /etc/hosts

    А если надо удалить строчку?

    если она последняя то можно так:
    sudo awk -i inplace 'NR>1{print i}{i=$0}' /etc/hosts
    Ответ написан
  • Bash, как преобразовать формат даты?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ echo "091220" |jq -rR 'strptime("%d%m%y")|strftime("%Y-%m-%d")'
    2020-12-09

    мне нравится для подобных преобразований использовать утилиту jq
    Ответ написан
    Комментировать
  • Как правильно выбрать переменные из json в bash скрипте?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ cat example.json |jq -r '.server | .name,.public_net.ipv4.ip'
    my-server
    142.132.235.187


    если нужно сразу в переменные загнать то
    $ cat example.json| jq -r '.server | "name=\(.name)","ip=\(.public_net.ipv4.ip)"'
    name=my-server
    ip=142.132.235.187

    обернуть в eval и всё

    $ eval $(jq -r '.server | "name=\(.name)","ip=\(.public_net.ipv4.ip)"' example.json)
    
    $ echo $ip
    142.132.235.187
    Ответ написан
    Комментировать
  • Что делать, если бесконечно работает команда sort -u в bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ sort --help
    Использование: sort [ПАРАМЕТР]… [ФАЙЛ]…
    или: sort [ПАРАМЕТР]… --files0-from=Ф
    Печатает сортированное слияние всех ФАЙЛ(ов) на стандартный вывод.

    Если ФАЙЛ не задан или задан как -, читает стандартный ввод.
    ...

    если вы про консоль, то
    $ sort -u
    d
    a
    g
    t
    aa
      нажать <Ctrl+D> для сортировки
    a
    aa
    d
    g
    t


    если вам нужно просто прекратить работу данной команды то используйте стандартное сочетание Ctrl+C

    п.с.
    ни в коем случае не запускайте vi ))
    Ответ написан
    2 комментария
  • Как оптимизировать параметры монтирования?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    раньше много чего перепробовал но в итоге для домашнего использования остановился на этих трёх простых опциях:
    $ findmnt /
    TARGET SOURCE         FSTYPE OPTIONS
    /      /dev/nvme0n1p2 ext4   rw,noatime,commit=120

    noatime и commit довольно эффективны как для ssd так и для hdd
    если с noatime боле менее понятно, то вот commit
    из man
    commit=nrsec
        Start a journal commit every nrsec seconds. The default value is 5 seconds. Zero means default.

    единственный минус больших значений commit в том что при неправильном выключении компьютера потеряется не до 5-и секунд, что идут по умолчанию, а значительно больше. То есть, при commit=120, мы можем потерять данные что не успели записаться на диск за эти последнии две(или меньше) минуты до выключения компа, но зато без всяких каш после использования того же nobarrier.
    Ответ написан
    Комментировать
  • Bash не видит переменную после выхода из цикла. В чем может быть проблема?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    а ведь можно проще:
    awk '{system("sed -i s/"$1"/"$2"/g file.txt")}' name.txt
    Ответ написан
  • Что такое максимальная и базовая частота процессора Процессор Intel® Core™ i7-1065G7. Как это работает?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    инфа с офсайта интел
    Процессор Intel® Core™ i7-1065G7
    Процессор Intel® Core™ i5-1135G7

    там же если нажать на вопросики под интересующими вас параметрами ядра, выдаст следующее:
    Базовая частота процессора — это скорость открытия/закрытия транзисторов процессора. Базовая частота процессора является рабочей точкой, где задается расчетная мощность (TDP). Частота измеряется в гигагерцах (ГГц) или миллиардах вычислительных циклов в секунду.

    Максимальная тактовая частота в режиме Turbo — это максимальная тактовая частота при нагрузке на одно ядро процессора, которую можно достичь с помощью поддерживаемых им технологий Intel® Turbo Boost и Intel® Thermal Velocity Boost. Частота измеряется в гигагерцах (ГГц) или миллиардах вычислительных циклов в секунду.

    если выбирать то Core i5-1135G7 будет немного получше (даже встроенное в проц видео-ядро будет пошустрее 1.1 vs 1.3 GHz)

    За такие же деньги есть

    справедливости ради нужно заметить что ценовая разница приведённых вами ноутбуков составляет почти 12% а это всё же довольно существенно.
    Ответ написан
    4 комментария
  • Как получить дату -3 дня?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    как вариант взять левую утилиту и использовать ее, например jq:
    jq -nr 'now-3*24*60*60|strftime("%d.%m.%Y")'
    выдаст дату на три дня отстоящую от текущей даты

    если нужно от конкретно указанной даты:
    echo "25.04.2022" | jq -rR 'strptime("%d.%m.%Y")|mktime-3*24*60*60|strftime("%d.%m.%Y")'


    заворачиваете всё это в переменную и пользуетесь
    Ответ написан
    Комментировать