Ответы пользователя по тегу Командная строка
  • Как переключить раскладку клавиатуры в консоли?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Ответ написан
    Комментировать
  • Ошибка при попытке запуска 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 комментарий
  • Как заставить работать горячие клавиши утилиты Fzf?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    там же в archwiki всё расписано какие сорсы нужно подключать для своего шела
    https://wiki.archlinux.org/title/Fzf

    например, для zsh нужно добавить в конец файла $HOME/.zshrc такие строки:
    source /usr/share/fzf/key-bindings.zsh
    source /usr/share/fzf/completion.zsh
    Ответ написан
    Комментировать
  • Как в через терминал linux найти файлы с одним расширением и только в папках которые заканчиваются на строку?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    найти нужные файлы и заменить в них подстроку
    sed -i "s/stroka1/stroka2/g" $(find -type f -iname "*.html" | grep \\-blr\/ )
    Ответ написан
    Комментировать
  • Как узнать курс валюты в командной строке терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    у ЦБР есть официальная страничка где можно узнать как получить нужные данные

    если коротко, то будет примерно так:
    $ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Value'
    USD 74,7087
    EUR 79,5716


    с помощью curl качаем нужные данные в формате xml
    далее переводим с помощью утилиты enconv в обще нормальную кодировку
    затем с помощью утилиты xq разбираем полученные данные
    xq входит в пакет yq которая по сути является надстройкой над jq, то есть здесь xml транслируется в json а после обрабатывается утилитой jq

    вот пример вывода всех доступных курсов валют в отформатированном виде с помощью утилиты csview
    curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | .CharCode + " " + .Nominal + " " + .Value' | sort | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '

    вывод:
    ┌──────┬─────────┬─────────┐
    │ Code │ Nominal │ Value   │
    ├──────┼─────────┼─────────┤
    │ AED  │ 1       │ 20,3400 │
    │ AMD  │ 100     │ 19,1325 │
    │ AUD  │ 1       │ 51,0933 │
    │ AZN  │ 1       │ 43,9463 │
    │ BGN  │ 1       │ 40,7332 │
    │ BRL  │ 1       │ 14,3646 │
    │ BYN  │ 1       │ 26,6998 │
    │ CAD  │ 1       │ 55,2743 │
    │ CHF  │ 1       │ 80,5485 │
    │ CNY  │ 1       │ 10,8398 │
    │ CZK  │ 10      │ 33,5739 │
    │ DKK  │ 1       │ 10,7002 │
    │ EGP  │ 10      │ 24,4263 │
    │ EUR  │ 1       │ 79,5716 │
    │ GBP  │ 1       │ 90,6889 │
    │ GEL  │ 1       │ 28,3363 │
    │ HKD  │ 10      │ 95,3890 │
    │ HUF  │ 100     │ 20,7001 │
    │ IDR  │ 10000   │ 49,2185 │
    │ INR  │ 100     │ 90,1603 │
    │ JPY  │ 100     │ 55,4219 │
    │ KGS  │ 100     │ 85,4595 │
    │ KRW  │ 1000    │ 57,2524 │
    │ KZT  │ 100     │ 16,7640 │
    │ MDL  │ 10      │ 39,8181 │
    │ NOK  │ 10      │ 72,3823 │
    │ NZD  │ 1       │ 46,5734 │
    │ PLN  │ 1       │ 16,7565 │
    │ QAR  │ 1       │ 20,5244 │
    │ RON  │ 1       │ 16,1333 │
    │ RSD  │ 100     │ 67,8622 │
    │ SEK  │ 10      │ 72,2507 │
    │ SGD  │ 1       │ 55,7819 │
    │ THB  │ 10      │ 21,5775 │
    │ TJS  │ 10      │ 69,2908 │
    │ TMT  │ 1       │ 21,3453 │
    │ TRY  │ 10      │ 39,6051 │
    │ UAH  │ 10      │ 20,2313 │
    │ USD  │ 1       │ 74,7087 │
    │ UZS  │ 10000   │ 66,0995 │
    │ VND  │ 10000   │ 31,6013 │
    │ XDR  │ 1       │ 99,6569 │
    │ ZAR  │ 10      │ 40,6808 │
    └──────┴─────────┴─────────┘


    ну или конкретно для указанных валют
    $ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Nominal + " " + .Value' | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '
    ┌──────┬─────────┬─────────┐
    │ Code │ Nominal │ Value   │
    ├──────┼─────────┼─────────┤
    │ EUR  │ 1       │ 79,5716 │
    │ USD  │ 1       │ 74,7087 │
    └──────┴─────────┴─────────┘
    Ответ написан
    3 комментария
  • Как записывать в файл до тех пор пока есть место в нем?

    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
    хорошо есть и хорошо весьма
    man curl
    конкретнее смотри
    -c, --cookie-jar
    -b, --cookie
    там же и примеры
    Ответ написан
    Комментировать
  • Как получить путь до рабочего стола пользователя 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

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

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    dte
    а вообще смотри и выбирай по вкусу - Text_editors
    Ответ написан
    4 комментария
  • Есть ли офисные программы для терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    по возрастанию свежести
    sc, teapot, oleo, neoleo
    Ответ написан
    Комментировать
  • Как с помощью цикла while, команды dig вывести в файл ips.txt A-записи домена, после чего на следующей строке PTR-запись IP?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    здесь можно обойтись и простым однострочником:
    dig +short vk.com |xargs -tI{} dig -x {} +short 2>&1|awk '/^dig /{print $3}!/^dig /'
    Ответ написан
    2 комментария
  • Как попасть в папку загрузок через консоль?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Как оказалось,папка пользователя зашифрована

    откуда такие выводы ?
    вы ввели команду shell и попали в домашний каталог текущего пользователя chronos
    для справки:
    cd $HOME
    также должен перенести в папку текущего пользователя
    знак "~" также указывает на домашнюю директорию пользователся

    в последнем скриншоте после команды ls как раз и выводится содержимое домашней папки пользователя и как видно там есть папка Downloads, вот в неё и переходите раз вам нужно попасть в папку загрузок через консоль
    cd Downloads
    ну или из любого места
    cd $HOME/Downloads
    аналог:
    cd ~/Downloads
    Ответ написан
    7 комментариев
  • Как вывести количество поддиректорий в директории?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    exa -Da ПУТЬ | wc -l
    exa как замена ls
    Ответ написан
    Комментировать
  • Убрать перенос строки после выполнения команды в терминале Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    да, как пример:
    seq 1 1000000 | while read i; do echo -en "\r$i"; done


    есть еще варианты с tput
    Ответ написан
    Комментировать
  • Как правильно экранировать символы $ и ' при передаче их в ansible shell?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если не хочется вручную заморачиваться с экранированием то можно сделать так:
    cat <<'EOF' | jq -Rr '@sh'
    dokcer stop $(docker ps -aq | awk '{print $1}')
    EOF

    получим:
    'dokcer stop $(docker ps -aq | awk '\''{print $1}'\'')'
    Ответ написан
    Комментировать
  • Как вывести информацию из терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    есть еще ix.io
    Ответ написан
    Комментировать
  • Как подсчитывать объем папки в реальном времени?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    ncdu -1 /path/to/folder/
    ncdu -q -1 /path/to/folder/ (интервал 2 сек)
    Ответ написан
    Комментировать
  • Как в Linux одной командой вывести последние строки нескольких файлов?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    tail -qn5 /path/to/file{1..3}.ext
    если же вообще нужно игнорировать ошибку то:
    tail -qn5 /path/to/file{1..3}.ext 2>/dev/null
    Ответ написан
    Комментировать