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 entfernt. Ich würde gerne wissen, ob es möglich ist, 'rm' im Terminal so zu überladen, dass es die Datei (en) auf dem Weg nach draußen in den Papierkorb schickt.
macos
command-line
Joe
quelle
quelle
Antworten:
Ich würde nicht Aliasing raten
rm
zu ,mv
wie Sie in der Gewohnheit bekommen könntenrm
nicht dauerhaft Löschen von Dateien und führen Sie dann in Probleme auf anderen Computern oder unter anderen Benutzerkonten , wenn sie nicht dauerhaft löschen.Ich schrieb eine Reihe von
bash
Skripten , die mehr Mac OS X-ähnlichen Kommandozeilen - Tools (zusätzlich zu einer Reihe von integrierten in denjenigen wie hinzufügenopen
,pbcopy
,pbpaste
, etc.), was am wichtigsten isttrash
. Meine Version vontrash
wird alle korrekten Dinge tun, die Aliasingrm
nicht kann (und hoffentlich nichts Schlechtes, aber ich verwende es seit einigen Jahren auf meinen eigenen Macs ohne Datenverlust), einschließlich: Umbenennen der Datei wie Finder Wenn bereits eine Datei mit demselben Namen vorhanden ist, werden die Dateien auf externen Datenträgern in den richtigen Papierkorb verschoben. Außerdem wurden einige Besonderheiten hinzugefügt, z. B .: Es wird versucht, AppleScript zu verwenden, wenn es verfügbar ist, damit Sie den netten Trash-Sound und dergleichen erhalten (dies ist jedoch nicht erforderlich, sodass Sie es weiterhin über SSH verwenden können, wenn kein Benutzer angemeldet ist) Geben Sie die Papierkorbgröße für alle Volumes an.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
trash
Befehl, der von Ali Rantakari entwickelt wurde , aber ich habe diesen selbst nicht getestet.quelle
trash
Rantakari schon eine ganze Weile benutzt und kann mich wirklich dafür verbürgen. Es ist mit Objective-C kompiliert und verwendet geschickt Standard-Dateisystem-APIs. Sollte es fehlschlagen (dh der Benutzer hat nicht genügend Rechte), ruft es Finder auf, um die Dateien in den Papierkorb zu werfen (um effektiv zur Authentifizierung aufzufordern). Sie können weitere Informationen von lesentrash
von hasseg.org/blog .brew install trash
.trash
Befehl , der über Homebrew verfügbar ist, der von Alai Rantakari (siehe diebrew
Formel ).brew remove trash
und dann behebenbrew install trash
.Das Papierkorb- Kommandozeilen-Tool kann über installiert werden
brew install trash
.Hiermit können Sie über die Befehlszeile oder den Finder gelöschte Dateien wiederherstellen.
quelle
port install trash
brew install trash
, erhalte ichbrew update
zuerst? Funktioniert gut an meinem Ende.Ich habe
rem
irgendwo in meinem eine ausführbare Datei$PATH
mit folgendem Inhalt aufgerufen :BEARBEITEN: Code unten ist eine überarbeitete und verbesserte Version in Zusammenarbeit mit Dave Abrahams :
Es verhält sich genauso wie das Löschen aus dem Finder. (Siehe Blogbeitrag hier .)
quelle
~/bin
, benannttrash
und es hat beim ersten Mal funktioniert - so kann ich eine ganze Reihe von Dateien effizienter in den Papierkorb werfen, als wenn ich sie in Finder-Fenstern anklicken müsste. Vielen Dank. Ich hoffe du postest mehr Antworten!osascript
wenn die Datei nicht existiert ist nicht schön, also möchten Sie vielleicht diesen Teil stimmen.rm
so weit wie möglich zu imitieren , um Meldungen anzuzeigen, wenn keine Dateien vorhanden sind, und (2) alles in einem einzigenosascript
Aufruf zusammenzufassen.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
Quelle: http://hints.macworld.com/article.php?story=20080224175659423
quelle
local dst=${path##*/}
mitlocal dst=${mindtrailingslash##*/}
und Einfügen einer weiteren Zeile kurz vor der, in der stehtlocal mindtrailingslash=${path%/}
. ② Ich benutze den Namenfunction rr
. So stört es nicht mit plainrm
, aber der Name ist ähnlich kurz und schnell einzugeben (jeder andere Name würde es tun).rm()
inrmt()
- Auf diese Weise können Sie denrm
Befehl weiterhin verwenden, wenn Sie möchten. Ich denke an RTM in meinem Kopf alsremove to trash
: DVerwenden Sie den Terminalbefehl osascript, den AppleScript-Interpreter.
Dadurch wird AppleScript angewiesen, Finder anzuweisen, die Datei in den Papierkorb zu verschieben.
PWD wird für relative Dateipfade benötigt, da AppleScript dies nicht gut handhabt.
quelle
Ein moderner Ansatz mit Swift
https://github.com/reklis/recycle
quelle
Obwohl es möglich ist,
rm
Dateien in den Papierkorb zu verschieben, anstatt sie zu entfernen, würde ich davon abraten, die Denkweise des Sicherheitsnetzes der grafischen Benutzeroberflächen auf die UNIX-Shell zu übertragen. Es gibt viele Möglichkeiten, mit dem Terminal schwerwiegende Schäden zu verursachen. Der beste Rat, IMHO, ist es, einfach zweimal zu überlegen, bevor Sie die enterTaste in einem Shell-Fenster drücken.Wenn Sie
rm
daran erinnern möchten , dass Sie im Begriff sind, eine Datei zu löschen, sollten Sie den folgenden Alias verwenden (/bin/bash
um diese Zeile.bashrc
in Ihr Ausgangsverzeichnis einzufügen):Dadurch wird die
rm
Anforderung bestätigt, bevor versucht wird, jede Datei zu entfernen .Wenn TimeMachine ausgeführt wird (ich hoffe es!), Können Sie Ihre Datei immer aus dem Backup holen. Auf diese Weise können Sie höchstens eine Arbeitsstunde verlieren. Was natürlich schlimm genug ist. Überlegen Sie es sich also noch einmal, bevor Sie diese enterTaste drücken!
quelle
rm
den Alias verwenden und hängenrm -i
..bashrc
wird nur ausgeführt, wenn die Shell interaktiv ist. Überprüfen Sie die Manpage !rm
das sicherer ist als es ist, wodurch Sie auf anderen Systemen in Schwierigkeiten geraten. Auch wenn Sie verwenden-f
,-i
wird völlig ignoriert. Dies ist jedoch ein gutes Sicherheitsnetz. Besser ist es, niemalsrm
zugunsten einesrmi
Alias (alias rmi="rm -i"
) oder des hervorragendentrash
Dienstprogramms zu verwenden. Ich werde auch hinzufügen , dass jeder stellen sollte[ -f ~/.bashrc ] && source ~/.bashrc
in ihrer.bash_profile
mittlerweile.Es gibt zwei Dienstprogramme, die über Homebrew installiert werden können:
Müll
Dies ist ein kleines Befehlszeilenprogramm für OS X, das Dateien oder Ordner in den Papierkorb verschiebt. Das Alleinstellungsmerkmal dieses Befehls ist das einfache Wiederherstellen der Dateien. Ein Befehl zum Löschen von Dateien / Ordnern ist nicht sinnvoll, wenn Sie Dateien / Ordner nach dem Löschen nicht wiederherstellen können. Von der Website des Befehls:
trash
Führen Sie zum Installieren im Terminal Folgendes aus:brew install trash
.rmtrash
Ein Befehlszeilenprogramm, mit dem Dateien in den Papierkorb verschoben werden. Auf der Manpage des Befehls:
rmtrash
Führen Sie zum Installieren im Terminal Folgendes aus:brew install rmtrash
.quelle
Hier ist eine ziemlich einfache einzeilige Lösung, die Sie Ihrem Bash-Profil hinzufügen können. Beachten Sie, dass bereits etwas mit demselben Namen im Papierkorb überschrieben wird.
Verwendungszweck:
quelle
Richtig Sachen Wegwerfen (so dass es auf jeden Fall wiederherstellbaren ist) ist schwieriger als nur ein
mv
zu~/.Trash
.osx-trash könnte das sein, wonach du suchst. ( Vorbehalt - Ich habe es nicht ausprobiert und kann nicht dafür bürgen, wie sicher es ist.)
quelle
Auschecken
trash-cli
. Es funktioniert plattformübergreifend, ohne Trash-Sound und unterstützt Put Back.Sie können es mit (erfordert Node.js ) installieren :
Wenn Sie Node.js nicht verwenden möchten, können Sie die native Binärdatei auch
osx-trash
manuell installieren .quelle
Fügen Sie in Ihrer .bashrc-Datei (oder wo immer Sie die Parameter für Ihre Shell behalten) einen Alias hinzu, der das Verhalten von rm dahingehend ändert, dass Inhalte nach ~ / .Trash verschoben werden, wie in:
Dieser Alias ist jedoch alles andere als trivial (zumindest für mich) zu implementieren, da die Verwendung von mv (der Hauptkandidat, der für diesen Job verwendet werden soll)
Ein Alias, der das "wo" vor die zu verschiebende Datei setzt, kann daher recht lückenhaft sein. Ich werde mich darum kümmern und möglicherweise umfassendere Ratschläge erhalten.
BEARBEITEN: Ich habe gerade versucht, meinem .bashrc Folgendes hinzuzufügen, und es funktioniert:
Es ist viel primitiver als andere Vorschläge, aber Sie vermeiden es, neue Dinge zu installieren.
quelle
rm
auf irgendetwas ist gefährlich, da es Installer-Skripte beschädigen kann. Ich habe gelernt , auf die harte Tour , als ich aliasedrm
zurm -i
und hatte anbringt hängen..bashrc
wird nur für interaktive Shells verwendet. Wenn Sie./install.sh
einen neuen Prozess ausführen , wird dieser gestartet und der Alias ist nicht aktiv. Wenn Sie jedoch. install.sh
Ihren aktuellen Prozess ausführen, wird das Installationsprogramm ausgeführt und der Alias ist aktiv. RTFM ...rm
ratsam, den Befehl nicht als Alias zu kennzeichnen, da Sierm
möglicherweise versehentlich Dateien 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 einfachmv {} ~/.Trash
. Befindet sich die Datei beispielsweise auf einem separaten Volume, wird die Datei in Ihr Ausgangsverzeichnis kopiert und das Original gelöscht.Ich habe dieses Skript einfach gestellt
in
~/bin/trash
, machte es excutablechmod +x ~/bin/trash
und fügte die folgende Zeile hinzu~/.bash_profile
Dann kann man es als verwenden
quelle
Mit einer einfachen Funktion können Sie Dateien in den Papierkorb des Benutzers verschieben:
quelle
$*
statt$1
, aber dann würden Sie die gleiche Antwort erhalten wiemv "$@" ~/.Trash
. Warum Leute es negativ bewerten, überprüfen Sie die Kommentare aus der anderen Antwort.