LINUX.ORG.RU

Это задача файлового менеджера.

rubbish
()

/dev/null-то? А я искренне полагал, что кроме как из ядра такой важной вещи неоткуда взяться... Очень глюпий анонимус =)

anonymous
()

> То есть почему он до сих пор, не смотря на очевидную полезность, он еще остаеться сторонней приблудой, плохо стыкующейся с ядром...

И в чем же его очевидная полезность?

nsav
()

... а ещё в ядре нужен патч для того, чтоб файрфокс всегда только в новых вкладках страницы открывал, а не в окнах=)

Igron ★★★★★
()

Потомушто мусор луче подальше от едра складывать. Если едро станет одной рукой нос зажимать от привносимого мусором odeur, работоспособность у ево снизится.

bugmaker ★★★★☆
()

потому что педрила торвальдс даже с десктоп средой определиться не может, всё патрик должен делать, а ты тут про мусорку..

anonymous
()
Ответ на: комментарий от Teak

Во, сразу конструктив попёр, не то что до моего поста :)

Teak ★★★★★
()

Для десктопа корзина несомненно нужна. Несколько раз так досадно ошибался в терминале - в спешке вместо 'mv' из хистори доставал 'rm -rf' и жал Enter :( Но для корзины разумнее другая политика. Правильнее, чтобы в LSB появилась некоторая договоренность о месте корзины (это будет, например, специальный раздел или подраздел в /tmp) и правилах, как туда складывать файлы, как записывать пути, откуда они были удалены и пр. сопутсвующие договоренности (например, права на файлы и директории). А дальше постепенно получить поддержку этой договоренности в программах и тулкитах. Это есть, IMHO, правильный путь. К тому же, он переносимый на другие платформы (винды, солярка, etc.). Соответсвенно появятся для GNOME, KDE какие-нибудь GTrashView, KTrashView или просто XTrashView для "движения неприсоединения" :). Этот же подход кошерен для применения в скриптах, где ты согласно правилам, вместо 'rm' сделаешь копирование удаляемых файлов в необходимое место путем вызова какго-нибудь скрипта cp2trash или вручную.

Если же в ядро встраивать удаление в корзину, то как модуль ядра узнает, удаляет программа какой-то ненужный временный файл или какой-то файл из диалога управления файлами? то есть все-равно надо будет софт перелопатить, чтобы поддержку то ли флажком каким-нибудь делать, то ли устройство /dev/trash какое-нибудь вводить (для скриптов, например). К тому же, это буде работать только на Линуксе и только там, где этот модуль ядра будет.

Zubok ★★★★★
()

да вот хотя бы так же сделать, как в alternatives ALT Linux. То есть просто копировать файл в каталог како-нибудь ~/trash или ~/tmp/trash (тут главное, чтобы стартовые скрипты не уничтожали этут папку). Копировать файлы прямо с путями. что-то вроде такого файла тогда получится. Права его идентичны правам удаленного.

drwx--r--r user:user home|myprogram|examples|test1.txt

drwx--r--r user:user home|myprogram|examples|test2.txt

и т. д. Смотрелку корзины можно даже консольную сделать. можно специальный скрипт для нее написать, который будет lstrash, скажем. То есть никаких противоречий со всякими там уних-вэй :) Соответсвенно, у каждого пользователя свой trash в хомяке. И, наверное, какой-нибудь системный нужен будет. Не думал.

P.S. елси у меня какая-то явная промашка, то знайте, что сочинял на ходу. Разумеется, можно сто раз еще подумать над реализациями.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

А можно и просто дерево каталогов иметь в корзине. Удалил файл ~/myprogram/examples/test1.txt, и в ~/tmp/trash возникло такое же дерево, по которому лекго понять, откуда файл прибежал.

Zubok ★★★★★
()
Ответ на: комментарий от bugmaker

Речь идет не только о консолях, но и обо всех программах, которые совсем не вызывают команды cp, rm и пр. Я же только о способе хранения говорю, чтобы и восстановить можно было, и просмотреть, что уже ненеужно совсем.

Zubok ★★★★★
()
Ответ на: комментарий от nsav

Не надо никаких программ менять. Достаточно подменить пару функций в libc. Через LD_PRELOAD, хотя бы.

anonymous
()
Ответ на: комментарий от nsav

1. Блин, ну читай же, чтоя пишу. Я написал схему *без модуля* ядра, который считаю дурной затеей!

2. Программы на motif, например, никакого rm не вызывают! Никакие алиасы не помогут. Или ты считаешь, что содержание каждой программой или тулкитом своих корзин лучше? А не лучше ли иметь универсальную корзину, которой универсальным образом (без противоречий с совестью) можно управлять откуда угодно (например, восстановить файл, удаленный случайно из gnumeric в консольном режиме, вернув его на свое место). Еще раз! я написал про вариант корзины посредством копирования файлов. без модулей ядра. Но копирование все используют разное. Кто-то вызывает 'rm', а кто-то - функции! Место и формат файлов стандартизуется. Остальные должны (если захотят) соответсвовать.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

libc менять - вариант, но некрасиво, IMHO. Кстати, возникнет проблема совместимости, возможно. То есть придется за собой тащить два прототипа - старый и новый. К тому же решать в libc вопросы размещения корзины в каталогах и форматы файлов. Не слишком ли глупо?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

вопрос корзины должен решаться на более высоком уровне, чем libc. На уровне приложений, но стандартным образом. Пока так думаю.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

>Не надо никаких программ менять. Достаточно подменить пару функций в libc. Через LD_PRELOAD, хотя бы.

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

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Вопрос корзины должен решаться на уровне ещё более высоком - психологическом.

Ну в крайнем случае файлового менеджера, для особых любителей. Но вообще от дурных привычек (отсутствия бэкапов и нежелания думать, прежде чем на Enter жать) надо просто избавляться.

Teak ★★★★★
()
Ответ на: комментарий от Teak

>Вопрос корзины должен решаться на уровне ещё более высоком - психологическом.

К счастью, такие деятели, как ты не имеют никакого влияния на технический прогресс. Так что 'cp Teak /dev/bioreactor'. :)

Zubok ★★★★★
()
Ответ на: комментарий от Teak

не, даже 'mv', чтобы воспоминаний не было :) (вот теперь, думаю, каменты по делу пойдут, как после "Ахтунг! Это провокация!" ) :)

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Дык, вперёд :)

Я серьёзно тебе написал. От вредных привычек нужно избавлятся. Файл-то удалённый ты восстановишь, но привычка не обдумывать свои действия останется.

Teak ★★★★★
()
Ответ на: комментарий от Teak

Когда у меня еще стояли винды, то Trash мне пригодилась за всю историю всего несколько раз, но эти разы были роковыми. Ты не о себе прежде всего думай. Себя ты заставить сможешь хоть уговорами, хоть аутотренингом не сделать ошибку при разборе колоссальной файлопомойки с длинными схожими названиями файлов, русскими буквами, пробелами... Ты подумай о многочисленных будущих пользователях дектопа. Подумай о людях с плохим зрением. Подумай о людях с плохой координацией движения (но зато талантливых в своей области). Думаю, через такие вещи много, кто проходил. Работа с файлами - дело рисковое для пользователя. не дай бог что-нибудь не то нажмешь, когда уже копируешь сотый файл. Совершенно случайно соскользнет рука, нажмешь какой-нибудь F8 в mc. Или окажется два разных файла с одинаковым названием в разных каталогах, а ты не обратишь внимание в каком ты находишься... И тут уж неизвестно, восстановишь файл или нет. Ошибку совершить очень легко.

Вот чего я против, так это дурацких модулей ядра с корзиной и вмешивания в libc. Такой подход, я так сейчас думаю (пока меня не переубедят), будет непопулярен среди разработчков. Механизм корзины - простое копирование файлов. Все.

Не захочешь пользоваться корзиной - отключишь ее. Копирование файлов пойдет мимо нее в нулевое устройство. И, пожалуйста себе на здоровье, осторожничай и думай. Трясись над каждым своим движением. :)

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Я так и говорю. И пример привел навскидку реализации. Имя файла состоит из пути и имени. Просмотр - через regexp. Ты говоришь то же , что и я.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

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

Давай без оскорблений. Я не трясусь, у меня с этим всё нормально :) (особенно учитывая что всё на болванки нарезано, что нужно).

Teak ★★★★★
()
Ответ на: комментарий от Teak

Но вообще, перед тем как удалять, я таки да, думаю, прикинь? :) При разгрёбе файлопомойки в частности перетаскиваю всё удаляемое в отдельную диру deleting, потом в самом конце на неё ещё раз внимательно смотрю и удаляю. Вот и весь рецепт щастья :)

Teak ★★★★★
()
Ответ на: комментарий от anonymous

Вот так, например (сверху взял)

drwxr--r-- user:user home|myprogram|examples|test1.txt

drwxr--r-- user:user home|myprogram|examples|test2.txt

То есть dir1|dir2|dir3|file или через черточки писать. как угодно будет. Но это все сыро все-таки. Это только для того, чтобы обозначить решение.

Zubok ★★★★★
()
Ответ на: комментарий от Teak

Да, это рецепт, но только для консоли. И только если ты потрудился это сам сделать. А для удаления из окон выбора файлов в Qt, Gtk как быть? кнопки-то есть. Их обязательно нажмут. Да хотя бы не раз сталкивался со случаем, когда человек удалял файл, который был ему не нужен, а потом вдруг он вспоминает, что в том документе была какая-то ссылка, которую он не скопировал или еще что-то важное. Ну не мог он сразу последствия ухватить. И что теперь ему делать? А ты еще о совем брате программисте/сисадмине подумай, когда ему тетя Мотя из отдела маркетинга-хренетинга позвонит на внутренний и скажет: "Ой, я файл стерла случайно. что делать?". И придется ему по штатному расписанию, которое обязывает его пойти и восстановить все. Он ей: "ничего, дура,ю не трогай! Руки с клавы убери!". А она: "Ой, а я уже тут новый документ писать начала.Это ничего?". А сейчас же каждая дура знает, что файлы удаленные ее шаловливыми ручонками, попадают в корзину, из которой она может все восстановить. И не беспокоит она брата твоего - компьютерщика. И по телефону можно всегда объяснить (в клиническом случае незнания, что такое корзина), где искать файл, который она удалила.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Вот, понимаешь? Именно поэтому я и говорю, что корзина - это зло. Привыкли, блин, трут чего не попадя.

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

Teak ★★★★★
()
Ответ на: комментарий от Teak

Да, насчет конверор пропустил. Ну я уже написал про существование альтернативных возможностей удалений файлов. Это хотя бы аргумент раз. Потом, зачем мне конверор, когда я сижу под fvwm и мне она не обосралась? Всю жизнь без нее обходился. Потом. есть программы, которые позволяют удаление файлов внутри себя. Например gqview. Это хорошо, что у нее есть собственная корзина, самопал. все-равно никаких договоренностей нет. Сделали внутри .gqview каталог trash, кажется, и туда скидывают. Так что теперь всем программам придумывать свои корзины?

Проблема с корзиной может быть решена простым и элегантным способом унифицированно и для консоли, и для всего остального. Это - "Правильная Вещь" (с) Хакеры. Но проблемы: (i) нет договоренностей (возможно, временная. Вдруг разговор уже идет? Если нет, то почему бы его не поднять? Это забота о пользователях), (ii) вопрос этот долгосрочный и надо под эту возможность править софт. Например, не все в программы в виндах, насколько я это еще помню, умели в корзину скидывать удаленные файлы. Но те, которые умели, те делали это унифицированно. Удалив программу я могу восстановить файл. А так вот удалю gqview несколько файлов, забуду, что удалил. потом снесу gqview и .gqview, а потом пожалею. Золотое правило: не полагаться на человечский фактор и память человека. И не создавать для пользователя опасности в работе. Если тебе не жаль писателя Сорокина, который стер случайно свой новый рассказ, то пожалей хотя бы врача, который случайно стер статью о своих исследованиях, которые, возможно, когда-то тебе спасут жизнь. Вот.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Да, но я нах говорю нах, что это без базара через тупой LD_PRELOAD нах делается. Регвыра достаточно нах, отделить чтоб мух от котлет нах. Любой unlink должен тогда через регвыр и корзину идти нах.

anonymous
()
Ответ на: комментарий от Teak

Бэкапы - вешь, несомнено, полезная, но, наверное, многие подтвердят, что каждую минуту никто не бэкапит проекты. вот сделаешь за день что-то трудоемкое и случайно того... удалишь. Особенно страшно бывает, когда человек что-то делает срочно и в нервном состоянии делает роковую ошибку. Бэкапа может и не оказаться. Да и потом речь не только, наверное, о работе идет, но и о картинках, музыке, фильмах. Не все же бэкапить. Всему этому барахлу место на диске (а вдруг резака нет, что не так уж и часто бывает). Тоже все стереть можно. можно случайно удалить какой-нибудь конфигурационный файл (его тоже бекапить?). Да мало ли что, помимо рабочих файлов можно удалить? Я тут посожалел человеку (в другом форуме), который зашел под root, чтобы поправить кое-что в /etc, забыл, дурень, что в рут зашел (сеточку не увидел) и удалил всю /etc. неосторожно и очень трагично. :) А так бы - восстановил :)

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Ты предлагаешь каждой программе обозначить директории (через regexp), в которых удаляемые файлы должны уходить минуя корзину, а остальные - в корзину? Вариант. Ну то есть ты хочешь уйти от переписывания софта? Можно конкретнее варианты реализации? Есть, скажем программа на motif, в которой есть кнопка "удалить файл". Программа пользуется для удалдения функцией libc. Дальше?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

А, все!... прочухал тему! то есть ты предлагаешь подменить функции удаления файлов новыми (через LD_PRELOAD), у которых есть еще и возможность где-нибудь в конфиге, в который программы при установке должны написать расположение временных файлов, например, пробежаться по спискам (или регэкспам) каталогов, к которым удаление в корзину неприменимо? Я правильно понял?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

На этот раз ты всё понял нах исключительно правильно. Поздравляю!

И подменять то надо только unlink и remove.

anonymous
()
Ответ на: комментарий от anonymous

>В таких нах хреновых ситуёвинах спасёт нах CVS и частые коммиты.

пойду этот анекдот расскажу соседке, которая инвестированием в строительство в Москве занимается. Пусть она сносит свой виндоуз и ворд/ексел, ставит какой-нибудь *Linux и CVS локальный. Да, это будет полный "нах". У меня на домашнем каталоге лежат гигабайты информации (даташитов на микросхемы, куча всяких стандартов, документов, чертежей). Это просто справочная информация, мною неизменяемая. Это все я тоже могу случайно стереть. Но причем тут CVS? Мне что? Хранить всю эту документацию два раза? одну - в дереве CVS, а другую как бы у себя?

Ну на CD, я переписал, конечно, но не все далеко. У меня за день накачивается до 100Мб новой информации, просматривается. Ненужное - трется. Ошибка очень велика что-нибудь стереть (и ошибки происходят), потому что названия pdf-документов маловразумительные. что-то вроде e123945327_iu.pdf)

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

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

Zubok ★★★★★
()

Ладно. Возвращаясь к сути вопроса.

Это не сделано потому, что те, кто способен это сделать, не считают это нужным и не любят решать реальные проблемы, которые возникнут при решении не очень реальной проблемы, скажем так. Те же, кто считает это нужным, напротив не способны это сделать, и не желают заплатить за то, чтобы кто-то другой это сделал. Всё как всегда, в общем. Как только возникнет оплачиваемый спрос на эту фигню, всё будет реализовано со свистом :)

P.S. возьми да сделай, раз считаешь это такой необходимой штукой, и предложи своё _полностью_проработанное_ решение в Red Hat или там Novell, глядишь и разбогатеешь и прославишься :)

Teak ★★★★★
()
Ответ на: комментарий от Teak

Еще, кстати, неизвестно - сделают корзину или нет. Пока распространение десктоп имеет слишком ограниченное. Большеая часть - среди профессионалов, которые большей аккуратностью отличаются (но огрехи дают). Вот как только Новелл начнет по-серьезному конкурировать с МС, то тогда вопрос неизбежно встанет. Ведь лучше не иметь обиженных клиентов, которые вспомнят, что ошибки молодости в виндах они могли исправить, а тут - правосудие жестокое :)

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Спору нет, сделают это точно. Со временем. Тут я с тобой согласен. Я вообще скептик :) В линух слишком много народу левого пришло, тянут с собой свои вредные привычки. Но всё-таки это ТОЧНО будет опционально, это во-первых, а во-вторых такие вот улучшения и спровоцируют возникновение следующей операционной системы :) Диалектика, понимаешь...

Teak ★★★★★
()
Ответ на: комментарий от Teak

> Я вообще скептик

Сорри, имелось в виду "пессимист".

Teak ★★★★★
()

Да вы че, блин рехнулись все? Нахер корзина в ядре??? Не его это задача. В гноме корзина есть. (Не знаю как в кде, но в нем виндоподобная помойка на рабочем столе)

Dominus
()

читаю и реву ...

IMHO в работе должны учавствовать как минимум ТРИ компонента:
1. permissions (не хочешь случайно файл удалить, убери аттрибут)
2. /dev/brain (да да .. её то же включать надо иногда .. полезно)
3. /dev/hands (ну эти уж в последнюю очередь, как исполнительный механизм)

И нужда в мусороной карзине ... исчезает. Меня всё время бесит
данная "фича" оффтопика ... люди активно удаляющие документы
и не подозревают что корзину чистить надо ... а как проверка
приходит, более или мение умный чудила .. лазиет по корзинкам

Ну это конечно из другой оперы ...

robot12 ★★★★★
()
Ответ на: комментарий от Zubok

нужно файловую сист. с версионингом использовать..

dilmah ★★★★★
()

А можно еще корзину для удаления из корзины? А то я такой рассеянный...

PS: тетямотя должна сидеть не под fvwm а под конкверором с корзинй

PPS: ценные данные дожны быть ro

sin_a ★★★★★
()
Ответ на: комментарий от Zubok

Ну так ты ССЗБ, однако. Инкрементальный бэкап (на болванки такое делается ТРИВИАЛЬНО) + cvs для изменяемой части (и инкрементальный бэкап репозитория) в таких ситуациях используется повсеместно.

anonymous
()
Ответ на: комментарий от robot12

Нужна или нет эта корзина -- спорный вопрос. Обсуждать его бесполезно -- это из разряда "Выбор дистрибутива/браузера/..."

Моя фантазия подсказывает достаточно элегантное (на мой взгляд :-) решение: "Реальное удаление файлов должно быть отсроченным (например на 24 часа). На уровне драйвера файловой системы и ее журнала".

До реального удаления файла его не видно по ls, место на FS не освобождается, а к ls добaвить --show-deleted, и т.д. и т.п.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.