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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Почитать документацию шелла по кавычкам.

    Вкратце:
    1. Внутри одинарных кавычек ВСЕ символы теряют свое специальное значение. Включая backslash, поэтому
    'STRING1\'STRING2'
    - это не экранированная одинарная кавычка в кавычках, а строка STRING1\ в одинарных кавычках потом STRING2 без кавычек, а потом еще одна открывающая одинарная кавычка, которая незакрыта.
    Можно делать так:
    'STRING1'\''STRING2'

    2. Внутри двойных кавычек, все символы теряют свое специальное значение кроме $, backslash и обратных одинарных кавычек. Примеры:
    "${VARIABLE} \${VARIABLE} $(hostname) `hostname`"
    значение VARIABLE, строка ${VARIABLE} которая раскроется позже, дважды результат команды hostname вызванный разными способами
    Ответ написан
    Комментировать
  • Что не так с моим SSH?

    saboteur_kiev
    @saboteur_kiev Куратор тега SSH
    software engineer
    Беда в том, что это сервер в одной игре, где нельзя присылать команды из другого окна допустим или терминала второго


    Это какой-то бред.
    Сервер по хорошему, должен запускаться в фоне, и логи выводить не в консоль, а писать их в файл.

    Видимо вы умышленно запускаете сервер так, чтобы он продолжан писать логи вам в терминал. Зачем - непонятно.
    Почитайте справку как правильно запускать процесс сервера.
    Ответ написан
  • Какой командой можно повторить действие "Приостановить процесс" в Мониторе ресурсов на вкладке "Сеть"?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    Ответ написан
    Комментировать
  • Как открывать изображения и другие файлы через контекстное меню?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    консоль (cmd.exe) и проводник (explorer.exe) это два разные оболочки.
    Контекстное меню проводника относится только к проводнику. Вы же не вызываете нарисовать диаграмму от экселя, в paint?

    Ассоциации на расширения регистрируются в системе, но там можно зарегистрировать только одно общее действие - запуск ( \shell\open )
    В проводнике, это можно зарегать при помощи "открыть с помощью" и указать что всегда использовать данную программу. Тогда при попытке запустить ее в cmd.exe будет тоже самое.
    А другие опции контекстного меню в cmd.exe не поддерживаются.
    Ответ написан
    Комментировать
  • Изменение репозитория ubuntu через консоль?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    в украине заблокированы русские сайты и видимо по этому не качает некоторые пакеты с офф репозитория ubuntu,

    Убунту это не российская операционная система. Официальные репозитории в РФ всего лишь еще одно зеркало.
    У вас явно другая проблема.
    Ответ написан
    3 комментария
  • Как выбрать нужно количество строк из файла?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Предполагаю, что ориентироваться лучше все-таки на заголовок, а не на пустую строку:
    tac file | sed -n '1,/^HTTP\/2/p' | tac
    Ответ написан
    Комментировать
  • Что необходимо настроить, чтобы не прописывать sudo для системных команд?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Правильный ответ заключается в том, что для sudo без аргументов, переменная PATH захардкожена

    * sudo по дефолту не использует PATH от вашего юзера или от root
    * sudo также игнорирует глобальные переменные из /etc/environment или /etc/profile.d/*.sh.
    * PATH для sudo захардкожен и равен /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

    Если нужно сделать свой PATH в судо, то можно сделать или так: "sudo bash" и уже в открытом bash настроить PATH или другие переменные.
    Или можно прописать то, что вам нужно в глобальный конфиг /etc/profile.d/name_anything.sh используя export, и запустить
    sudo su -

    Для справки, можно почитать man sudo, искать env_reset
    Ответ написан
    Комментировать
  • Как в скрипт передать аргументом нужную директорию?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    Создать кастомные автокомплит для собственной команды, чтобы автоматически дополнялись аргументы можно.

    Для этого вам нужно поковырять bash completion.
    Весь автокомплит создан на баш скриптах, и подключается в глобальном профайле

    Сами скрипты лежат обычно где-то тут:
    /etc/bash_completion

    Что почитать - гуглить на тему bash completion:
    https://www.tldp.org/LDP/abs/html/tabexpansion.html
    https://debian-administration.org/article/316/An_i...

    P.S. Хотя я увидел у вас zsh, может быть в нем есть вариант попроще.

    P.P.S. Есть вариант еще проще - наделать алиасов или скриптов с полным именем и все =)
    Ответ написан
    4 комментария
  • Как оптимизировать данный скрипт?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    А зачем?
    Тут все достаточно оптимально.
    Ну разве что заменить `` на $()
    И year и month не вычислять каждый раз, а сделать это один раз.

    #!/bin/sh
    # Пример пути до сайта /var/www/site.ru/web/
    SITEDIR="/var/www"                                  # Папка до названия доменаов
    WEB="web"                                           # Папка после названия доменов (если есть)
    LIST=${1:-$(ls -L $SITEDIR | grep -E ".*\.\w{1,5}")} # Название сайта, тут выбор или аргумент или, регулярка  можно убрать только -L ;) 
    DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
    FTPUSER="*******"                                   # Логин FTP сервера
    FTPPASS="****************"                          # Пароль FTP
    FTPHOST="**************************"                # сервер FTP
    FTPDIR="/server8/site/"                             # папка на FTP
    TMPDIR="/var/backup/site"                           # Где будут храниться временные файлы
    DATE=$(date +"%Y-%m-%d")
    YEAR=$(date +%Y)
    MONTH=$(date +%m)
    
    test ! -d $TMPDIR/$YEAR/$MONTH && mkdir -p $TMPDIR/$YEAR/$MONTH # создаем  структ уру каталогов если их нет
    
    for ELEMENT in $LIST
        do
        if [ ! -f /$SITEDIR/$ELEMENT/$WEB/$DBCONN ]; 
          then
              echo " Файл $SITEDIR/$ELEMENT/$WEB/$DBCONN не найден, сайт будет без БД!"
          else        
            DBLOGIN=$(grep "^\$DBLogin =" $SITEDIR/$ELEMENT/$WEB/$DBCONN | cut -f2 -d'"')
            DBPASS=$(grep "^\$DBPassword =" $SITEDIR/$ELEMENT/$WEB/$DBCONN | cut -f2 -d'"')
            DBNAME=$(grep "^\$DBName =" $SITEDIR/$ELEMENT/$WEB/$DBCONN | cut -f2 -d'"')
            mysqldump -u$DBLOGIN -p$DBPASS $DBNAME > $SITEDIR/$ELEMENT/$WEB/$DBNAME-$DATE.sql && echo "Дамп БД $DBNAME будет сохранен в корне сайта"  ||  echo "Ошибка дампа базы данных " $DBNAME
        fi 
    
        echo "Архивируем сайт $ELEMENT" 
      tar -cvpzf $TMPDIR/$YEAR/$MONTH/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./bitrix/backup/*\.gz*' --exclude='./bitrix/backup/*\.tar*' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . >> /dev/nool 2> /var/log/backup_error.log
      rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
      
      echo "Сохраняем $ELEMENT на FTP"
      wput  --basename=$TMPDIR --limit-rate=60000K --timestamping  --remove-source-files --tries=2 $TMPDIR/$YEAR/$MONTH/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR
      rm -f $TMPDIR/$YEAR/$MONTH/$ELEMENT-$DATE.tar.gz
      done
    rm -r $TMPDIR


    Если хотите оптимизировать, надо менять правила игры. Например выяснить, что на удаленный хост можно не ftp, а ssh тогда можно разные вещи делать, начиная от tar прямо на удаленный хост, или вообще подключить удаленный хост по NFS и сразу на него ложить как в папку.
    Не очень понятно, что вы имеете ввиду про "сохранить 1 задачу"
    Ответ написан
  • Из-за чего показывает ошибку в консоле при компиляции файла .pug?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    в том что нужно --pretty а не -pretty

    Почитайте про short-options и long-options и не путайте двойной дефис и одинарный.
    Ответ написан
    Комментировать
  • Почему команда uniq не работает должным образом?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Используйте "sort -u":
    ls -1R / | sort -u
    Ответ написан
    Комментировать
  • Не вызывается команда в exec?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    в PATH
    укажите полный путь к команде.
    Ответ написан
    Комментировать
  • Не получается заставить работать скрипт с IF, в чем может быть причина?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    #!/bin/bash
    
    if [[ -z "$1" -o "$1" == "-h" -o "$1" == "--help" ]]; then
      echo "provide directory name";
      exit 1
    fi
    
    if [[ -d "$1" ]]; then
      find "$dir" -type f -ls 2>/dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
    else
      echo "it is not a directory"
    fi
    Ответ написан
    Комментировать
  • Как переслать файл в папку root в ubuntu?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    sudo cp file /root
    Ответ написан
    3 комментария
  • Почему bash изменяет переменную?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    А так

    ffmpeg -hwaccel cuvid "$view1" "$view2" "$view3"
    Ответ написан
  • Как получить дату из имени файла?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    Вы можете написать алгоритм разбора нескольких шаблонов.
    Единой программы, которая разберет автоматом что-то вроде
    YYYY-MM-DD hh.mm.ss.jpg
    IMG_YYYYMMDD_hhmmss.jpg
    - не существует.

    НО если вы переберете все ваши файлы, возможно там всего-лишь 3-4 формата, для разбора которых достаточно скрипта в пару строк.
    Ответ написан
    Комментировать
  • Почему не срабатывает команда type в консоли?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    У вас ругается не на index.html а на то, что команда type не найдена.

    type это из cmd.exe
    в линуксе/mingw используется команда cat.
    Ответ написан
    Комментировать
  • Как выгрузить список пакетов в таблицу?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    Парсить, читать справку по pkg_info
    хорошо бы пример вывода привести и посмотреть, есть ли там возможность работы с подстановочными символами. Не у всех под рукой есть солярис.
    Ответ написан
    Комментировать
  • Почему в Cron срабатывают сразу два условия?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Покажите как именно вы входные данные поставляете.
    Есть подозрение, что вы не знаете смысла команды export, и на самом деле у вас в сравнении две пустые переменные (которые равны)
    Ответ написан
    1 комментарий