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

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#21

04 апр 2017, 10:21

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;

Отрабатывает норм)
Изображение
   
Изображение

Аватара пользователя

svm
Сообщения: 172
Зарегистрирован: 27 ноя 2016, 16:19
Решено: 4
1
Благодарил (а): 115 раз
Поблагодарили: 22 раза

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

#22

04 апр 2017, 11:32

Chocobo писал(а): Отрабатывает норм)
если в названиях есть пробелы,то этот вариант не катит
Умный поймёт , а дураку и так всё равно.

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#23

04 апр 2017, 13:05

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

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

#!/usr/bin/python
import sys
for i in sys.argv[1:]:
    with open(".hidden", "a") as hidden:
        hidden.write(i+"\n")
Изображение
   
Изображение

Аватара пользователя

svm
Сообщения: 172
Зарегистрирован: 27 ноя 2016, 16:19
Решено: 4
1
Благодарил (а): 115 раз
Поблагодарили: 22 раза

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

#24

04 апр 2017, 13:58

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

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#25

04 апр 2017, 16:18

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 в тот файл
Изображение
   
Изображение

Аватара пользователя

svm
Сообщения: 172
Зарегистрирован: 27 ноя 2016, 16:19
Решено: 4
1
Благодарил (а): 115 раз
Поблагодарили: 22 раза

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

#26

04 апр 2017, 17:31

: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
Умный поймёт , а дураку и так всё равно.

Аватара пользователя

colonel
Сообщения: 1851
Зарегистрирован: 18 дек 2016, 12:08
Решено: 21
Откуда: Хартленд, N
Благодарил (а): 43 раза
Поблагодарили: 498 раз
Контактная информация:

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

#27

04 апр 2017, 17:57

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 используя цикл.... как вариант, не ?"
"Не ты выбираешь Linux, а Linux выбирает тебя"
(с)Себастьян Перейра, торговец чёрным деревом

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#28

04 апр 2017, 18:14

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

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

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

Аватара пользователя

root
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

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

#29

09 апр 2017, 10:34

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

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#30

09 апр 2017, 10:38

adminka, не, если расчитаешь выше - здесь мы обсуждали сценарии в ~/.config/caja/scripts и оно работает)

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

Аватара пользователя

root
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

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

#31

09 апр 2017, 10:44

Chocobo,
Chocobo писал(а): CAJA_SCRIPT_SELECTED_FILE_PATHS
NEMO_SCRIPT_SELECTED_FILE_PATHS
А это что такое? Где файлы лежат?
/home/adminka/.config/nemo ниже папок нет
Вы не готовы! :pc2:
Изображение

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#32

09 апр 2017, 11:00

adminka, для немо в ~/.local/share/nemo/scripts
Изображение
   
Изображение

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#33

09 апр 2017, 12:00

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")
Изображение
   
Изображение

Аватара пользователя

root
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

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

#34

09 апр 2017, 14:23

Chocobo, спасибо за скрипт. Заметил, что происходит забавная ситуация: после удаления указанной в .hidden папки, ее название все равно остается в нем. Т.е. при создании новой с тем же названием она будет автоматически скрываться. Небольшой недочет; не скрипта, конечно же, а самого подхода скрытия. :smile:
Вы не готовы! :pc2:
Изображение

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#35

09 апр 2017, 19:47

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

Закрыто

Вернуться в «Параметры и оптимизация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя