Wie verschiebt man Dateien von der Befehlszeile in den Papierkorb?

Ich mache viel Terminalarbeit und hatte heute die Erfahrung des Tippens

rm fileInQuestion.txt

Bevor ich herausfand, dass ich tatsächlich fileInQuestion.txt brauchte. Wenn ich in der GUI gelöscht hätte, hätte ich es gerade aus dem Papierkorb geholt. Ich würde gerne wissen, ob es möglich ist, 'rm' im Terminal so zu überladen, dass die Datei / Dateien auf dem Weg nach draußen in den Papierkorb verschoben werden.

Es gibt Programme, die gelöschte Dateien wiederherstellen können (solange diese Sektoren auf der Festplatte in der Zwischenzeit nicht überschrieben werden!). Wenn dies passiert, sollten Sie eines davon verwenden ...
Siehe auch askubuntu.com/q/468721/250556 für Googler, die nach Ubuntu/debian/linux-Dateien suchen.

Antworten (15)

Ich würde Aliasing nicht empfehlen rm, mvda Sie sich möglicherweise angewöhnen, Dateien nichtrm dauerhaft zu löschen und dann auf anderen Computern oder unter anderen Benutzerkonten auf Probleme stoßen, wenn sie dauerhaft gelöscht werden.

Ich habe eine Reihe von bashSkripten geschrieben, die weitere Mac OS X-ähnliche Befehlszeilen-Tools hinzufügen (zusätzlich zu einigen der integrierten wie open, pbcopy, pbpaste, usw.), vor allem trash. Meine Version von trashwird all die richtigen Dinge tun, die Aliasing rmnicht tut (und hoffentlich nichts Schlimmes, aber ich verwende es seit einigen Jahren auf meinen eigenen Macs ohne Datenverlust), einschließlich: Umbenennen der Datei, wie es der Finder tut wenn eine Datei mit demselben Namen bereits vorhanden ist, Dateien im richtigen Papierkorbordner auf externen Volumes ablegen; Es hat auch einige zusätzliche Feinheiten, wie: es versucht, AppleScript zu verwenden, wenn es verfügbar ist, damit Sie den netten Trash-Sound und dergleichen erhalten (aber es ist nicht erforderlich, damit Sie es immer noch über SSH verwenden können, wenn kein Benutzer angemeldet ist), es kann geben Ihnen Papierkorbgröße über alle Volumes hinweg.

Sie können meine Tools-osx-Suite von meiner Website oder die neueste und beste Version aus dem GitHub-Repository herunterladen .

Es gibt auch einen trashBefehl, der von Ali Rantakari entwickelt wurde , aber ich habe ihn nicht selbst getestet.

Ausgezeichnete Antwort, viel besser als meine!
Ich trashbenutze Rantakari schon seit einiger Zeit und kann mich wirklich dafür verbürgen. Es ist in Objective-C kompiliert und verwendet geschickt Standard-Dateisystem-APIs und ruft, falls es fehlschlägt (dh der Benutzer hat nicht genügend Rechte), den Finder auf, um die Dateien zu löschen (was effektiv zur Authentifizierung auffordert). Weitere Informationen finden Sie trashunter hasseg.org/blog .
trash ist auch über den Brew Package Manager verfügbar. Verwenden Sie einfach: brew install trash.
@ landon9720 Guter Punkt. Und um für andere klarzustellen, der trashüber Homebrew verfügbare Befehl ist der von Alai Rantakari (siehe die brewFormel ).
@landon9720 liebe mich etwas Homebrew-Trash!
Ich habe gerade Ihre Git-Seite gesehen: 336 Zeilen Bash-Code, um eine Datei in den Papierkorb zu verschieben? ;)
@CousinCocaine Haha, ja, es könnte nach all den Jahren eine Konsolidierung gebrauchen. Das heißt, es ist gut kommentiert und unterstützt viele Funktionen (Papierkorb über mehrere Volumes, Verschieben in den Papierkorb direkt oder über AppleScript, Leeren und sicheres Leeren usw.), so dass es sowieso nicht besonders kurz wäre. :)
@ Morgant, in der Tat. Es sieht sauber und sehr vollständig aus. Nett.
Ich benutze Ali Rantakaris trashKommando seit Jahren und es gefällt mir. Aber ich habe auf Yosemite aktualisiert und es funktioniert nicht mehr. Ich erhalte eine Fehlermeldung -bash: /usr/bin/trash: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory. Weiß jemand, wie man das beheben kann?
Ich konnte den Fehler beheben, indem ich brew remove trashund dann ausführte brew install trash.
Sind hier nur Link-Antworten akzeptabel? Sie befinden sich nicht im Stapelüberlauf. Hier gibt es nichts, was die Frage tatsächlich beantwortet, außer einem Link, den sie jederzeit schlecht machen können.
@xaxxon Ich weiß deine Frage zu schätzen. Als Autor dieser Antwort war mein ursprüngliches Ziel, die Frage im ersten Absatz zu beantworten (von Aliasing abzuraten rm) und dann alternative Lösungen bereitzustellen. Andere scheinen sicherlich der Meinung zu sein, dass meine Antwort die Frage am gründlichsten beantwortet hat, aber ich bin gerne bereit, meinen ersten Absatz zu erweitern, wenn Sie der Meinung sind, dass dies hilfreich wäre.
@morgant Von etwas abzuraten ist ein Kommentar, keine Antwort.
Website ist ausgefallen. Ruhe in Frieden.
@CarterPape Ich weiß, warum Sie 'rip' nach 'site is down' setzen mussten, kluge Wahl :))
Die Site ist wieder verfügbar, obwohl die meisten Updates im GitHub-Repository enthalten waren.
Viele Kommentare hier sprechen über den alternativen trashBefehl, der von installiert wurde brew install trash. Um es klar zu sagen, dieser Papierkorb verwendet standardmäßig nicht mehr den Finder, daher funktioniert "Put Back" nicht, es sei denn, Sie verwenden ein Flag. Selbst wenn Sie das Flag verwenden, treten häufig Fehler auf (weshalb die Standardeinstellung geändert wurde). Morgants Drehbuch ist also von höherer Qualität. Es kann mithilfe von zinit mit diesem Befehl installiert werdenzinit wait'1' lucid light-mode as"program" pick"src/trash" for morgant/tools-osx

Das Papierkorb -Befehlszeilentool kann über brew install trashoder installiert werden port install trash.

Es ermöglicht Ihnen, gelöschte Dateien über die Befehlszeile oder den Finder wiederherzustellen.

Was für eine elegante Lösung!
Auch in Macports verfügbar:port install trash
Jedes Mal, wenn ich es versuche brew install trash, erhalte ich Folgendes: pastebin.com/N92cM7d8
@BenC.R.Leggiero Ich würde dieses Problem auf github.com/ali-rantakari/trash/issues übertragen . Hast du brew updatezuerst? Funktioniert gut auf meiner Seite.
@PaulWenzel ja, und es scheint gut zu aktualisieren. Ich werde ein Problem posten.
Scheint eine ziemlich schwere Lösung für etwas zu sein, das wir mit einem einfachen Python-Skript machen können .

Ich habe remirgendwo in meinem eine ausführbare Datei $PATHmit folgendem Inhalt aufgerufen:

BEARBEITEN: Der folgende Code ist eine überarbeitete und verbesserte Version in Zusammenarbeit mit Dave Abrahams :

#!/usr/bin/env python
import os
import sys
import subprocess

if len(sys.argv) > 1:
    files = []
    for arg in sys.argv[1:]:
        if os.path.exists(arg):
            p = os.path.abspath(arg).replace('\\', '\\\\').replace('"', '\\"')
            files.append('the POSIX file "' + p + '"')
        else:
            sys.stderr.write(
                "%s: %s: No such file or directory\n" % (sys.argv[0], arg))
    if len(files) > 0:
        cmd = ['osascript', '-e',
               'tell app "Finder" to move {' + ', '.join(files) + '} to trash']
        r = subprocess.call(cmd, stdout=open(os.devnull, 'w'))
        sys.exit(r if len(files) == len(sys.argv[1:]) else 1)
else:
    sys.stderr.write(
        'usage: %s file(s)\n'
        '       move file(s) to Trash\n' % os.path.basename(sys.argv[0]))
    sys.exit(64) # matches what rm does on my system

Es verhält sich genauso wie das Löschen aus dem Finder. (Siehe Blogbeitrag hier .)

Dies sollte meiner Meinung nach mehr Punkte haben. Da es sich um AppleScript handelt, verwendet es den eigentlichen Papierkorbprozess, um die Datei in den Papierkorb zu verschieben, was bedeutet, dass es sich genau gleich verhält. Schade, dass ein Einzeiler jedoch nicht bereitgestellt wurde.
Nun, jemand hat es am 31. Oktober 2015 um 10:26 Uhr abgelehnt - genau zur gleichen Zeit, als jemand anderes eine Antwort auf diese Frage gepostet hat!
Diese Antwort ist eine Anschauungsstunde darüber, wie man die Dinge richtig macht. Es funktioniert mit Shell-Wildcards und es funktioniert über den Finder. Es erfindet keine Räder neu, und es ist so einfach wie möglich. Ich legte es in meine ~/bin, nannte es trash, und es funktionierte beim ersten Mal – es ermöglichte mir, eine ganze Menge Dateien viel effizienter zu löschen, als wenn ich sie in Finder-Fenstern anklicken müsste. Viel Dankbarkeit. Ich hoffe du schreibst noch mehr Antworten!
Leider verarbeitet das Skript keine 'Zeichen in Dateinamen. Ich habe versucht, es mit einer dieser "(John Doe's conflict copy)"-Dateien zu verwenden, die Dropbox manchmal erstellt, als es bei mir fehlschlug.
Diese Version verarbeitet Anführungszeichen. Es ändert das Fehlerbehandlungsverhalten ein wenig, was in der obigen Version nicht sehr sorgfältig ausgearbeitet zu sein scheint (Fehler an stdout statt stderr, kein Exit-Code), aber der Fehler, den Sie erhalten, osascriptwenn die Datei nicht existiert ist nicht schön, also möchten Sie vielleicht diesen Teil stimmen.
Gut gemacht. Diese Version enthält diese Änderungen und versucht auch (1) den Shell-Befehl rmso weit wie möglich zu imitieren, was die Anzeige von Meldungen betrifft, wenn Dateien nicht existieren, und (2) fasst alles in einem einzigen osascriptAufruf zusammen.
@DaveAbrahams: Dies ist eindeutig DIE Antwort :) Um "unixly correct" (UC) zu sein, sollte das Skript als /usr/local/bin(oder, /usr/local/sharewenn Sie es vorziehen) installiert werden. Benennen Sie die Datei /usr/local/bin/trash, und: sudo chmod a+rx usr/local/bin/trash.

Verwenden Sie den Terminalbefehl osascript, den AppleScript-Interpreter.

osascript -e "tell application \"Finder\" to delete POSIX file \"${PWD}/${InputFile}\""

Dies weist AppleScript an, Finder anzuweisen, die Datei in den Papierkorb zu verschieben.

PWD wird für relative Dateipfade benötigt, da AppleScript nicht so gut damit umgehen kann.

Einfach, effektiv und ohne Installation! Nett.

ein moderner Ansatz mit Swift

https://github.com/reklis/recycle

//
// main.swift
// recycle
//
// usage: recycle <files or directories to throw out>
//

import Foundation
import AppKit

var args = NSProcessInfo.processInfo().arguments
args.removeAtIndex(0) // first item in list is the program itself

var w = NSWorkspace.sharedWorkspace()
var fm = NSFileManager.defaultManager()

for arg in args {
    let path = arg.stringByStandardizingPath;
    let file = path.lastPathComponent
    let source = path.stringByDeletingLastPathComponent

    w.performFileOperation(NSWorkspaceRecycleOperation,
        source:source,
        destination: "",
        files: [file],
        tag: nil)
}
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzufügen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert.
@jherran danke für die Erinnerung, ich habe ein Codesegment hinzugefügt
Dies ist meine bevorzugte Antwort, da sie dieselbe zugrunde liegende Logik und dieselben APIs wie die GUI verwendet.
Wenn es jetzt nur eine Python-Version gäbe, die die Notwendigkeit einer 3-MB-Binärdatei für einen Systemaufruf überflüssig macht.

Ich habe einen ziemlich netten Code gefunden, der am Ende des Stapelprofils des Benutzers hinzugefügt werden kann und bewirkt rm, dass die Dateien bei jeder Ausführung in den Papierkorb verschoben werden.

nano ~/.bash_profile

#... append at the end
function rm () {
  local path
  for path in "$@"; do
    # ignore any arguments
    if [[ "$path" = -* ]]; then :
    else
      # remove trailing slash
      local mindtrailingslash=${path%/}
      # remove preceding directory path
      local dst=${mindtrailingslash##*/}
      # append the time if necessary
      while [ -e ~/.Trash/"$dst" ]; do
        dst="`expr "$dst" : '\(.*\)\.[^.]*'` `date +%H-%M-%S`.`expr "$dst" : '.*\.\([^.]*\)'`"
      done
      mv "$path" ~/.Trash/"$dst"
    fi
  done
}

Quelle: http://hints.macworld.com/article.php?story=20080224175659423

Das ist sehr clever, aber ich würde es trotzdem nicht empfehlen. Es ist clever, weil es sich im Bash-Profil für den Benutzer befindet und nur der Benutzer diese Version der Funktion ausführen kann, indem er sie eingibt. Skripte, die auf rm angewiesen sind, rufen immer noch das Original auf. Ich würde dies jedoch nicht empfehlen, da sich der Benutzer daran gewöhnt, dass rm auf diese Weise handelt, wenn dies auf anderen Computern nicht der Fall ist. Ich werde dies verwenden, aber die Funktion in "Papierkorb" umbenennen
Ich verwende dieselbe Funktion mit zwei Änderungen: ① Ich habe einen Fehler in der Funktion korrigiert, der dazu führt, dass jeder Ordner in den Zeitstempel umbenannt wird, wenn er mit einem abschließenden Schrägstrich durch Tabulatoren vervollständigt wurde: Dies erfordert die folgenden Änderungen: Ersetzen der Zeile local dst=${path##*/}mit local dst=${mindtrailingslash##*/}und Einfügen einer weiteren Zeile direkt vor derjenigen, die sagt local mindtrailingslash=${path%/}. ② Ich verwende den Namen function rr. Auf diese Weise stört es nicht plain rm, aber der Name ist ähnlich kurz und schnell zu tippen (jeder andere Name würde auch reichen).
Ändern Sie den Namen von rm()in rmt()- Auf diese Weise können Sie den rmBefehl weiterhin verwenden, wenn Sie möchten. Ich denke an rmt in meinem Kopf als remove to trash:D

Es gibt zwei über Homebrew installierbare Dienstprogramme , die dies bewerkstelligen können:

  1. Müll

    Dies ist ein kleines Befehlszeilenprogramm für OS X, das Dateien oder Ordner in den Papierkorb verschiebt. Der USP dieses Befehls besteht darin, dass die Dateien einfach wiederhergestellt werden können. Ein Befehl zum Löschen von Dateien/Ordnern nützt nichts, wenn Sie Dateien/Ordner nach dem Löschen nicht wiederherstellen können. Von der Website des Kommandos:

Standardmäßig fordert der Papierkorb den Finder auf, die angegebenen Dateien/Ordner in den Papierkorb zu verschieben, anstatt die System-API aufzurufen, um dies zu tun, da die Funktion "Zurücklegen" nur funktioniert, wenn Dateien über den Finder in den Papierkorb verschoben werden.


-F

Bitten Sie den Finder, die Dateien in den Papierkorb zu verschieben, anstatt die System-API zu verwenden. Dies ist langsamer, aber es verwendet die Benutzeroberfläche von Finder (z. B. Sounds) und stellt sicher, dass die Funktion "Zurücklegen" funktioniert.

-l

Listen Sie Elemente auf, die sich derzeit im Papierkorb befinden. Wenn dieses Argument verwendet wird, müssen keine Dateien angegeben werden.

-e

Den Papierkorb leeren. trash bittet um Bestätigung, bevor diese Aktion ausgeführt wird. Wenn dieses Argument verwendet wird, müssen keine Dateien angegeben werden.

Führen Sie zur Installation trashFolgendes im Terminal aus:

brew install trash.


  1. rmtrash

    Ein Befehlszeilentool, das Dateien in den Papierkorb verschiebt. Aus der Manpage des Befehls:

Dieser Befehl verschiebt Dateien in den Papierkorb, anstatt sie vollständig aus dem Dateisystem zu entfernen. Sehr nützlich, wenn Sie sich entscheiden, dass Sie diese Datei doch wollen ...


-u BENUTZERNAME

ein optionales Argument. Dadurch wird die Datei in den Papierkorb des angegebenen Benutzers verschoben. Beachten Sie, dass Sie dazu ausreichende Berechtigungen benötigen.

Führen Sie zur Installation rmtrashFolgendes im Terminal aus:

brew install rmtrash.

Hier ist eine ziemlich triviale einzeilige Lösung, die Sie Ihrem Bash-Profil hinzufügen können. Beachten Sie, dass es bereits etwas mit dem gleichen Namen im Papierkorb überschreibt.

trash() { mv -fv "$@" ~/.Trash/ ; }

Verwendung:

• ~/Desktop $$$ touch a b c
• ~/Desktop $$$ ls
a b c
• ~/Desktop $$$ trash a b c
a -> /Users/ryan.tuck/.Trash/a
b -> /Users/ryan.tuck/.Trash/b
c -> /Users/ryan.tuck/.Trash/c
• ~/Desktop $$$ ls
• ~/Desktop $$$
habe entsprechend editiert - vielen Dank für den Input!

Dies ist eine Verbesserung der Antworten von Antony Smith und cde .

Das Problem beim Einbetten eines Dateinamens in einen String, der an osascriptvia übergeben -ewird, besteht darin, dass Dateinamen auf modernen Unix-ähnlichen Systemen Anführungszeichen enthalten können, sodass Teile des Dateinamens als AppleScript ausgeführt werden könnten.

Eine sicherere Möglichkeit, dies zu tun, besteht darin, den Dateinamen aus einer Umgebungsvariablen zu lesen:

trash() (
    : "${1:?}"
    case $1 in
        (/*) FNAME="$1" ;;
        (*)  FNAME="$(pwd)/$1"
    esac
    export FNAME
    exec osascript <<-EOF >/dev/null
        set fName to system attribute "FNAME"
        tell application "Finder" to delete my (POSIX file fName)
    EOF
)

Wenn Sie diese Funktion zu Ihrem .bashrcoder hinzufügen, können Sie sie von der Befehlszeile aus .zshrcaufrufen . EDIT: Obwohl es natürlich mehr Arbeit erfordert, dies in eine Funktion zu verwandeln, die tatsächlich nützlich ist.trash

Obwohl es möglich ist, rmDateien in den Papierkorb zu verschieben, anstatt sie zu entfernen, würde ich davon abraten, die Denkweise des Sicherheitsnetzes grafischer Benutzeroberflächen auf die UNIX-Shell zu übertragen. Es gibt viele Möglichkeiten, mit dem Terminal ernsthaften Schaden anzurichten. Der beste Rat ist IMHO, einfach zweimal nachzudenken, bevor Sie die enterTaste in einem Shell-Fenster drücken.

Wenn Sie Sie rmdaran erinnern möchten, dass Sie im Begriff sind, eine Datei zu löschen, sollten Sie den folgenden Alias ​​verwenden ( /bin/bashum diese Zeile .bashrcin Ihr Home-Verzeichnis einzufügen):

alias rm "rm -i"

Dadurch wird die rmAnforderung bestätigt, bevor versucht wird, jede Datei zu entfernen.

Wenn Sie TimeMachine laufen haben (ich hoffe es!), können Sie Ihre Datei immer aus dem Backup holen. Auf diese Weise können Sie höchstens eine Stunde Arbeit verlieren. Was natürlich schon schlimm genug ist. Denken Sie also noch einmal nach, bevor Sie diese enterTaste drücken!

Tu es nicht! Installationsskripte können rmden Alias ​​verwenden und hängen bleiben rm -i.
@OldPro: .bashrcwird nur ausgeführt, wenn die Shell interaktiv ist. Überprüfen Sie die Manpage !
Ich würde davon abraten, Sicherheitsnetze zu entfernen oder andere dazu zu ermahnen.
Ich werde gegen die Neinsager vorgehen und sagen, dass ich diesen Trick mit großer Wirkung anwende, aber es sollte definitiv nur getan werden, wenn man die Fallstricke kennt. Zwei nicht erwähnte sind, dass es Ihr Gehirn trainiert, rmdas sicherer ist als es ist, was Sie auf anderen Systemen in Schwierigkeiten bringen wird. Auch wenn Sie verwenden -f, -iwird vollständig ignoriert. Das heißt, dies ist ein gutes Sicherheitsnetz. Besser ist es, niemals rmzugunsten eines rmiAlias ​​( alias rmi="rm -i") oder des exzellenten trashDienstprogramms zu verwenden. Außerdem füge ich hinzu, dass inzwischen jeder seine eigenen eingesteckt haben [ -f ~/.bashrc ] && source ~/.bashrcsollte .bash_profile.

Sachen richtig zu vernichten (so dass sie definitiv wiederherstellbar sind) ist kniffliger als einfach ein mvto ~/.Trash.

osx-trash könnte das sein, wonach Sie suchen. ( Vorbehalt : Ich habe es nicht ausprobiert und kann nicht dafür bürgen, wie sicher es ist.)

Auschecken trash-cli. Es funktioniert plattformübergreifend, ohne Trash-Sound und unterstützt Put Back.

Sie können es installieren mit (erfordert Node.js ) :

$ npm install --global trash-cli

Wenn Sie Node.js nicht verwenden möchten, können Sie alternativ die native Binärdatei osx-trashmanuell installieren.

Versuchen Sie in Ihrer .bashrc-Datei (oder wo auch immer Sie die Parameter für Ihre Shell aufbewahren) einen Alias ​​hinzuzufügen, der das Verhalten von rm dahingehend ändert, Dinge nach ~/.Trash zu verschieben, wie in:

alias rm='move/to/.Trash'

Dieser Alias ​​ist jedoch alles andere als trivial zu implementieren (zumindest für mich), da die Verwendung von mv (der beste Kandidat für diesen Job) ist

mv file where

Ein Alias ​​zu haben, der den „Wo“-Teil vor die zu verschiebende Datei stellt, könnte also ziemlich skizzenhaft sein. Ich schaue mir das mal an und bekomme vielleicht noch fundiertere Tipps.

BEARBEITEN: Ich habe gerade versucht, Folgendes zu meiner .bashrc hinzuzufügen, und es funktioniert:

function trash { mv "$@" ~/.Trash ; }

Es ist viel primitiver als andere Vorschläge, aber Sie vermeiden es, neues Zeug zu installieren.

Das Aliasing rmauf irgendetwas ist gefährlich, da es Installationsskripte beschädigen kann. Ich habe das auf die harte Tour gelernt, als ich einen Alias rm​​hatte rm -iund Installationen hängen blieben.
@Old Pro, das ist der Alias, den ich seit Tag 0 auf allen meinen Computern für rm verwende, und ich hatte deswegen nie Probleme. Möchten Sie ein Beispiel geben?
Ich erinnere mich nicht an die spezifische Anwendung, die ich installiert habe, aber ich erinnere mich, dass die Installation (wahrscheinlich ein Upgrade) hängen blieb und ich ungefähr einen Monat brauchte, um herauszufinden, dass es daran lag, dass ein Installationsskript rmanstelle von verwendet wurde rm -fund das Skript beim Warten hängen blieb zur Bestätigung, dass es in Ordnung war, eine Datei zu löschen. Durch das Entfernen des Alias ​​aus meiner .bashrc konnte die Installation abgeschlossen werden, und ich habe seitdem davon Abstand genommen, diesen Alias ​​unter OS X zu verwenden, obwohl ich ihn immer noch auf jedem anderen Unix-System verwende. Ich bin mir nicht sicher, was Ihr Alias ​​mit tun wird rm -f someFile.
@OldPro: .bashrcwird nur für interaktive Shells verwendet. Beim Ausführen wird ./install.shein neuer Prozess gestartet und der Alias ​​ist nicht aktiv. Wenn Sie jedoch . install.shIhren aktuellen Prozess ausführen, wird das Installationsprogramm ausgeführt und der Alias ​​ist aktiv. RTFM...
Ich habe ein Standard-Installationsprogramm verwendet, das durch Doppelklicken im Finder gestartet wurde. Ich habe festgestellt, dass der festgefahrene Prozess rm -imithilfe psvon die Befehlszeile angezeigt wurde, und ich habe das Problem behoben, indem ich den rmAlias ​​​​entfernt habe. YMMV
Dann führte der Installer eine interaktive Shell aus und war daher ernsthaft kaputt. Ein kaputter Installer ist kaum Grund genug, generell von Shell-Aliassen abzuraten. YMMV
Es ist jedoch ein guter Rat, den rmBefehl nicht mit einem Alias ​​zu versehen, wie Morgant sagte, da Sie sich damit anfreunden werden rm, Dateien nicht wirklich zu entfernen, und dann möglicherweise versehentlich etwas auf einem System löschen, auf dem kein solcher Alias ​​hinzugefügt wurde. Außerdem ist das Verschieben einer Datei in den Papierkorb nicht so einfach wie nur mv {} ~/.Trash. Befindet sich die Datei beispielsweise auf einem separaten Volume, wird die Datei in Ihr Home-Verzeichnis kopiert und das Original gelöscht.
Ich verwende diese kurze Funktion auch in meiner .bashrc; Sie müssen diese Änderung jedoch vornehmen, um function trash { mv "$@" ~/.Trash ; }zu vermeiden, dass Ordnernamen mit Leerzeichen beschädigt werden.

Ich habe einfach dieses Skript gesetzt

#!/bin/bash
application=$(basename "$0")
if [ "$#" == 0 ]; then
    echo "Usage: $application path [paths...]"
    exit 1
fi
trashdir="/Users/${USER}/.Trash"
while (( "$#" )); do
    if [ -e "$1" ]; then
        src=$(basename "$1")
        dst=$src
        while [ -e "$trashdir/$dst" ]; do
            dst=$src+`date +%H-%M-%S`
        done
        mv -f "$1" "$trashdir/$dst"
    else
        echo "$1" does not exist.
    fi
    shift
done

in ~/bin/trash, machte es ausführbar chmod +x ~/bin/trashund fügte die folgende Zeile hinzu~/.bash_profile

PATH=$PATH:$HOME/bin

Dann kann man es so verwenden

$ trash broken.js olddir cleanup.*

Mit einer einfachen Funktion können Sie Dateien in den Papierkorb verschieben, indem Sie sie in den .Trash-Ordner des Benutzers verschieben:

trash() {
   mv $1 ~/.Trash
}
? warum ein negatives Votum? das wäre auch mein gedanke..
Sie brauchen wahrscheinlich $*anstelle von $1, aber dann würden Sie am Ende dieselbe Antwort wie erhalten mv "$@" ~/.Trash. Warum die Leute es negativ bewerten, überprüfen Sie die Kommentare der anderen Antwort.
Seien Sie vorsichtig mit diesem Alias; Dies funktioniert, wenn Sie nur eine Partition oder ein Laufwerk haben. Wenn Sie an einem zweiten Volume oder einer Netzwerkfreigabe arbeiten, wird die Datei tatsächlich in den Papierkorb Ihres Home-Verzeichnisses kopiert , was wahrscheinlich nicht das ist, was Sie tun wollten!