Задать вопрос
  • Как в bash из массива удалить элемент c с конкретным значением?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    lngList=("${lngList[@]/none/}")
    Ответ написан
    Комментировать
  • Как передать массив в Bash-скрипт?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    test.sh
    #!/usr/bin/env bash
    
    Langs=($@)
    
    for lang in "${Langs[@]}"; do
      echo "lang[$((i++))]=$lang"
    done


    $ ./test.sh ru en de
    lang[0]=ru
    lang[1]=en
    lang[2]=de
    Ответ написан
    2 комментария
  • Как переключить раскладку клавиатуры в консоли?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Ответ написан
    Комментировать
  • Как установить утилиту nap в arch linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    yay -S nap-bin
    Ответ написан
    Комментировать
  • Как добавить имя текстового файла в сам файл первой строчкой?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    awk -i inplace 'BEGIN{getline;print FILENAME"\n"$0}{print}' ФАЙЛ
    Ответ написан
    Комментировать
  • Как исправить base: grub-install command not found?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    вылетела ошибка "grub-install: error: failed to get canonical path of"`airootfs`"

    я так понимаю вы это делаете при установке системы, так как airootfs относится к установочному iso-образу

    Когда я писал снаружи(не внутри bash) вылетела ошибка

    вы пытаетесь установить загрузчик на установочный iso-образ что и вызывает данную ошибку.
    при установке системы куманду grub-install (установка загрузчика системы) нужно делать до выхода(exit) из chroot(в данном случае arch-chroot).
    Ответ написан
  • Как поменять место установки в arch linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    вы сейчас на этом шаге
    Installation_guide#Install_essential_packages

    то какой раздел диска вы монтируете в папку /mnt (куда будет ставиться система) проделывается на предыдущем шаге
    Installation_guide#Mount_the_file_systems
    Ответ написан
    Комментировать
  • Как изменить шрифт терминала в Arch Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Использую alacritty, но чтобы фонт прописывали в его конфигах, я не видел


    уже не раз говорил про арчвики куда следует заглядывать в первую очередь
    https://wiki.archlinux.org/title/Alacritty#Font

    также у alacritty есть официальный сайт где подробно описывается его конфиг
    https://alacritty.org/config-alacritty.html

    то где лежит конфиг alacritty или куда нужно его положить
    https://wiki.archlinux.org/title/Alacritty#Configu...
    или даже на том же github
    https://github.com/alacritty/alacritty?tab=readme-...
    Ответ написан
    Комментировать
  • Ошибка при попытке запуска Arch в оболочке BSPWM. Как решить?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    почему я с таким мог столкнуться и как исправить?

    тут ничего необычного если проследить цепочку запуска startx

    для начала глянем по нему man (man startx), для удобства это можно сделать даже в браузере так как у арча есть для этого специальный сервис где можно вести поиск по манам для пакетов из официального репозитория
    в данном случае нас интересует https://man.archlinux.org/man/startx.1
    там написано что это простой скрипт для xinit и который призван облегчить его настройку
    также там написано, если кратко, что конфигурационный файл(xinitrc) который считываться при запуске программы первым делом берётся из домашней директории пользователя(~/.xinitrc), а если его там не окажется то из стандартного места в системе(/etc/X11/xinit/xinitrc)
    По видимому своего файла ~/.xinitrc в домашней директории пользователя у вас нету поэтому берётся стандартный конфиг из /etc/X11/xinit/xinitrc (который кстати по сути является баш-скриптом)
    смотрим что он там запускает:
    $ cat -n /etc/X11/xinit/xinitrc 
    ...
        51	twm &
        52	xclock -geometry 50x50-1+1 &
        53	xterm -geometry 80x50+494+51 &
        54	xterm -geometry 80x20+494-0 &
        55	exec xterm -geometry 80x66+0+0 -name login

    twm, xclock и xterm
    как видим это как раз то на что и ругается вывод startx, а именно на отсутствие данных команд - command not found
    установка twm, xclock и xterm

    для начала поймём каким пакетам принадлежат данные команды
    обновим базу по файлам пакетов
    $ sudo pacman -Fy
    ищем
    $ pacman -F twm
    extra/xorg-twm 1.0.12-1
        usr/bin/twm
    
    $pacman -F xclock
    extra/xorg-xclock 1.1.1-1
        usr/bin/xclock
    
    $ pacman -F xterm
    ...
    extra/xterm 392-1
        usr/bin/xterm

    для xterm вывод большой, но нам нужен пакет у которого файл xterm лежит в /usr/bin
    можно даже искать по конкретному файлу
    $ pacman -F /usr/bin/xterm
    usr/bin/xterm принадлежит extra/xterm 392-1


    в общем, нужные нам пакеты будут
    xorg-twm
    xorg-xclock
    xterm

    устанавливаем
    sudo pacman -S xorg-twm xorg-xclock xterm


    но я как-то сомневаюсь что вам нужна эта борода( twm и др.) вместо упомянутого выше bspwm, так что возвращайтесь обратно к xinitrc и настраивайте его должным образом.

    п.с.
    формулировка вопроса
    Ошибка при попытке запуска Arch в оболочке BSPWM

    неверная
    арч не запускается в оболочке bspwm, скорее наоборот, а в данном случае до запуска bspwm дело даже не доходит
    Ответ написан
    1 комментарий
  • Как установить bspwm на Arch'е?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Решил перейти на оконный менеджер bspwm вместо десктопных оболочек.

    похвально конечно, но есть пару минусов у данного выбора:
    первое -- вайланд шагает по планете и выбирать сегодня bspwm который базируется на иксах это малость опрометчиво, да да, я слышу голоса с галёрки, но тем не менее;
    второе -- судя по релизам, у данной программы их не было уже 4 года, а это говорит о многом.
    ну и как следствие падение его популярности

    После установки понял что, по всей видимости, sxhkd итп вместе с bspwm не подтянулись, тк вижу я пустое окно с мышкой и неработающими хоткеями.
    ...
    А все гайды и вики связаны с непосредственной настойкой конфигов, а не самим процессом установки.

    у Арча есть библия и называется она Арчвики, там же по вашему вопросу есть и установки и настройка и многое другое для bspwm
    ну вот для примера смотрим английскую вики по Bspwm#Installation где в первом же предложении черным по белому написано
    Install bspwm for the window manager itself and sxhkd for the X hotkey daemon.

    то есть вместе с bspwm нужно установить и менеджер горячих клавиш sxhkd
    прочитали, сделали:
    sudo pacman -Syu bspwm sxhkd
    где с помощью официального менеджера пакетов обновили систему(-Syu) и установили два нужных нам пакета/программы

    Но я бы на вашем месте, раз уж вы обратили внимание на тайлинги, посмотрел в сторону Sway или Hyprland которые боле менее популярны и основаны на вайланде, ну или если хотите что-то близкое к философии bspwm то глянуть в сторону River, правда он еще молодой и развивается неспешно, но пользоваться им при желании уже можно.
    график до кучи
    Ответ написан
    1 комментарий
  • Почему Kubuntu и другие дистрибутивы называет стоковые папки кириллицей?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если нужно на латинице то выполни в консоли
    LC_ALL=C.UTF-8 xdg-user-dirs-update --force
    детальнее смотри XDG user directories/Creating default directories
    Ответ написан
    Комментировать
  • Как удалить межсетевой экран?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    установился межсетевой экран который показывается с раширением tray и никак не убирается


    вопрос нужно стараться задавать более корректно и желательно без двоякого толкования
    убрать просто иконку с трея или удалить программу это не одно и тоже

    все иконки в трее у популярных графических оболочках убирается довольно легко, вы не озвучили какая DE у вас установлена, но предположим что вы установили такую же как и в официальном установочном образе, где используется KDE, тогда чтобы удалить иконку(applet), достаточно просто щелкнуть ПКМ на панели и выбрать последний пункт(по английски пишется как - Enter edit mode), в этом режиме наводим на системный трей и в появившемся окошке выбираем Configure в результате появиться окно System Tray Settings
    6644f2dced2f2184028868.png
    где уже находим нужный апплет(firewall-applet) и выбираем чтобы он был всегда скрыт

    Другое дело удалить саму программу/пакет
    удалять довольно просто, обычно достаточно будет
    sudo pacman -R ИМЯПАКЕТА
    как в данном случае узнать имя пакета который предоставляет данный апплет ?
    можно просто щелкнуть ПКМ по данному аплету в трее, About - появиться окно с информацией по программе,
    66450746d96f2923791213.jpeg
    где видим имя сайта предоставляющего данную программу, здесь это будет сайт https://firewalld.org
    пойдя в загрузки на сайте можно увидеть имя программы, хоть здесь по названию сайта это и так будет понятно - firewalld
    ну а дальше уже поиском через сайт Арча или консоль найти конкретное имя пакета в базе пакетов Арча, так как редко но имя может всё-же немного отличаться
    вот поиск через оф сайт арча
    https://archlinux.org/packages/?q=firewalld
    как видим найденный пакет так и будет называться firewalld
    идём в арчвики и смотрим, опять же через поиск данного имени, если пакет боле менее популярный то описание того что и как можно делать с программой там найдётся
    https://wiki.archlinux.org/title/Firewalld
    где видно что помимо установки данного пакета
    sudo pacman -S firewalld
    для удаления
    sudo pacman -R firewalld

    для его работы также необходимо запуск службы firewalld.service
    sudo systemctl enable firewalld.service
    sudo systemctl start firewalld.service

    где enable - стартовать сервис при запуске системы, start - стартовать немедленно
    там по ссылкам в вики всё это есть, нужно просто спуститься в кроличью нору
    аналогично когда нужно остановить сервис и убрать из автозагрузки то выполняем:
    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service


    под одним из удалённых ответов вы написали
    если кому-то нужно будет
    sudo -i
    rm /bin/firewall-applet

    данный файл /bin/firewall-applet принадлежит какому-либо установленному пакету, и вы своими действиями можно сказать его повредили что может сказаться при следующем обновлении данного пакета, да и на работу других пакетов/программ которые завязаны на данный пакет это тоже может сказаться, в общем потом будете ловить косяки на ровном месте
    В конкретном случае файл /bin/firewall-applet принадлежит пакету firewalld
    для поиска кому и что принадлежит очень удобно использовать возможности самого пакмана
    обновить подробную базу пакмана
    $ sudo pacman -Fy
    в отличии от стандартного обновления с помощью ключа -S, ключ -F работает с базой которая содержит информацию также и по всем файлам пакетов
    $ pacman -F firewall-applet
    extra/firewalld 2.1.2-2
        usr/bin/firewall-applet

    где видно что данный файл принадлежит пакету firewalld из репозитория extra
    то есть, вы удалили один из файлов принадлежащих пакету firewalld (о котором я и писал в первой части ответа)
    Ответ написан
    3 комментария
  • Замена строк в json?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    это можно сделать довольно легко с помощью gron
    допустим есть два сопоставимых файла 1.json и 2.json
    необходимо заменить значение ключа iata_code в первом файле на значения из второго файла.
    1.json
    {
        "json": 1,
        "city": "Лондон",
        "airports": [
          {
            "name": "Хитроу",
            "city": "Лондон",
            "country": "Великобритания",
            "iata_code": "ЛХР"
          },
          {
            "name": "Хитроу2",
            "city": "Лондон2",
            "country": "Великобритания2",
            "iata_code": "ЛХР2"
          }
        ]
    }

    2.json
    {
      "json": 2,
      "city": "London",
      "airports": [
        {
          "name": "Heathrow",
          "city": "London",
          "country": "United Kingdom",
          "iata_code": "LHR"
        },
        {
          "name": "Heathrow2",
          "city": "London2",
          "country": "United Kingdom2",
          "iata_code": "LHR2"
        }
      ]
    }


    1) удаляем все значения iata_code из первого файла и записываем в промежуточный файл 3.gron
    gron 1.json | grep -v "iata_code" > 3.gron

    2) во втором файле оставляем только значения iata_code и добавляем в промежуточный файл 3.gron
    gron 2.json | grep "iata_code" >> 3.gron

    3) преобразовываем промежуточный файл в json
    gron --ungron 3.gron > 3.json

    результат
    3.json
    {
      "airports": [
        {
          "city": "Лондон",
          "country": "Великобритания",
          "iata_code": "LHR",
          "name": "Хитроу"
        },
        {
          "city": "Лондон2",
          "country": "Великобритания2",
          "iata_code": "LHR2",
          "name": "Хитроу2"
        }
      ],
      "city": "Лондон",
      "json": 1
    }
    Ответ написан
    1 комментарий
  • Может ли деградировать CPU/другое железо?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    попробуйте отключить защиту от всяких спектров, мельдаунов и тому подобного; для локального пользователя это не страшно, но вот производительность на некоторых процессорах порой урезает значительно. Как раз в последние несколько лет, за которые вы наблюдаете падение производительности, эти заплатки и были введены.
    Под линем параметр mitigations=off нужно скормить ядру, под виндой вроде в реестре нужно что-то подкручивать.
    Ответ написан
    Комментировать
  • Что делать если средство разметки дисков показывает разделы неправильно?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    когда задаёте вопросы старайтесь не урезать информацию там где это не нужно. Если бы вы сразу показали картинку полностью то в информации о диске многие бы обратили внимание на запись того что диск динамический, а так мало кто может вспомнить или задаться вопросом, а почему разделы на картинке серо-зелённого цвета. Преобразуйте диск в базовый, а после уже устанавливайте туда linux.
    Ответ написан
    Комментировать
  • Как отформатировать вывод из json?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ echo '{ "exitcode" : 0, "exited" : 1, "out-data" : "Filesystem Size Used Avail Use% Mounted on\nudev 2.3G 0 2.3G 0% /dev\ntmpfs 479M 672K 478M 1% /run\n/dev/mapper/pmg-root 28G 2.7G 24G 11% /\ntmpfs 2.4G 1.1M 2.4G 1% /dev/shm\ntmpfs 5.0M 0 5.0M 0% /run/lock\n" }' | jq -r '."out-data"' | column -t
    
    Filesystem            Size  Used  Avail  Use%  Mounted    on
    udev                  2.3G  0     2.3G   0%    /dev       
    tmpfs                 479M  672K  478M   1%    /run       
    /dev/mapper/pmg-root  28G   2.7G  24G    11%   /          
    tmpfs                 2.4G  1.1M  2.4G   1%    /dev/shm   
    tmpfs                 5.0M  0     5.0M   0%    /run/lock
    Ответ написан
    Комментировать
  • Поможет ли замена SSD на NVME ускорить работу с браузером Firefox?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    да, по идее должно немного ускориться если вы разместите ваш хомяк($HOME) на NVME так как профиль и кэш от firefox хранятся там. (это при стандартном размещении, а насчет всяких флатпаков и им подобных невкурсе). Но если нужно выжать максимум то лучше переместить кэш и профиль в ОЗМ(RAM) где доступ будет самым быстрым.
    По теме можно глянуть статью на archwiki - Firefox/Profile on RAM

    п.с.
    тут вспомнилось что при долгом использовании sqlite баз в firefox они могут малость засираться, по этому поводу есть даже древняя но всё еще актуальная статья на хабре - Ускоряем запуск браузера FireFox
    Ответ написан
    Комментировать
  • Как создать свой образ Arch Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    смотри статью на арчвики - Archiso, там всё подробно расписано, по нему также и официальный образ создаётся.
    Ответ написан
    Комментировать
  • Какую информацию могут собирать программы\приложения в linux системе?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    любой код(программа) может собирать ту или иную информацию независимо от ОС, но я так понимаю вы имеете в виду чувствительно-важную информацию без согласия на то, то есть скрытно. Если рассматривать использования программ с закрытым и открытым исходным кодом, то второе будет иметь явное преимущество в плане доверия и некоторых гарантий безопасности.
    С закрытым кодом всё просто - вы либо верите что в черном ящике под названием программа нету закладок либо не верите, некоторой гарантией конечно может выступать известный бренд либо лицо которое эту программу производит, и если у вас закрались подозрения то вам нужно либо смириться либо искать альтернативу, другого варианта нету.
    С открытым кодом интереснее - понятное дело что даже если код открыт, то при достаточно большом его объёме трудно найти лазейку, но аудит кода всё же возможен хоть и трудозатратен и не гарантирует 100% чистоты, но ведь постепенно развиваются и автоматизированные средства проверки кода что при первом варианте в принципе невозможно. Далее, сейчас для открытого кода популярно также держать и доступный git репозиторий что позволяет отслеживать историю изменений, то есть при желании можно получить информацию о том кто и когда внёс изменения, что также мотивирует разработчиков не косячить.

    В общем, если брать боле менее популярные программные продукты то у закрытого кода есть тока один сдерживающий фактор - репутация, пошатнуть которую к сожалению довольно сложно без прямых доказательств, а для косвенных нужно приложить довольно много времени и сил что по времени порой становится просто неактуально. У открытого кода в противовесе также идёт репутация, но потерять её довольно легко при открытом коде и истории изменений, поэтому отбор добропорядочных здесь идёт намного жестче.
    Ответ написан
    Комментировать
  • Как увидеть список и типы разделов на вставленной, но неподмонтированной флешке?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    как пример можете взять вывод утилиты lsblk за основу
    $ lsblk -o NAME,RM,TRAN,SIZE,TYPE,PTTYPE,FSTYPE,PARTTYPENAME,MOUNTPOINTS,MODEL | awk 'NR==1 || $2 == 1'
    NAME        RM TRAN     SIZE TYPE PTTYPE FSTYPE  PARTTYPENAME       MOUNTPOINTS                  MODEL
    sda          1 usb     14,7G disk dos    iso9660                                                 Transcend 16GB
    ├─sda1       1          789M part dos    iso9660 Empty              /run/media/admin/ARCH_202309 
    └─sda2       1           15M part dos    vfat    EFI (FAT-12/16/32)

    где RM это флаг съёмного устройства, 1 съёмное а 0 не съёмное, TRAN device transport type в общем тип устройства usb, ssd, nvme ..., с остальными параметрами думаю боле-мене ясно, их можно убавить по желанию.
    С помощью `awk` мы отфильтруем(`$2 == 1`) тока съёмные устройства, ну и заодно оставим шапку(`NR==1`) для информативности.
    При желании это можно вывести более кратко
    $ lsblk -o NAME,RM,FSTYPE,MOUNTPOINTS | awk '$2==1{$2="";print}'
    sda  iso9660
    ├─sda1  iso9660 /run/media/admin/ARCH_202312
    └─sda2  vfat

    где наличие третьего столбца у раздела говорит о его смонтированности

    п.с.
    тег CentOS тут думаю лишний, такая информация получается с помощью стандартных линукс утилит

    п.с.2
    может быть такая ситуация когда файловая система записана напрямую на весь диск без таблицы разделов, тогда вывод будет выглядеть примерно так:
    $ lsblk -o NAME,RM,TRAN,SIZE,TYPE,PTTYPE,FSTYPE,PARTTYPENAME,MOUNTPOINTS,MODEL | awk 'NR==1 || $2 == 1'
    NAME        RM TRAN     SIZE TYPE PTTYPE FSTYPE PARTTYPENAME     MOUNTPOINTS MODEL
    sda          1 usb     14,7G disk        ext4                                Transcend 16GB

    значение в PTTYPE будет отсутствовать

    п.с.3

    можно даже так с отфильтрованным и отформатированным выводом через json
    $ lsblk -Jpo PKNAME,NAME,RM,FSTYPE,MOUNTPOINTS | jq -r '.blockdevices[] | select(.rm == true) | .children[] |select(.mountpoints[] == null) | "Съёмное устройство \(.pkname) имеет не смонтированный раздел \(.name) с файловой системой \(.fstype)"'
    Съёмное устройство /dev/sda имеет не смонтированный раздел /dev/sda2 с файловой системой vfat

    для учета файловой системы которая записана на весь диск без таблицы разделов необходимо в команду выше добавить некоторые условия, но это уже будет вашей разминкой.
    Ответ написан
    4 комментария