Сайт | Скачать | Видео | Wiki

Автор Тема: Быстрый поиск в mc  (Прочитано 2960 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Быстрый поиск в mc
« : 26 Апрель 2023, 22:55:22 »
Дисклеймер.
----------------------------
Код написан в соавторстве с GPT4
----------------------------
Причины
Желание реализовать быстрый поиск в mc , так-то встроеный тоже хороший, но поиск от peco меня очаровал.
---------------------------
добавил команду sleep 3 , в конце скрипта, чтоб дать интерпретатору командной строки для открытия файла, без этой команды скрипт иногда отрабатывал не стабильно
---------------------------
изменена инструкция
вместо .bashrc используется создание пункта меню, в user menu, mc, так удобнее
---------------------------
дополнил код на опрос после открытия файла с xdg-open
для продолжения поиска работы в peco
или прекращения работы
а также добавлена возможность помещения полного пути в буфер обмена
----------------------------
в шапке  скрипт--3_Imp.Исправлен и улучшен. Следует брать этот скрипт.
----------------------------
 скрипт--4_Dobrov. Добавлена возможность по нажатию клавиши 'C' помещения полного пути до файла в буфер обмена, то есть помещения полного пути по требованию. Можно брать, либо скрипт--3, либо  скрипт--4.
---------------------------
Итак необходимо вот этот:
--------------------------
Скрипт--1
--------------------------
Код
#!/bin/bash

while true; do
# Получаем текущую директорию из Midnight Commander
dir="$PWD"

# Используем ls для получения списка файлов в директории
files=$(ls -1 "$dir")

# Используем peco для выбора файла
selected=$(echo "$files" | peco --prompt 'Выберите файл > ')

# Если пользователь нажал Ctrl-C, выход из peco , далее запрос на продолжение
if [[ $? -ne 0 ]]; then
  exit
fi

# Получаем полный путь к выбранному файлу
path=$(readlink -f "$dir/$selected")

# Открываем файл
xdg-open "$path"
sleep 3

# Запрашиваем продолжение работы программы
  echo "Хотите продолжить? (y/n)"
  read answer

  if [ "$answer" != "${answer#[Yy]}" ]; then
    # Пользователь хочет продолжить работу, продолжаем цикл
    continue
  else
    # Пользователь хочет завершить работу, выходим из цикла
    break
  fi
done

-----------------
Скрипт--3  от Imp , улучшенный и исправленый.  Следует брать этот скрипт.
Код
#!/bin/bash
while [ 1 ]
do
    selected=$(ls -1 $(pwd) | peco --prompt 'Выберите файл > ')
    [[ $selected = '' ]] && exit
        echo "$(pwd)/$selected" | xsel -ib
        echo "Полный путь до файла скопирован  в буфер обмена"
    echo "Выполнить файл? (Enter/ESC)"
    read -n 1 answer
        [[ $answer = '' ]] && xdg-open "$(pwd)/$selected"
       
    echo "Хотите продолжить? (Enter/ESC)"
    read -s -n1 answer
    [[ $answer == $'\x1b' ]] && break
done

----------------
скрипт-4_Dobrov  Можете выбрать этот скрипт если желаете получить полный путь по нажатию клавиши 'C'
----------------
Код
#!/bin/bash
while sel=$(ls -1 | peco --prompt 'Esc: выход, Фильтр имени >') && [[ -n $sel ]]; do
    echo -e "\e[45mEsc выход, Enter запуск файла, «C» путь в буфер\e[0m"
    read -t9 -sn1 key && p="$(pwd)/$sel" || break
    case ${key,} in
        $'\x1b') break;;
        c) xsel -ib<<<"$p"
            echo -e "Полный путь файла в буфере обмена: \n$p"
            sleep 1;;
        '') xdg-open "$p";;
    esac
done

сохранить его в скрипт с именем mcps.sh имя не важно, для удобства я выбрал наиболее короткое чтоб запомнилось. Сохраняем его в ~/.local/bin , присваиваем ему права на исполнение, потом
открываем терминал и в нём открываем командой
Код
sudo nano /etc/mc/mc.menu 
конфигурационный файл формирующий user menu mc
 далее идем в конец этого файла и в секции
Код
+ x /usr/bin/open | x /usr/local/bin/open & x /bin/sh
после строки
Код
 open -s -- sh 
добавляем строки
 
Код
 s       Search with Peco
        /bin/bash /home/<user>/.local/bin/mcps.sh
не забываем вместо <user> вписать имя вашего пользователя
перед s ,не должно быть пробелов
сохраняем файл , закрываем текущую сесию mc в терминале если она открыта,
запускаем заново mc , и теперь навигацией по mc выбираем каталог, заходим в него жмем F2 потом жмем s
и получаем вход в Peco, способ добавления пользовательского скрипта с Peco,
может быть полезен и для запуска других скриптов в любой директории mc.
каталог будет открыт в peco , и задав в строку в 'Выберите файл > ' набрав нужные вам критерии для поиска, то что ищите вы получите строки вхождения этого поиска. После этого из полученых строк, можете курсором клавиш выбрать ту строку что вы искали либо в 'Выберите файл > '  уточнить что ищите, дальше, после выбора строки нажимаем ввод. файл откроется с помощью xdg-open.
« Последнее редактирование: 02 Май 2023, 13:01:29 от totiks2012 »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1718
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Пробую улучшить поисковик для mc.
« Ответ #1 : 27 Апрель 2023, 00:33:29 »
Интересно.
А вот этого я бы не делал:

Открываем файл ~/.bashrc в редакторе текста:
Код

nano ~/.bashrc

вводим в конце файла строку
Код

export PATH="$PATH:~/bin"

А если бы и делал, то использовал бы не nano, а mcedit
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #2 : 27 Апрель 2023, 08:26:29 »
А вот этого я бы не делал:
Есть какие-то риски?  Если есть расскажите пожалуйста, потому что это единственный рабочий способ который мне удалось найти, для запуска скрипта из любого каталога. И вроде способ рабочий.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2554
  • Репутация: +33/-0
Re: Пробую улучшить поисковик для mc.
« Ответ #3 : 27 Апрель 2023, 08:58:01 »
единственный рабочий способ
- сбособ-то далеко не единственный (нужно просто чтоб каталог со скриптом в $PATH присутствовал, + права, исполняемость в комплекте)
==========
вроде раньше например на ПРА, на Ледяном юзер-скрипты в /usr/local/bin/ складывались (и в $PATH то наличествовало) 
--------
имхо, '~/bin' - не для любого юзера в системе
----------------
с другой стороны в паппи наблюдаю '/root/my-applications/bin/' (... но там - root) и не знаю филосовско-исторической подоплеки
--------------------
с третей - на Арче вроде '~/.local/bin/' присутствовал (по крайней мере на Ледяном)
...
=============
имхо, кто его знает как правильней, но по крайней мере для пакетов и чего-то серьезного, грубо говоря, - /usr/bin/
« Последнее редактирование: 27 Апрель 2023, 08:59:55 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #4 : 27 Апрель 2023, 09:42:19 »
то есть если я правильно понял , если не желаем заморачиваться с правами на исполнение , то правильней размещать скрипт в ~/.local/bin . позже проверю нужно ли этот скрипт помещать в PATH с этим каталогом, либо он и так уже прописан, но позже сейчас работы навалило...

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33989
  • Репутация: +231/-0
    • PuppyRus-A
Re: Пробую улучшить поисковик для mc.
« Ответ #5 : 27 Апрель 2023, 10:20:35 »
# Получаем полный путь к выбранному файлу
Чем для этой цели не устроила комбинация Ctrl+x+p Alt+enter ?

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2554
  • Репутация: +33/-0
Re: Пробую улучшить поисковик для mc.
« Ответ #6 : 27 Апрель 2023, 10:32:30 »
$PATH - как бы 'глобальная переменная'
-----------
- ) исполняемость - залог исполняемости;
-----------
- по правам - грешным делом выкладывал  "пол-раскраски" (я тут воспринимаю раскрашеное легче оригинала (виденье конечно под-себя); вторая часть ждет-недождется своего времени)
===================
зы:
конечно личное - но недолюбливаю алис, гптчаты и т.п.
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #7 : 27 Апрель 2023, 10:42:48 »
Чем для этой цели не устроила комбинация Ctrl+x+p Alt+enter
мне нужно более менее автоматизировать действия, а то что вы предлагаете это больше передача аргументов peco в ручную.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #8 : 27 Апрель 2023, 10:55:13 »
конечно личное - но недолюбливаю алис, гптчаты и т.п.
это просто инструмент, сам бы я такое может бы и написал но дней за 5 гугления и и поисков по стаковерфлоу, а тут экономия времени... мне этот поисковичок к mc очень нужен для работы...

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1718
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Пробую улучшить поисковик для mc.
« Ответ #9 : 27 Апрель 2023, 11:43:28 »
Есть какие-то риски?
Не трогал бы именно .bashrc - мало ли боков может вызлезть?
Ищите, где у вас находится $PATH (у меня в /etc/profile ) и добавляйте любой путь.
На крайняк - запускалку изменить
« Последнее редактирование: 27 Апрель 2023, 11:46:01 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #10 : 27 Апрель 2023, 12:58:08 »
Не трогал бы именно .bashrc
чутка позже изменю инструкцию , нашёл вроде, красивое решение...

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #11 : 27 Апрель 2023, 19:38:30 »
Вчера вечером в качестве $PATCH я забил директорию ~/.local/bin , к сожалению так и не понял причин почему нельзя использовать .bashrc... Может подскажете более изящный способ помещения в $PATH
« Последнее редактирование: 27 Апрель 2023, 19:51:27 от totiks2012 »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5336
  • Репутация: +139/-1
Re: Пробую улучшить поисковик для mc.
« Ответ #12 : 27 Апрель 2023, 23:11:19 »
не понял причин почему нельзя использовать .bashrc
Арчвики предлагает /etc/profile или /etc/bash.bashrc на глобальном уровне. А вот на уровне юзера - ~/.bash_profile, для .bashrc же там есть оговорка.

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1718
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Пробую улучшить поисковик для mc.
« Ответ #13 : 27 Апрель 2023, 23:48:04 »
почему нельзя использовать .bashrc
Никто не говорит, что нельзя его использовать.
Просто привычка придерживаться стандартов, держать настройки в одном месте, и не искать по всей системе, если что-то сломается.
В конце концов - это просто мое мнение. Делайте как удобно именно вам.
« Последнее редактирование: 27 Апрель 2023, 23:50:01 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 872
  • Репутация: +23/-0
  • Автор темы
Re: Пробую улучшить поисковик для mc.
« Ответ #14 : 28 Апрель 2023, 12:29:14 »
нашёл более изящный способ запуска скрипта, для peco в mc, инструкцию  обновил в шапке.
upd: не знаю по какой причине но конфиги в ~/.config/mc не подхватываются, пришлось редактировать конфиг из /etc/mc
« Последнее редактирование: 28 Апрель 2023, 12:36:33 от totiks2012 »