Hago mucho trabajo terminal, y hoy tuve la experiencia de escribir
rm fileInQuestion.txt
Antes de descubrir que realmente necesitaba fileInQuestion.txt. Si hubiera eliminado en la GUI, lo habría sacado de la Papelera. Me gustaría saber si es posible sobrecargar 'rm' en la Terminal de tal manera que envíe el archivo / archivos a la Papelera al salir.
macos
command-line
Joe
fuente
fuente

Respuestas:
No aconsejaría aliasing
rmamvcomo se podría conseguir en el hábito dermarchivos no borrar de forma permanente y que tenga problemas en otros equipos o bajo otras cuentas de usuario cuando no desaparezca permanentemente.Escribí un conjunto de
bashsecuencias de comandos que añadir más herramientas de línea de comandos X-como Mac OS (además de un número de los que ya vienen implementadas comoopen,pbcopy,pbpaste, etc.), lo más importantetrash. Mi versión detrashhará todas las cosas correctas que el aliasingrmno hará (y espero que nada malo, pero lo he estado usando en mis propias Mac durante algunos años sin ninguna pérdida de datos), incluyendo: cambiar el nombre del archivo como lo hace Finder si ya existe un archivo con el mismo nombre, colocar los archivos en la carpeta Papelera correcta en volúmenes externos; también tiene algunas ventajas adicionales, como: intenta usar AppleScript cuando está disponible para que obtenga el agradable sonido de la basura y demás (pero no lo requiere, por lo que aún puede usarlo a través de SSH cuando ningún usuario ha iniciado sesión), puede darle el tamaño de la basura en todos los volúmenes.Puede obtener mi suite de herramientas-osx de mi sitio o la última y mejor versión del repositorio de GitHub .
También hay un
trashcomando desarrollado por Ali Rantakari , pero no lo he probado yo mismo.fuente
trashRantakari durante bastante tiempo y realmente puedo dar fe de ello. Está compilado Objective-C y utiliza inteligentemente las API estándar del sistema de archivos y, si falla (es decir, el usuario no tiene suficientes derechos), llama a Finder para que elimine los archivos (solicitando efectivamente la autenticación). Puede leer más información detrashpartir hasseg.org/blog .brew install trash.trashcomando disponible a través de Homebrew es el de Alai Rantakari (ver labrewfórmula ).brew remove trashy luegobrew install trash.La herramienta de línea de comandos de la papelera se puede instalar a través de
brew install trash.Le permite restaurar archivos basura a través de la línea de comandos o el Finder.
fuente
port install trashbrew install trash, obtengo esto: pastebin.com/N92cM7d8brew updateprimero? Funciona bien de mi parte.Tengo un ejecutable llamado
remen algún lugar de mi$PATHcon los siguientes contenidos:EDITAR: el código a continuación es una versión revisada y mejorada en colaboración con Dave Abrahams :
Se comporta exactamente de la misma manera que eliminar del Finder. (Vea la publicación del blog aquí ).
fuente
~/bin, lo nombrétrashy funcionó la primera vez, lo que me permitió tirar a la basura muchos archivos de manera mucho más eficiente que si tuviera que hacer clic en ellos en las ventanas del Finder. Mucha gratitud ¡Espero que publiques más respuestas!osascriptcuando el archivo no existe no es hermoso, por lo que es posible que desee ajustar esa parte.rmtanto como sea posible en términos de mostrar mensajes cuando los archivos no existen, y (2) recopila todo en una solaosascriptllamada.Encontré un código bastante bueno que se puede agregar al final del perfil de lote del usuario y hace
rmque mueva los archivos a la papelera cada vez que se ejecuta.nano ~ / .bash_profile
fuente: http://hints.macworld.com/article.php?story=20080224175659423
fuente
local dst=${path##*/}conlocal dst=${mindtrailingslash##*/}e insertar otra línea justo antes de que uno que dicelocal mindtrailingslash=${path%/}. ② Yo uso el nombrefunction rr. De esta manera, no interfiere con plainrm, pero el nombre es igualmente corto y rápido de escribir (cualquier otro nombre lo haría).rm()armt(): de esta manera, aún puede usar elrmcomando cuando lo desee. Pienso en rmt en mi cabeza comoremove to trash: DUse el comando de terminal osascript, el intérprete de AppleScript.
Esto le dice a AppleScript que le diga a Finder que envíe el archivo a la papelera.
Se necesita PWD para rutas de archivos relativas, ya que AppleScript no se maneja tan bien.
fuente
Un enfoque moderno con Swift
https://github.com/reklis/recycle
fuente
Si bien es posible
rmmover los archivos a la Papelera en lugar de eliminarlos, aconsejaría no llevar la mentalidad de la red de seguridad de las interfaces gráficas de usuario al shell de UNIX. Hay muchas formas de causar daños graves con el terminal. El mejor consejo en mi humilde opinión es pensarlo dos veces antes de enterpresionar la tecla en una ventana de shell.Si desea
rmrecordarle que está a punto de eliminar un archivo, considere usar el siguiente alias (para/bin/bashponer esta línea.bashrcen su directorio de inicio):Esto
rmconfirmará la solicitud antes de intentar eliminar cada archivo.Si tiene TimeMachine ejecutándose (¡espero que sí!) Siempre puede obtener su archivo de la copia de seguridad. De esta manera, puede perder como máximo una hora de trabajo. Lo cual es bastante malo, por supuesto. ¡Así que piense de nuevo antes de presionar esa entertecla!
fuente
rmy colgarse con el aliasrm -i..bashrcsolo se ejecuta si el shell es interactivo. ¡Mira la página del manual !rmmás segura que lo que te meterá en problemas en otros sistemas. Además, si lo usa-f,-ise ignora por completo. Dicho esto, esta es una buena red de seguridad. Una mejor es nunca usarrma favor de unrmialias (alias rmi="rm -i") o la excelentetrashutilidad. Además, agregaré que todo el mundo ya debería haber puesto[ -f ~/.bashrc ] && source ~/.bashrcla.bash_profilesuya.Hay dos utilidades instalables a través de Homebrew que pueden lograr esto:
basura
Este es un pequeño programa de línea de comandos para OS X que mueve archivos o carpetas a la papelera. El USP de este comando es el que permite restaurar fácilmente los archivos. Un comando para eliminar archivos / carpetas no sirve de nada si no puede restaurar archivos / carpetas después de eliminarlos. Desde el sitio web del comando:
Para instalar,
trashejecute lo siguiente en la Terminal:brew install trash.rmtrash
Una herramienta de línea de comando que mueve archivos a la papelera. Desde la página del comando man:
Para instalar,
rmtrashejecute lo siguiente en la Terminal:brew install rmtrash.fuente
Aquí hay una solución de una línea bastante trivial para agregar a su perfil de bash. Tenga en cuenta que ya sobrescribirá algo con el mismo nombre en la papelera.
Uso:
fuente
Destrozar cosas adecuadamente (para que sea definitivamente recuperable) es más complicado que simplemente un
mvto to~/.Trash.osx-trash puede ser lo que estás buscando. ( Advertencia : no lo he probado y no puedo garantizar lo seguro que es).
fuente
Echa un vistazo
trash-cli. Funciona multiplataforma, sin sonido de basura y admite Put Back.Puede instalarlo con (requiere Node.js ) :
Alternativamente, si no desea utilizar Node.js, puede instalar el binario nativo
osx-trashmanualmente.fuente
En su .bashrc (o donde sea que guarde los parámetros para su shell), intente agregar un alias que cambie el comportamiento de rm para mover cosas a ~ / .Trash, como en:
Sin embargo, este alias está lejos de ser trivial para implementar (al menos para mí), porque el uso de mv (el principal candidato para usar para este trabajo) es
Por lo tanto, tener un alias que ponga la parte 'dónde' delante del archivo a mover podría ser bastante incompleto. Lo investigaré y podría obtener consejos más sustanciales.
EDITAR: acabo de intentar agregar lo siguiente a mi .bashrc, y funciona:
Es mucho más primitivo que otras sugerencias, pero evita instalar cosas nuevas.
fuente
rma cualquier cosa es peligroso porque puede romper los scripts de instalación. Esto lo aprendí de la manera difícil cuando un aliasrmpararm -iy tenía instalaciones cuelgan..bashrcsolo se usa para shells interactivos . Si ejecuta./install.shun nuevo proceso, se inicia y el alias no estará activo. Sin embargo, si ejecuta. install.shsu proceso actual, ejecutará el instalador y el alias estará activo. RTFM ...rmusar el alias del comando, como dijo Morgant, porque se sentirá cómodo conrmno eliminar realmente los archivos y luego podría eliminar accidentalmente algo en un sistema donde no se haya agregado dicho alias. Además, mover un archivo a la papelera no es tan simple como solomv {} ~/.Trash. Si el archivo está en un volumen separado, por ejemplo, esto copiará el archivo a su directorio de inicio y eliminará el original.Simplemente he puesto este script
en
~/bin/trash, lo hizo ejecutablechmod +x ~/bin/trashy agregó la siguiente línea a~/.bash_profileEntonces uno puede usarlo como
fuente
Una función simple podría permitirle tirar basura a los archivos moviéndolos a la carpeta .Trash del usuario:
fuente
$*lugar de$1, pero terminarías con la misma respuesta quemv "$@" ~/.Trash. Por qué la gente vota negativamente, revisa los comentarios de la otra respuesta.