Как стать автором
Обновить

Комментарии 53

НЛО прилетело и опубликовало эту надпись здесь
Не забывая экранировать всякие $, `, и пр
Ага, особенно про "!". Часто натыкался
Угу, особенно когда пишешь
git commit -am "It works!"
Ага. Или -am "It works!!" :)
В принципе, если не пользоваться history expansion, то можно и отключить:

set +H

Ну, либо действительно использовать одинарные кавычки.

Вот тут хорошее обсуждение по теме.
Интересная ситуация с именами файлов, которые начинаются с дэфиса.
А так, спасибо за интересные извращения аля hex-имена, такое в голову не пришло бы…
Еще один момент есть по поводу служебных символов — это бэкслэши в именах файлов. При просмотре один бэкслэш ( \ ), при удалении его, соответственно, надо экранировать им же, то есть удваивать.
НЛО прилетело и опубликовало эту надпись здесь
спасибо, добавил в пост
Еще в ~/.inputrc можно добавить строчку
TAB: menu-complete

И тогда по табу bash будет перебирать варианты, сразу подставляя их в командную строку, как vim.
Огонь! Спасибо! Из всего что есть — самое универсальное для себя взял вот это:
select i in *; do rm -f $i; done
А бывают папки в которые попасть можно вот так(до этого делал так: mc, переход в папку, ctrl^o):
select i in *; do cd $i; done
В никсах для rm не предусмотрено стандартного или хотя бы распространённого способа отката удаления, вроде «корзины» в Windows?

Да, я знаю про никсовую философию, которая даёт пользователю широкие возможности по порче файлов и системы, предполагая, что он «знает, что делает», но ведь все мы люди и склонны ошибаться.
Так в Windows DEL тоже мимо корзины удаляет. А всякие Nautilus корзинкой пользуются.
О, вроде и там и там можно указать ключик для интерактивного удаления и на каждый файл будет спрашивать что с ним делать.
Shift+Del — мимо корзины.
Del — в корзину (если корзина не отключена)
Я так подозреваю, что vlivyur говорил всё-таки про команду DEL.
Пожалуй, вы правы.
Да.
Ну так можно использовать UNDELETE =)
Это если FAT и постоянно не производится запись на диск.
А так команда порой выручала.
Шла в составе MS-DOS 5 и выше, если не ошибаюсь.
Во всех ОС в корзину удаляют только GUI программы, которые работают с юзером. Если с командной строки удалять файл, то в корзину он не попадает, т.к. кто знает, может это скрипт удаляет временные файлы и их создают и удаляют тысячами каждую секунду.
Корзина есть не что иное, как специальная папка для «удаленных» файлов. И в Windows тоже.
Так что можете создать новую, или использовать имеющуюся, и вместо удаления переносить туда файлы.
Делов-то.
ага, и создать alias на команду rm
Только не будет функции восстановления и из файлов с одинаковыми именами выживет лишь последний.
Ну это смотря какой именно алиас навернуть… Там ведь можно всякое сделать. Про trash-cli на питоне, например, ниже уже писали.
Еще лучше создать alias shd
 alias shd='rm -rf ~'
(это шутка, как в рекламе, не нужно это пытаться повторить в действительности :) )
Как видно, чтобы осуществить правильное перекодирование нужно знать две кодировки: предполагаемую кодировку файла и кодировку нашего терминала.

Я бы был поосторожнее с такой формулировкой. Тут скорее смысл не в том чтобы сделать кодировку файлов такой же как и кодировка терминала (которая могла случайно оказаться таковой в данный момент), а хорошо подумать в какой кодировке должны быть ваши файлы в итоге.
Что-то мне кажется что -f примерах — лишнее. Постановка -f должна быть осознана под ситуацию.
> С помощью одинарных кавычек нельзя удалить файл, в названии которого есть одинарная кавычка, даже заэкранировав ее.

На всякий случай: rm 'actually it'\''s easy'
Вообще, для команды rm у Linux GURU есть чудесное правило. Называется — «правило двух рук».
Перед запуском команды рукм положить под пятую точку. Затем попробовать «поднатужиться».
Если получится как у прапорщика в анекдоте — появится дополнительное время для обдумывания, пока будет приниматься душ и стираться белье… Если нет — смело жать «Enter» — ОНО само придет! :)
Угу. А в ~/.my.cnf (при работе с MySQL) дописать:

safe-updates

Или при запуске клиента передавать опцию --safe-updates, либо --i-am-a-dummy (тот же эффект).

В этом режиме нельзя выполнить запрос DELETE или UPDATE, если в нём не указано условие WHERE. Поэтому, если вы случайно забыли добавить WHERE, то вы просто получите ошибку:

ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

По умолчанию этот режим, кстати, добавляет ещё пару ограничений (которые, впрочем, можно отключить — но на практике это требуется редко): для select_limit устанавливается значение 1000, а для max_join_size — 1000000.
Если имя файла содержит символ в кодировке utf8, который мы не можем набрать на клавиатуре, то удалить такой файл можно выделением его мышкой, копированием в буфер обмена и последующей вставкой на ввод команды rm.

А если я без иксов сижу, есть способ?
Как вариант
ls > file
Удаляете всё ненужное в виме, дописываете rm. Потом sh ./file Теоретически должно сработать
Вы в консоли без мыши сидите? Откройте для себя gpm.
Нет, не сижу. Просто заинтересовало, есть ли такая возможность вообще. Спасибо за наводку. Обязательно открою.
gpm для мыши, mplayer через фреймбуфер, графический режим links через тот же фреймбуфер, screen для нарезания экрана на части, активное использование Alt+F[1-6]. И зачем вообще иксы?
Жаль нвидиовские проприетарные дрова с фреймбуфером не дружат.
В Gentoo Wiki пишут, что можно поставить uvesafb.
Спасибо. Но пробовал. Много что уже пробовал.
Скажите пожалуйста, а есть что-то кроме mplayer'а для просмотра в полный экран через фреймбуфер с сохранением соотношения сторон?
А то я так месяц просидел с фреймбуфером раз, на иксы ушел только из-за отсутствия нормального сохранения соотношения сторон автоматом, руками надо было параметр выставлять. Или сейчас mplayer так умеет?
К сожалению у меня сейчас уже не сохранился конфиг, а фреймбуфр работает так себе.

Не помню удавалось ли мне решить проблему в общем виде одним конфигом, но кажется да. Может при помощи фильтра.

В худшем случае можно запускать скриптом: через mplayer -ao null -vo null -frames 0 -identify "$@" выцепить оригинальный размер (ID_VIDEO_WIDTH и ID_VIDEO_HEIGHT) и отмасштабировать (разрешение можно взять из /sys/class/graphics/fb0/virtual_size).
Спасибо. Я как-то так и запускал, но, к сожалению, работало не всегда корректно, через раз. Может быть старое ПО было на тот момент. Одним конфигом добиться вообще не удалось, вычислял скриптом.
На сколько я помню конфигом можно указать одно желаемое измерение, чтобы второе изменилось пропорционально и тогда как повезет. Либо второе влезет, либо не влезет.
Не правильно выразился. Оно действительно работает, но не родное для монитора соотношение сторон смотрится, мягко говоря, плохо.
Как быстрый и простой вариант — всякие «плохие» файлы кучей можно удалять через midnight commander, если он есть в системе конечно.
Это естественно, просто автор поста еще в первом абзаце отказался от любых файловых менеджеров.
$ rm -f *

С этим аккуратнее. Представьте, что найдётся файл с названием "-r".
НЛО прилетело и опубликовало эту надпись здесь
Ладно, если только на китайском. Вообще с произвольным набором иероглифов из разных языков без какой-то систематики.
Достаточно просто zip распаковать.
Маски — не панацея! Или, по крайней мере, используйте "./*" (но это не съест файлы, начинающиеся с точки)

datacompboy@nuuzerpogodible:~$ touch ./-rwer.qqq
datacompboy@nuuzerpogodible:~$ rm *qqq
rm: неверный ключ — w
Попробуйте «rm ./-rwer.qqq», чтобы удалить файл «-rwer.qqq».
Попробуйте «rm --help» для получения более подробного описания.
datacompboy@nuuzerpogodible:~$
Как в статье и указано, для файлов, начинающихся с минуса, нужно использовать --
rm -- *qqq
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории