• Как получить название видео youtube?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    yt-dlp --print "%(title)s" URL
    Ответ написан
    Комментировать
  • Как разобраться в выводе lsusb?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    в usbutils помимо lsusb есть еще lsusb.py которая показывает информацию в более человекопонятном виде, но в убунту почему-то её вырезают. При желании её можно себе скачать и запустить напрямую:
    curl "https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usbutils.git/plain/lsusb.py.in" > lsusb.py && chmod +x lsusb.py

    а после запустить
    ./lsusb.py
    Ответ написан
    4 комментария
  • Как в bash добавить строку в конце файла но перед определенной строке?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если упростить, то нужно перед одной строкой вставить другую
    если делать через sed то
    STR1="echo get_template_part('template-parts/$1/$2')"
    STR2="<?php get_footer(); ?>"
    sed -i "/$STR2/i $STR1" FILE
    Ответ написан
    3 комментария
  • Как записать вводимые данные в определенном формате?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    while [[ $(wc -c <<< $MAC_IN) != 13 ]]; do
    	read -p "Please input MAC address : " # XX_XX:XX  XX-XX/XX
    	MAC_IN=$(echo -n "$REPLY"|sed 's/[^0-9a-fA-F]//g')
    done
    
    MAC=$(echo -n "$MAC_IN"|fold -w2 |tr '\n' ':')
    echo $MAC  # XX:XX:XX:XX:XX:XX:XX
    Ответ написан
    Комментировать
  • После каждого обновления программ в Pamac, места на диске становится меньше, как это остановить?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    просто почистите кеш
    pacman -Scc
    Ответ написан
    Комментировать
  • Как записывать в файл до тех пор пока есть место в нем?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Он как видно на 100049 байт.

    Мне нужно записывать в него строки ew=`cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 76` до тех пор пока он не заполнится полностью.

    то есть, у нас есть символы от A-Z a-z 0-9 каждый из которых занимает 1 байт
    нужно записывать строки с 76 символами + 1 символ перевода строки
    по итогу получим

    100049/77 = 1299 полных строк и немного хвоста
    размер хвоста
    100049-1299*77 = 26 символов

    если всё это перевести в bash-код то получим следующее
    #!/usr/bin/env bash
    
    #вводные
    FILE=file.txt
    S=100049 # общий размер в байтах
    s=76   # максимальное количество однобайтовых символов на строку
    
    N=$[S/(s+1)]
    n=$[S-N*(s+1)]
    
    echo "Cтрок + хвост = $N + $n"
    
    rm -rf $FILE
    for (( i = 0; i < $N; i++ )); do
    	cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c $s >> $FILE
    	echo >> $FILE
    done
    cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c $n >> $FILE
    
    echo "Файл записан"
    echo "Размер файла $FILE = $(stat -c %s $FILE) байт"

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

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    вы конечно мастер путанных вопросов, но в принципе понятно чего вы добиваетесь, поэтому просто приведу маленький пример, а там уже переделаете под свои нужды
    допустим у нас есть несколько файлов с результатами в виде одной строки
    как пример
    echo "ОК" > {biosinfo,meminfo,cpuinfo}.result
    создадим три файла которые содержат значение "OK"

    там же создадим скрипт results_table.sh
    #!/usr/bin/env bash
    
    FILEPATH_BIOSINFO_RESULT="biosinfo.result"
    FILEPATH_MEMINFO_RESULT="meminfo.result"
    FILEPATH_CPUINFO_RESULT="cpuinfo.result"
    
    BIOSINFO_RESULT=$(cat "$FILEPATH_BIOSINFO_RESULT")
    MEMINFO_RESULT=$(cat "$FILEPATH_MEMINFO_RESULT")
    CPUINFO_RESULT=$(cat "$FILEPATH_CPUINFO_RESULT")
    
    TABLE="TEST;RESULTS
    BIOS ver;$BIOSINFO_RESULT
    Memory;$MEMINFO_RESULT
    CPU;$CPUINFO_RESULT"
    
    echo "$TABLE" | csview -d";"

    здесь мы прописываем в переменную TABLE нужную нам информацию в виде текстового CSV формата, а затем с помощью утилиты csview выводим в виде таблицы

    результат работы скрипта
    ┌──────────┬─────────┐
    │ TEST     │ RESULTS │
    ├──────────┼─────────┤
    │ BIOS ver │ ОК      │
    │ Memory   │ ОК      │
    │ CPU      │ ОК      │
    └──────────┴─────────┘
    Ответ написан
    Комментировать
  • Как узнать на каком жестком диске стоит Линукс?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    информацию можно посмотреть через lsblk где вывод дополнить VENDOR и MODEL для лучшей идентификации нужного диска
    lsblk -po "NAME,SIZE,TYPE,TRAN,MOUNTPOINTS,VENDOR,MODEL"

    смотрим имя раздела где в MOUNTPOINTS примонтирован корень(/) системы, а зная раздел можно увидеть и диск которому он принадлежит

    имя раздела(в /dev/...) куда примонтирован корень системы можно еще посмотреть командой
    findmnt -o SOURCE -n /
    Ответ написан
    Комментировать
  • Как удалить все строки до n через sed?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    awk "NR>3" FILE
    вывести строки что больше 3

    awk -i inplace "NR>3" FILE
    где -i inplace перезаписывает файл, то есть по итогу в файле останутся строки начиная с четвертой

    N=3
    awk -i inplace "NR>$N"

    то же что и предыдущее, но с указанием номера строки через внешнюю переменную
    Ответ написан
    Комментировать
  • Где находится каталог iso в archlinux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Начал по гайду, сразу проблемы:

    по какому гайду ? у Арча основной гайд это арчвики, а там в разделе Installation guide: Проверка подписи немного другое написанно, а именно
    На системах с установленным GnuPG вы можете сделать это, скачав ISO PGP signature (ссылка на него есть на странице загрузок в разделе Checksums) в каталог с образом и выполнив команду:

    $ gpg --keyserver-options auto-key-retrieve --verify archlinux-версия-x86_64.iso.sig

    то есть там ни про какой "каталог iso" речи не идёт, а говорится про каталог куда был скачан образ.

    хотя как по мне проще качать через официальный torrent, смотри https://archlinux.org/releng/releases/
    что в принципе позволяет пропустить проверку если не параноить.
    а так, качаете образ и sig для него в одну папку
    archlinux-2022.12.01-x86_64.iso
    archlinux-2022.12.01-x86_64.iso.sig

    после чего там же проделываете
    gpg --keyserver-options auto-key-retrieve --verify archlinux-2022.12.01-x86_64.iso.sig

    можно вместо этого проверить через тот же sha256
    $ sha256sum archlinux-2022.12.01-x86_64.iso
    de301b9f18973e5902b47bb00380732af38d8ca70084b573ae7cf36a818eb84c  archlinux-2022.12.01-x86_64.iso

    после чего сверить полученную контрольную сумму с контрольной суммой что указанна на офсайте

    а можно даже так (предварительно указав контрольную сумму для проверки образа)
    $ echo -n "de301b9f18973e5902b47bb00380732af38d8ca70084b573ae7cf36a818eb84c archlinux-2022.12.01-x86_64.iso" |sha256sum --check
    archlinux-2022.12.01-x86_64.iso: ЦЕЛ


    я ставлю на VB

    для виртуальных машин можно использовать облегченные официальные образы
    Ответ написан
    2 комментария
  • Как отловить пропажу интернета?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Единственное ли решение запускать bash скрипт через n количество времени, который пингует гугл и в зависимости от результата совершает действие?

    если интернет это обязательное наличие гугла то стучимся в их dns
    fping -r1 -q 8.8.8.8 && echo OK || echo NO
    ну и закинуть это в планировщик

    можно вместо гугла подобрать какой-то другой глобально доступный и более быстрый dns
    $ fping -e -r 1 -a -q 1.1.1.1 8.8.8.8 77.88.8.8 208.67.220.220
    1.1.1.1 (1.31 ms)
    8.8.8.8 (14.3 ms)
    208.67.220.220 (16.9 ms)
    77.88.8.8 (51.5 ms)

    которые соотвецтвуют
    CloudflareDNS
    GoogleDNS
    OpenDNS
    YandexDNS

    при желании можно простучать сразу по нескольким ресурсам
    fping -r1 -q 1.1.1.1 8.8.8.8 77.88.8.8 208.67.220.220 && echo OK || echo NO
    Ответ написан
    Комментировать
  • Почему не работает node js в manjaro после перезапуска терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    для фиксации нужно делать через default, это подробно показанно в nvm --help в примерах.

    в данном случае нужно сделать так
    nvm alias default 14.22.1

    п.с.
    Установил nvm таким способом ...

    с огнём играете )) не нужно использовать древние инструкции при работе с Арчем, а то может быть чревато. В большинстве случаев достаточно того что написанно в арчвики и/или в прикреплённых комментах к данному пакету в АУР, здесь это nvm#comment-764001, да и при установке данного пакета также выводилась информация что нужно сделать


    paru -S nvm
    ...
    You need to source nvm before you can use it. Do one of the following
    or similar depending on your shell (and then restart your shell):

    echo 'source /usr/share/nvm/init-nvm.sh' >> ~/.bashrc
    echo 'source /usr/share/nvm/init-nvm.sh' >> ~/.zshrc

    You can now install node.js versions (e.g. nvm install 10) and
    activate them (e.g. nvm use 10).

    init-nvm.sh is a convenience script which does the following:

    [ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"
    source /usr/share/nvm/nvm.sh
    source /usr/share/nvm/bash_completion
    source /usr/share/nvm/install-nvm-exec

    You may wish to customize and put these lines directly in your
    .bashrc (or similar) if, for example, you would like an NVM_DIR
    other than ~/.nvm or you don't want bash completion.
    Ответ написан
    1 комментарий
  • Какой дистрибутив Arch Linux выбрать?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Какой дистрибутив Arch Linux выбрать?
    Я нашёл вот этот сайт...

    если подходить к вопросу основательно то лучше искать информацию у первоисточников
    например, те же дистрибутивы основанные на Archlinux можно посмотреть на офсайте Арча
    https://wiki.archlinux.org/title/Arch-based_distri...
    там их порядка 30 которые боле менее активны и для каждого из них даны ссылки на офстраницу, изучив информацию с которых можно понять с какой целью был создан тот или иной дистрибутив.

    вопросов 2:
    1. Смогу ли я изменить внешний вид под macOS где всё сверху, анимашки красивые и прочее
    2. Какая основная разницы между всеми этими дистрибутивами?


    сам Arch это конструктор, в том же основном гайде по инсталяции Installation guide после установки у вас будет только рабочая голая консоль, а далее уже поверх всего этого вы при желании накатываете WM или DE, ну и под конец запиливаете это всё под себя добавляя нужный функционал и рюшечки.
    Дистрибутивы на основе Арча это по большей части просто собранный за вас конструктор со своим стилем и направлением, например тот же BlackArch это своеобразный аналог всем известной Kali
    Ответ написан
    1 комментарий
  • Как сравнить вывод скрипта с файлом?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    cmp -s <(./test.sh) test && echo 1||echo 0
    Ответ написан
    Комментировать
  • Почему не заменяет перенос строки на пробел?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    speedtest --simple |awk 'BEGIN{RS="";FS="\n"}{print $2" "$3}'

    где
    RS - разделитель строк
    FS - разделитель полей
    Ответ написан
    Комментировать
  • Как обновить Gnome?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    судя по этой ссылке где показан текущий статус основного пакета gnome-shell входящего в метапакет gnome , на сегодня имеем такую ситуацию:
    stable1:42.5-1
    testing1:43.1-1
    unstable1:43.1-1

    то есть, есть несколько вариантов, это либо просто подождать какое-то время пока обновление не докатится до stable или же самому переключится на ветку testing или unstable

    чтобы переключится на ветку testing выполните:
    sudo pacman-mirrors --api --set-branch testing
    sudo pacman-mirrors --fasttrack 5 && sudo pacman -Syyu

    подробнее про смену веток смотри Switching_Branches
    Ответ написан
    1 комментарий
  • Что использовать для сравнения двух CSV файлов?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    допустим у нас есть файлы file1.csv и file2.csv
    $ cat file1.csv
    kpi1,kpi2,kpi3,kpi4,kpi5
    1.23,5.67,2.21,3.45,4.44
    
    $ cat file2.csv
    kpi1,kpi2,kpi3,kpi4,kpi5
    0.23,5.67,2.22,3.45,2.44

    где согласно условию: "Заголовки одинаковые, возможны вариации в значениях."

    cat file1.csv | head -1 | tr ',' '\n' > file3_1.csv
    cat file1.csv | tail -1 | tr ',' '\n' | paste file3_1.csv - > file3_2.csv
    cat file2.csv | tail -1 | tr ',' '\n' | paste file3_2.csv - > file3_3.csv

    в итоге получим
    $ cat file3_3.csv
    kpi1	1.23	0.23
    kpi2	5.67	5.67
    kpi3	2.21	2.22
    kpi4	3.45	3.45
    kpi5	4.24	2.44

    для удобства можно ввести 4-й столбец где укажем разницу между вторым и третим
    cat file3_3.csv | awk '{print $0"\t"$2-$3}' > file3_4.csv

    $ cat file3_4.csv
    kpi1	1.23	0.23	1
    kpi2	5.67	5.67	0
    kpi3	2.21	2.22	-0.01
    kpi4	3.45	3.45	0
    kpi5	4.24	2.44	1.8

    а заодно добавим заголовки
    echo -e 'name\t$2\t$3\t$2-$3' | cat - file3_4.csv > file3_5.csv

    $ cat file3_5.csv
    name	$2	$3	$2-$3
    kpi1	1.23	0.23	1
    kpi2	5.67	5.67	0
    kpi3	2.21	2.22	-0.01
    kpi4	3.45	3.45	0
    kpi5	4.44	2.44	2

    пример того как в консоли выделить красным цветом строки где разница между вторым и третим столбцом больше нуля:
    cat file3_5.csv | awk '$4>0{print "\033[41m"$0"\033[0m"}$4<=0{print}'


    для красивого оформления в консоли можно использовать утилиту csview
    $ csview -t file3_5.csv
    ┌──────┬──────┬──────┬───────┐
    │ name │ $2   │ $3   │ $2-$3 │
    ├──────┼──────┼──────┼───────┤
    │ kpi1 │ 1.23 │ 0.23 │ 1     │
    │ kpi2 │ 5.67 │ 5.67 │ 0     │
    │ kpi3 │ 2.21 │ 2.22 │ -0.01 │
    │ kpi4 │ 3.45 │ 3.45 │ 0     │
    │ kpi5 │ 4.44 │ 2.44 │ 2     │
    └──────┴──────┴──────┴───────┘

    пример покраски значения в таблице:
    csview -t file3_5.csv | awk '$8>0{print "\033[41m"$0"\033[0m"}$8<=0{print}'

    636a486564c22703960926.png

    для перекидывания в markdown используем ключ -s, --style
    $ csview -t -s Markdown file3_5.csv
    | name | $2   | $3   | $2-$3 |
    |------|------|------|-------|
    | kpi1 | 1.23 | 0.23 | 1     |
    | kpi2 | 5.67 | 5.67 | 0     |
    | kpi3 | 2.21 | 2.22 | -0.01 |
    | kpi4 | 3.45 | 3.45 | 0     |
    | kpi5 | 4.44 | 2.44 | 2     |
    Ответ написан
    1 комментарий
  • Как отфильтровать URLв и скачать файлы по ним?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    допустим есть большой файл(urls1.txt) где находятся только ссылки с расчетом один URL на строку
    awk '/\.pdf$|\.xls$|\.xml$/ {print "url="$0}' urls1.txt > urls2.txt

    отбираем нужные url-адреса и формируем список urls2.txt для последующего скармливания curl

    curl --remote-name-all --parallel -K urls2.txt
    закачиваем файлы параллельно из списка urls2.txt

    п.с.
    для удобства сам список можно разбить на несколько, например по 1000 ссылок на файл
    mkdir urls
    split --lines=1000 --numeric-suffixes=1 urls2.txt urls/list_

    в папке urls появятся файлы по типу list_xxxx
    после чего можно по очереди их скармливать curl
    curl --remote-name-all --parallel -K list_xxxx
    ну и обернуть всё это в цикл при желании
    Ответ написан
    Комментировать