Задать вопрос
  • Как сделать так, чтобы баш скрипт работал с папками, содержащими пробелы?

    xotkot
    @xotkot
    rollthebones, я не про кавычка, а про IFS, посмотрите код выше внимательно
  • Как установить пакеты через packman на одну систему, загрузившись с флешки?

    xotkot
    @xotkot
    для этого загрузился с флешки, сменил корневой каталог, пытаюсь установить ядро

    error: could not open file: /etc/mtab: No such file or directory
    error: could not determine filesystem mount points
    error: failed to commit transaction (unexpected error)
    Errors occurred, no packages were upgraded.

    судя по записям вы что-то не то и не там сменили

    если делаете chroot в через установочный образ archlinux(наличия в установочном образе manjaro невкурсе) то лучше использовать arch-chroot - Using_arch-chroot

    п.с.
    проверил, на установочным образе manjaro нету утилиты arch-chroot, но там легко её установить
    sudo pacman -Sy arch-install-scripts
  • Как установить пакеты через packman на одну систему, загрузившись с флешки?

    xotkot
    @xotkot
    У меня там все важные данные и настроенные под меня программы.

    если /home и данные на отдельном разделе то можно просто переустановить систему в корне(/)
    но на всякий случай важные данные лучше куда нибудь перенести, а для этого примонтируйте(mount) раздел с данными и скопируйте в надёжное место(другой диск, флешка)
  • Как установить пакеты через packman на одну систему, загрузившись с флешки?

    xotkot
    @xotkot
    во избежания конфликтов перед любой установкой желательно обновлять систему:
    sudo pacman -Syu
    ну или всё вместе:
    sudo pacman -Syu linux
  • Как сделать так, чтобы баш скрипт работал с папками, содержащими пробелы?

    xotkot
    @xotkot
    rollthebones,
    find "$1" -type f
    значит такой папки что вы указываете в первом($1) параметре скрипта несуществует
  • Как сделать так, чтобы баш скрипт работал с папками, содержащими пробелы?

    xotkot
    @xotkot
    rollthebones,
    При взятии в кавычки $1 получаю ошибку find: ‘’: No such file or directory

    не те кавычки используете, нужны двойные (") - "$var"

    п.с.
    да и лучше сразу дать нормальные имена параметрам с которыми запускается скрипт, для этого в начале скрипта
    #!/bin/bash
    
    myVar1="$1"
    myVar2="$2"

    естественно названия переменным придумайте соответствующие вашей задаче, ну и в самом скрипте поменять на них.
  • Как удалить лишние файлы в linux?

    xotkot
    @xotkot
    Adamos , rPman
    лично я решаю тьму задач с помощью php, это очень удобный язык заменитель bash

    каждый кулик своё болото хвалит :)
  • Как удалить лишние файлы в linux?

    xotkot
    @xotkot
    ls -1 | ...
    у вас бекапы в одной папке лежат без вложений ?
  • Почему в переменной bash лишние символы?

    xotkot
    @xotkot
    awk -F, '{print "User::Add --user-name "$1" --email-address "$2}' file.csv
  • Как правильно передать переменные из файла в bash?

    xotkot
    @xotkot
    getDate() {
    date '+%d%m%Y'
    }
    getDate1() {
    date '+%d%m%Y' --date='3 days ago'
    }
    now=$(getDate)
    del=$(getDate1)


    зачем вам здесь такое извращение ? сначала в функцию, а потом в переменную, в коротком скрипте где единожды используете данные переменные.

    yc compute disk list --folder-id "id вашей папки" | awk -F"|" '/backup/ {print $3}' | sed s/' '//g

    зная вывод yc compute disk list здесь скорее всего можно было бы сократить до одной команды обработки.


    (...)& disown

    это конечно круто, запускаете скрипт который запускает N(по числу дисков) процессов yc, открепляете(disown) их, завершаете скрипт, а запущенные процессы по мере готовности завершаются и рапортуют например в лог файл(который я надеюсь допишите). Теперь вопрос, а что если один или несколько из этих процессов зависли ?
  • Вирус который перенаправляет на сайт с рекламой во всех браузеров. Что делать?

    xotkot
    @xotkot
    чего сопротивляетесь, вы почти выиграли iPhone 12 Pro, быстрее проходите опросник пока не разобрали ))

    п.с.
    установите uBlock Origin

    п.с2
    этому бородатому разводу больше четырёх лет, здесь предлагают почистить историю и куки браузера
  • Manjaro не может загрузить ядро. Что делать?

    xotkot
    @xotkot
    Filipp42, у вас там какая то зона катаклизмов )
    тогда можно вытянуть из ноутбука диск и подключить к другому компу, ну и там уже проделать выше изложенные действия.
  • Manjaro не может загрузить ядро. Что делать?

    xotkot
    @xotkot
    Filipp42, ну тогда, как ниже в ответах писал xibir - загрузитесь с установочной флешки, примонтируйте раздел диска где расположен корень поломанной системы, после сделайте chroot в неё, далее переустановите ядро и обновите grub.

    если влом во всём разбираться то опять же загрузитесь с установочной флешки, смонтируйте разделы где лежат важные данные, перенесите их в надёжное место, после чего переустановите систему.
  • Manjaro не может загрузить ядро. Что делать?

    xotkot
    @xotkot
    Filipp42, тогда приложите фотку с ошибкой, хотя бы, а то гадать смысла нету
  • Почему не берутся пробелы в bash переменной?

    xotkot
    @xotkot
    Roman Bolshukhin,
    Так вот, скрипт переименовывает 30-ти минутные и перемещает их, захватывая 29-минутные, которые не обработаны.

    непонятно, тока 29 минутные захватывает в придачу или и те что от 1 до 28 минут тоже ?

    для отладки скрипта довольно полезно использовать флаг xtrace который можно прописать в начале скрипта под строкой где указывается интерпретатор bash
    #!/bin/bash
    
    set -o xtrace


    п.с.
    недосмотрел, поставте знак доллара перед IFS так как это у нас переменная задающая разделитель полей, а не простая строка.
    x="IFS";IFS=$'\n';
    заменить на
    x="$IFS";IFS=$'\n';
  • Manjaro не может загрузить ядро. Что делать?

    xotkot
    @xotkot
    пишет, что файел /boot/нужныйфайл не найден. Файл вроде называется linuz-5....

    лучший помощник для память это фотка
    Я хочу восстановить систему до изначального состояния, не потеряв данные.

    судя по linuz- комп упал когда обновлялось ядро, но это не точно. Данные пользователя по идее все целы, просто нужно будет переустановить те пакеты что обновлялись по время великого падения ну и на всякий случай сделать проверку(fsck) файловой системы на предмет ошибок.
    и да, держите лучше несколько ядре про запас, то же lts-ядро, сейчас бы просто в загрузчике выбрали другое ядро и загрузились в систему.
  • Почему не берутся пробелы в bash переменной?

    xotkot
    @xotkot
    Roman Bolshukhin, сильно не вникал но то что бросилось в глаза отметил знаком #!!!

    === код под спойлером ===

    #!/bin/bash
    
    # 	#папка загрузки
    # 	Downloads=(/volume1/Media/Downloads )
    # 	#папка фильмы
    # 	FilmFolder=(/volume1/Media/Shared_Videos/Films )
    # 	#папка видео файлов
    # 	VideosFolder=(/volume1/Media/Shared_Videos )
    # 	#файл с шаблоном замен
    # 	Renamer=(/volume1/Media/Software/Synology/rename.txt)
    # #!!! скобки используются недмного для другого, а именно для массивов - (элемент1 элемент2 элемент3)
    # #!!! см. https://devhints.io/bash#arrays
    # #!!! а для обьявления переменных достаточно будет:
    DIR="/volume1/Media" # базовая папка
    Downloads="$DIR/Downloads" # папка загрузки
    VideosFolder="$DIR/Shared_Videos" # папка фильмы
    FilmFolder="$DIR/Shared_Videos/Films" # папка видео файлов
    Renamer="$DIR/Software/Synology/rename.txt" # файл с шаблоном замен
    
    
    x="IFS";IFS=$'\n';for WhatFile in $(find $Downloads -regex '.*\.\(mkv\|m4v\|mp4\|ts\|avi\)' -and -mmin +30 | sort -r );
    do
      #!!! IFS как я писал выше лучше всё же использовать не внутри $(), а в цикле или за ним.
      #!!! так как область видимости в $() замкнута и обратное преобразование IFS не будет глобальным.
      IFS="$x"
    
      #echo $WhatFile
      #извлекаем название найденного файла
      WhatFileName=$(basename "$WhatFile" )
      #echo $WhatFileName
      
      #извлекаем папку найденного файла
      WhatFolder=$(dirname "$WhatFile" )
      #echo $WhatFolder
    
      #переименовываем файл
      #!!! вроде как есть рекомендации использовать в условных операторах вместо одинарных [...] двойные скобки [[...]]
      if [ -n "$WhatFileName" ]; then
        for RenameFile in "${WhatFile[@]}"; do
        WhatRenameFile=$( echo "$WhatFileName" | sed -f "$Renamer" )
          if [ "$WhatFileName" != "$WhatRenameFile" ]; then
            echo "переименовываем файл из $WhatFileName в $WhatRenameFile"
            mv -fv "$WhatFile" "$WhatFolder"/"$WhatRenameFile"
            echo "пауза 2 секунды"
            sleep 2s
          #else 
            #echo "Файл соответствует правилам "$WhatFileName""
          fi
        #echo $WhatRenameFile
        done
      fi
      
    done
      #!!! код во многом дублирует продыдущий if... что в принципе можно было бы вынести в отдельную фцнкцию
      #переименовываем папку
      if [ -n "$WhatFolder" ]; 
      then
        for RenameFolder in "${WhatFolder[@]}"; do
        WhatRenameFolder=$( echo "$WhatFolder" | sed -f "$Renamer" )
          if [ "$WhatFolder" != "$WhatRenameFolder" ]; 
          then
            echo "переименовываем папку из $WhatFolder в $WhatRenameFolder"
            mv -fv  "$WhatFolder" "$WhatRenameFolder"
            echo "пауза 2 секунды"
            sleep 2s
          #else 
            #echo "Папка соответствует правилам "$WhatFolder""
          fi
            #echo $WhatRenameFolder
        done
      fi
    
    #фильм или серал?
      
    if [[ -n "$WhatFile" ]]
     then
        if [[ "$WhatFolder" == "$Downloads" ]] 
        then
          echo "Обнаружен Фильм"
          mv -fv "$WhatFile" "$FilmFolder"
          echo "Переместили в Фильмы"
          else 
            #проверяем в сериалах файлы
            echo "ищем сериалы"
                #проверяем в сериалах файлы
                Serials_destination=$(find "$VideosFolder" -type f -iname "$WhatFileName" | sed -n '1p' )
            if [[ -n "$Serials_destination" ]]
            then
                  echo $Serials_destination
                  #извлекаем название найденного файла в сериалах
                  Serials_file_destination=$(basename "$Serials_destination")
                  echo $Serials_file_destination
                  #извлекаем папку найденного файла в сериалах
                  Serials_folder_destination=$(dirname "$Serials_destination" )
                  echo $Serials_folder_destination
                  
                  #переименовали или нет?
                  if [[ "$WhatFolder" != "$WhatRenameFolder" ]]
                    then
                      mv -fv "$WhatRenameFolder"/* "$Serials_folder_destination"
                      echo "пауза 1 минуту"						
                      sleep 1m 
                      echo "удаление папки $WhatFolder"
                      rm -Rfv "$WhatRenameFolder"
                    else 
                      mv -fv  "$WhatFolder"/* "$Serials_folder_destination"
                      echo "пауза 1 минуту"						
                      sleep 1m 
                      echo "удаление папки $WhatFolder"
                      rm -Rfv "$WhatFolder"
                  fi		
              else
                  echo "В сериалах не найдено папки"
                  echo "перемещаем в сериалы что-то новое в "$VideosFolder/Serials/$WhatFolder""
                  mv -fv "$WhatFolder" "$VideosFolder/Serials/"
            fi
        fi
      fi

  • Почему не берутся пробелы в bash переменной?

    xotkot
    @xotkot
    Roman Bolshukhin,
    $Serials_folder_destination Возвращает точку. Как убрать? Спасибо

    точка обычно означает текущую папку
    .
    ./путь/к/файлу

    вы хотите убрать её от начала пути ? или вам выводит одну точку которую нужно убрать ?
  • Почему не берутся пробелы в bash переменной?

    xotkot
    @xotkot
    jcmvbkbc,
    да-да, положительно шутливая форма же работает только в одном направлении, я всегда об этом забываю.

    возможно, но вы очень хорошо это скрываете

    Главное теперь не удалять неправильный ответ, иначе нещитово.

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