Страница 2 из 2

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 10:21
Chocobo
svm писал(а): Caja и Nemo есть такое
CAJA_SCRIPT_SELECTED_FILE_PATHS
NEMO_SCRIPT_SELECTED_FILE_PATHS
На их основе вот такой скрипт у меня получился

Код: Выделить всё

#!/bin/sh
for i in $CAJA_SCRIPT_SELECTED_FILE_PATHS; do
 echo $(basename $i) >> ./.hidden
done;

Отрабатывает норм)

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 11:32
svm
Chocobo писал(а): Отрабатывает норм)
если в названиях есть пробелы,то этот вариант не катит

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 13:05
Chocobo
svm, вот жеж оказия :joke:
Надоело воевать с башем, который даже типизацию толком не держит. Забирайте в пять строк на питоне:

Код: Выделить всё

#!/usr/bin/python
import sys
for i in sys.argv[1:]:
    with open(".hidden", "a") as hidden:
        hidden.write(i+"\n")

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 13:58
svm
Chocobo писал(а): :joke:
Надоело воевать с башем
питон работает ,спасибо :magic:
а прокоментировать ,пять строк(хотя бы две 2-3) ??? :blush: ,для особо одарённых :-D
но я так и не понял :dash2: в чём проблема то.в баше или в Caja ?
пробовал и через xclip - тоже не получилось

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 16:18
Chocobo
svm, в баш аргументы прилетают не форматированной строкой

/full/path/to/folder 1 /full/path/to/folder 2 из $CAJA_SCRIPT_SELECTED_FILE_URIS
или
folder 1 folder 2 из $CAJA_SCRIPT_SELECTED_FILE_PATHS

И при дайльнейшем разборе на составляющие первым делом баш бъет элементы списка по пробелам, откуда и получается

Код: Выделить всё

folder 
1 
folder 
2


При вызове же аргументов в python - на входе сразу получим структурированный список и не придется плясать с понимаем нужный тут пробел или же тут будет перевод строки.

На вход скрипта при вызове из контекстоного меню сценариев прилетает такой список -['/home/chocobo/.config/caja/scripts/hide.py', 'folder 1', 'folder 2'] ,соотвественно остается только взять второй и третий элемент и занести их в файл.

Если разбирать совсем уж по строкам:
  • #!/usr/bin/python - указание интерпретатора, чтоб при вызове ./hide.py система дернула именно питон.
  • import sys - вызов стандартного модуля sys, в данном случае для одной нужной нам функции sys.argv, которая вернет аргументы переданные на запуск, т.е. наши имена директорий или файлов.
  • for i in sys.argv[1:]: - цикл прохода по элементам списка аргументов, начиная со второго ([1:]), т.к. начальный элемент списка (sys.argv[0]) всегда сам исполняемый файл.
  • with open(".hidden", "a") as hidden: - в теле цикла просто открываем файл .hidden в режиме добавления строк (a, append)
  • hidden.write(i+"\n") - и записываем текущий элемент итерации из i в тот файл

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 17:31
svm
:joke: ,это что проблема с выводом баш?
svm@svm ~/.config/caja/scripts $ grep -E "[^//]+$" .hidden2
/home/svm/.config/caja/scripts/CD DVD
/home/svm/.config/caja/scripts/system_util
/home/svm/.config/caja/scripts/Анимированные обои
/home/svm/.config/caja/scripts/Move-to..._
/home/svm/.config/caja/scripts/Notepad++
svm@svm ~/.config/caja/scripts $ grep -E "^/.+/" .hidden2
/home/svm/.config/caja/scripts/CD DVD
/home/svm/.config/caja/scripts/system_util
/home/svm/.config/caja/scripts/Анимированные обои
/home/svm/.config/caja/scripts/Move-to..._
/home/svm/.config/caja/scripts/Notepad++
svm@svm ~/.config/caja/scripts $ grep -E "[^//]+$" .hidden2 | echo -e >> .hidden
svm@svm ~/.config/caja/scripts $ grep -E "[^//]+$" .hidden2 >> .hidden
а почему grep не работает ?или так и должно быть или же это косяк ?
т.е. то что нагрепал = выделяет,но в файл отправляет всё
(две последние строки+на скрине видно)
или я как то не правильно составил команду/строку
040402.jpg

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 17:57
colonel
Chocobo писал(а):...
for i in $CAJA_SCRIPT_SELECTED_FILE_PATHS; do
..... >> ./.hidden
done;
Chocobo писал(а):... import sys
for i in sys.argv[1:]:
with open(".hidden", "a").......
собсно , то о чём говорилось в #15 :
> как это правильно решить .... ?
> "... составлением списка имён выделенных файлов и поочерёдной вставкой их в .hidden используя цикл.... как вариант, не ?"

Скрытие файлов и директорий

Добавлено: 04 апр 2017, 18:14
Chocobo
colonel, все так. Просто на случай с переборкой башем, мне в голову приходит либо еще один вложенный цикл на сравнение полученного элемента с результатами ls, на полное соответствие, если его нет, то делать конкатенацию со следующим, чтоб перебрать варианты имен с пробелами. Но тут возникнет вхождение на случай если есть Файл и Файл 1

Либо то же сложение строк применять уже при условии, что греп верунл не единственное вхождение подстроки на значение текущего элемента.

В любом случае надо будет усложнять логику по этой причине.

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 10:34
root
Chocobo, твой скрипт неактуален по 2-м причинам:
1) пробелы в путях
2) в файл .hidden можно передать только %F пути (если быть корректнее, то - в твой скрипт, который сам потом передает в .hidden), которые являются полными; а самому файлу нужны только названия родительских папок. т.е. запись /home/adminka/Загрузки не будет работать в отличии от записи Загрузки. Не знаю, где именно ты его тестил, но в cinnamon это так.

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 10:38
Chocobo
adminka, не, если расчитаешь выше - здесь мы обсуждали сценарии в ~/.config/caja/scripts и оно работает)

Для использования с тем вариантом пункта контекстного меню - можно и пересмотреть, немо я не пользуюсь обычно.

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 10:44
root
Chocobo,
Chocobo писал(а): CAJA_SCRIPT_SELECTED_FILE_PATHS
NEMO_SCRIPT_SELECTED_FILE_PATHS
А это что такое? Где файлы лежат?
/home/adminka/.config/nemo ниже папок нет

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 11:00
Chocobo
adminka, для немо в ~/.local/share/nemo/scripts

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 12:00
Chocobo
adminka, вот набросал для варианта с контекстным меню (nemo actions) и использованием как Exec=<hide.py %F>

Код: Выделить всё

#!/usr/bin/python
import sys
import os
i=1
while i < len(sys.argv):
    try:
        while str(sys.argv[i+1])[0] != '/':
            sys.argv[i]=sys.argv[i]+ " "+sys.argv.pop(i+1)
            if sys.argv[i+1][0] == '/':
               i= i+1
        i= i+1
    except IndexError: 
        break
for i in sys.argv[1:]:
    path = i[:i.rfind('/')+1]
    name = i[i.rfind('/')+1:]
    with open(path+".hidden", "a") as hidden:
        hidden.write(name+"\n")

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 14:23
root
Chocobo, спасибо за скрипт. Заметил, что происходит забавная ситуация: после удаления указанной в .hidden папки, ее название все равно остается в нем. Т.е. при создании новой с тем же названием она будет автоматически скрываться. Небольшой недочет; не скрипта, конечно же, а самого подхода скрытия. :smile:

Скрытие файлов и директорий

Добавлено: 09 апр 2017, 19:47
Chocobo
можно и этот момент попробовать засинкать, раз уж скриптуем :smile: . Например рекурсивно прогнать по всем папкам где есть .hidden что-нибудь такое:
Снимок экрана в 2017-04-09 19-45-48.png