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

Руководства, вопросы, обсуждения
Правила форума
Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа.
В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 04 апр 2017, 07: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, 13:19
Решено: 4
Благодарил (а): 122 раза
Поблагодарили: 21 раз

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

Сообщение svm » 04 апр 2017, 08:32

Chocobo писал(а):Источник цитаты Отрабатывает норм)

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

В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 04 апр 2017, 10: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, 13:19
Решено: 4
Благодарил (а): 122 раза
Поблагодарили: 21 раз

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

Сообщение svm » 04 апр 2017, 10:58

Chocobo писал(а):Источник цитаты :joke:
Надоело воевать с башем

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

В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 04 апр 2017, 13: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, 13:19
Решено: 4
Благодарил (а): 122 раза
Поблагодарили: 21 раз

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

Сообщение svm » 04 апр 2017, 14:31

:joke: ,это что проблема с выводом баш?
скопировал маленько,что бы легче копипастить ► Показать

а почему grep не работает ?или так и должно быть или же это косяк ?
т.е. то что нагрепал = выделяет,но в файл отправляет всё
(две последние строки+на скрине видно)
или я как то не правильно составил команду/строку
040402.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Умный поймёт , а дураку и так всё равно.

Аватара пользователя
colonel
Сообщения: 295
Зарегистрирован: 18 дек 2016, 09:08
Решено: 10
Благодарил (а): 14 раз
Поблагодарили: 87 раз

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

Сообщение colonel » 04 апр 2017, 14: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
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 04 апр 2017, 15:14

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

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

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

Аватара пользователя
root
Сообщения: 533
Зарегистрирован: 16 фев 2017, 17:03
Решено: 3
Откуда: г. Хабаровск
Благодарил (а): 165 раз
Поблагодарили: 112 раз

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

Сообщение root » 09 апр 2017, 07:34

Chocobo, твой скрипт неактуален по 2-м причинам:
1) пробелы в путях
2) в файл .hidden можно передать только %F пути (если быть корректнее, то - в твой скрипт, который сам потом передает в .hidden), которые являются полными; а самому файлу нужны только названия родительских папок. т.е. запись /home/adminka/Загрузки не будет работать в отличии от записи Загрузки. Не знаю, где именно ты его тестил, но в cinnamon это так.
User: adminka
OS: Linux Mint 18.2 Sonya Cinnamon :thumbs:
Kernel: 4.11.0-14-generic
Devices ► Показать
Я не волшебник, я только учусь ;)

В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 09 апр 2017, 07:38

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

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

Аватара пользователя
root
Сообщения: 533
Зарегистрирован: 16 фев 2017, 17:03
Решено: 3
Откуда: г. Хабаровск
Благодарил (а): 165 раз
Поблагодарили: 112 раз

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

Сообщение root » 09 апр 2017, 07:44

Chocobo,
Chocobo писал(а):Источник цитаты CAJA_SCRIPT_SELECTED_FILE_PATHS
NEMO_SCRIPT_SELECTED_FILE_PATHS
А это что такое? Где файлы лежат?
/home/adminka/.config/nemo ниже папок нет
User: adminka
OS: Linux Mint 18.2 Sonya Cinnamon :thumbs:
Kernel: 4.11.0-14-generic
Devices ► Показать
Я не волшебник, я только учусь ;)

В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 09 апр 2017, 08:00

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

В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 09 апр 2017, 09: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
Сообщения: 533
Зарегистрирован: 16 фев 2017, 17:03
Решено: 3
Откуда: г. Хабаровск
Благодарил (а): 165 раз
Поблагодарили: 112 раз

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

Сообщение root » 09 апр 2017, 11:23

Chocobo, спасибо за скрипт. Заметил, что происходит забавная ситуация: после удаления указанной в .hidden папки, ее название все равно остается в нем. Т.е. при создании новой с тем же названием она будет автоматически скрываться. Небольшой недочет; не скрипта, конечно же, а самого подхода скрытия. :smile:
User: adminka
OS: Linux Mint 18.2 Sonya Cinnamon :thumbs:
Kernel: 4.11.0-14-generic
Devices ► Показать
Я не волшебник, я только учусь ;)

В сети
Аватара пользователя
Chocobo
Сообщения: 4555
Зарегистрирован: 27 авг 2016, 19:57
Решено: 107
Откуда: НН
Благодарил (а): 372 раза
Поблагодарили: 1221 раз

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

Сообщение Chocobo » 09 апр 2017, 16:47

можно и этот момент попробовать засинкать, раз уж скриптуем :smile: . Например рекурсивно прогнать по всем папкам где есть .hidden что-нибудь такое:

Снимок экрана в 2017-04-09 19-45-48.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение


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

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

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