Я много работаю на терминале, и сегодня имел опыт набора текста
rm fileInQuestion.txt
Прежде чем выяснить, что мне действительно нужно файл fileInQuestion.txt. Если бы я удалил в GUI, я бы просто вытащил его из корзины. Я хотел бы знать, возможно ли перегрузить 'rm' в Терминале таким образом, чтобы он отправлял файл / файлы в корзину при выходе.
Ответы:
Я бы не советовал ступенчатость ,
rm
чтобы ,mv
как вы могли бы получить в привычкуrm
постоянно не удаляя файлы , а затем столкнуться с проблемами на других компьютерах или в рамках других учетных записей пользователей , когда он делает постоянно удалять.Я написал набор
bash
скриптов , которые добавляют больше Mac OS X инструменты типа командной строки (в дополнение к ряду встроенных в них , какopen
,pbcopy
,pbpaste
и т.д.), что самое главноеtrash
. Моя версияtrash
будет делать все правильно, что псевдонимrm
не будет (и, надеюсь, ничего плохого, но я уже несколько лет использую его на своих компьютерах Mac без потери данных), включая: переименование файла, как это делает Finder если файл с таким именем уже существует, поместите файлы в нужную папку «Корзина» на внешние тома; у него также есть некоторые добавленные тонкости, такие как: он пытается использовать AppleScript, когда он доступен, чтобы вы получили хороший звук мусора и тому подобное (но не требует его, так что вы все равно можете использовать его через SSH, когда ни один пользователь не вошел в систему), он может дать вам размер мусора во всех томах.Вы можете взять мой пакет tools-osx с моего сайта или самую последнюю и лучшую версию из репозитория GitHub .
Там также команда , разработанная Али Rantakari , но я не проверял , что один сам.
trash
источник
trash
Rantakari довольно долгое время и могу за это поручиться. Он компилируется в Objective-C и ловко использует стандартные API-интерфейсы файловой системы и, в случае сбоя (т. Е. У пользователя нет достаточных прав), вызывает Finder для удаления файлов (фактически запрашивая аутентификацию). Вы можете прочитать более подробную информацию оtrash
от hasseg.org/blog .brew install trash
.trash
команда, доступная через Homebrew, является командой Алая Рантакари (см.brew
Формулу ).brew remove trash
и затемbrew install trash
.Инструмент командной строки для мусора может быть установлен через
brew install trash
.Это позволяет вам восстанавливать файлы с помощью командной строки или Finder.
источник
port install trash
brew install trash
, я получаю это: pastebin.com/N92cM7d8brew update
первый? Хорошо работает с моей стороны.У меня есть исполняемый файл, вызванный
rem
где-то в моем$PATH
со следующим содержанием:РЕДАКТИРОВАТЬ: приведенный ниже код является пересмотренной и улучшенной версией в сотрудничестве с Дейвом Абрахамсом :
Он ведет себя точно так же, как удаление из Finder. (Смотрите сообщение в блоге здесь .)
источник
~/bin
, назвал егоtrash
, и он сработал в первый раз, что позволило мне более эффективно уничтожать множество файлов, чем если бы мне приходилось нажимать на них в окнах Finder. Большая благодарность Я надеюсь, что вы отправите больше ответов!osascript
когда файл не существует не красиво, так что вы можете настроить эту часть.rm
максимально имитировать команду оболочки с точки зрения отображения сообщений, когда файлы не существуют, и (2) объединяет все в одинosascript
вызов.Я нашел довольно хороший код, который можно добавить в конце профиля пакета пользователя и заставлять
rm
перемещать файлы в корзину каждый раз, когда он запускается.nano ~ / .bash_profile
источник: http://hints.macworld.com/article.php?story=20080224175659423
источник
local dst=${path##*/}
сlocal dst=${mindtrailingslash##*/}
и вставка другой строки непосредственно перед той, которая говоритlocal mindtrailingslash=${path%/}
. Use Я использую имяfunction rr
. Таким образом, он не мешает обычномуrm
, но имя также короткое и быстрое для ввода ( подойдет любое другое имя).rm()
наrmt()
- Таким образом, вы все равно можете использоватьrm
команду, когда захотите. Я думаю о rmt в моей голове какremove to trash
: DИспользуйте команду терминала osascript, интерпретатор AppleScript.
Это говорит AppleScript сказать Finder отправлять файл в корзину.
PWD необходим для относительных путей к файлам, так как AppleScript плохо справляется с этим.
источник
современный подход с использованием Swift
https://github.com/reklis/recycle
источник
Хотя можно
rm
перемещать файлы в корзину вместо их удаления, я бы не советовал переносить образ мыслей безопасности графических пользовательских интерфейсов в оболочку UNIX. Есть много способов нанести серьезный ущерб с помощью терминала. Лучший совет IMHO - просто дважды подумать, прежде чем нажимать enterклавишу в окне оболочки.Если вы хотите
rm
напомнить, что собираетесь удалить файл, используйте следующий псевдоним (для/bin/bash
вставки этой строки.bashrc
в ваш домашний каталог):Это сделает
rm
запрос подтверждения, прежде чем пытаться удалить каждый файл.Если у вас работает TimeMachine (я надеюсь, что это так!), Вы всегда можете получить файл из резервной копии. Таким образом, вы можете потерять максимум один час работы. Что достаточно плохо, конечно. Поэтому подумайте еще раз, прежде чем нажимать эту enterклавишу!
источник
rm
и зависать с псевдонимомrm -i
..bashrc
выполняется только в том случае, если оболочка является интерактивной. Проверьте справочную страницу !rm
безопаснее, чем он, что приведет к проблемам в других системах. Также, если вы используете-f
,-i
полностью игнорируется. Тем не менее, это хорошая сеть безопасности. Лучше один, чтобы никогда не использоватьrm
в пользуrmi
псевдонима (alias rmi="rm -i"
) или отличнойtrash
утилиты. Кроме того, я добавлю, что все должны были положить[ -f ~/.bashrc ] && source ~/.bashrc
их.bash_profile
сейчас.С помощью Homebrew можно установить две утилиты, которые могут это сделать:
мусор
Это небольшая программа командной строки для OS X, которая перемещает файлы или папки в корзину. USP этой команды позволяет легко восстанавливать файлы. Команда для удаления файлов / папок бесполезна, если вы не можете восстановить файлы / папки после их удаления. С веб-сайта команды:
Для установки
trash
запустите следующее в Терминале:brew install trash
,rmtrash
Инструмент командной строки, который перемещает файлы в корзину. Со справочной страницы команды:
Для установки
rmtrash
запустите следующее в Терминале:brew install rmtrash
,источник
Вот довольно простое однострочное решение для добавления в ваш профиль bash. Обратите внимание, что он уже перезапишет что-то с таким же именем в корзине.
Использование:
источник
Правильно уничтожить вещи (так что это определенно можно восстановить) сложнее, чем просто
mv
к~/.Trash
.osx-trash может быть тем, что вы ищете. ( Будьте бдительны - я не пробовал и не могу подтвердить, насколько это безопасно.)
источник
Проверьте
trash-cli
. Он работает кроссплатформенный, без мусора и поддерживает Put Back.Вы можете установить его с помощью (требуется Node.js ) :
Кроме того, если вы не хотите использовать Node.js, вы можете установить собственный двоичный файл
osx-trash
вручную.источник
В вашем .bashrc (или там, где вы храните параметры для вашей оболочки), попробуйте добавить псевдоним, который изменяет поведение rm для перемещения материала в ~ / .Trash, как в:
Хотя этот псевдоним далеко не тривиален для реализации (по крайней мере, для меня), потому что использование mv (основной кандидат на эту работу)
поэтому наличие псевдонима, который помещает часть 'where' перед перемещаемым файлом, может быть довольно схематичным. Я рассмотрю это, возможно, получу более существенный совет.
РЕДАКТИРОВАТЬ: Я просто попытался добавить следующее в мой .bashrc, и это работает:
Это гораздо более примитивно, чем другие предложения, но вы избегаете установки новых вещей.
источник
rm
к чему-либо опасен, потому что он может сломать установочные скрипты. Я узнал об этом на собственном горьком опыте , когда я псевдонимами ,rm
чтобыrm -i
и имел Установок повесить..bashrc
используется только для интерактивных оболочек. Если вы запускаете./install.sh
новый процесс запускается, и псевдоним не будет активным. Однако, если вы запустите. install.sh
ваш текущий процесс, он запустит установщик, и псевдоним активен. RTFM ...rm
команды, как сказал morgant, потому что вы освоитеrm
фактически не удаляя файлы , а затем может случайно удалить что - то в системе , где не было добавлено никакой такой псевдоним. Кроме того, перемещение файла в корзину не так просто, как простоmv {} ~/.Trash
. Например, если файл находится на отдельном томе, он скопирует файл в ваш домашний каталог и удалит оригинал.Я просто поставил этот скрипт
в
~/bin/trash
, сделал его извиняемымchmod +x ~/bin/trash
, и добавил следующую строку~/.bash_profile
Тогда можно использовать его как
источник
Простая функция может позволить вам удалять файлы, перемещая их в пользовательскую папку .Trash:
источник
$*
вместо$1
, но тогда вы получите тот же ответ, что иmv "$@" ~/.Trash
. Почему люди голосуют отрицательно, проверьте комментарии другого ответа.