Befehl zum Verschieben einer Datei in den Papierkorb über das Terminal

117

Ich möchte wissen, ob es einen Befehl gibt, den ich in einem Terminal ausgeben kann, damit ich rmdie Datei nicht klassisch entferne ( ), sondern in den Papierkorb verschiebe (dh das Verhalten von Nautilus Move to Trash).

Wenn es einen solchen Befehl gibt, würde mich auch interessieren, was er ist.

Rasmus
quelle
2
Schauen Sie sich diese Antwort an .
Peachy
2
Auch eine gute Ressource hier: webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
Rinzwind

Antworten:

105

Sie können den gvfs-trashBefehl aus dem Paket verwenden, gvfs-bindas standardmäßig in Ubuntu installiert ist.

Datei in den Papierkorb verschieben:

gvfs-trash filename

Den Inhalt des Papierkorbs anzeigen:

gvfs-ls trash://

Den Papierkorb leeren:

gvfs-trash --empty
Radu Rădeanu
quelle
Besuchen Sie auch meine gvfs-Frage .
Pandya
Dies ist die einfachste Antwort für mich, die funktioniert. Danke.
Teody C. Seguin
10
Demnach man gvfs-trashwird zugunsten von veraltet gio trash, vgl man gio.
pbhj
67

Installiere trash-cliInstalliere trash-cli -sudo apt-get install trash-cli

Legen Sie Dateien in den Papierkorb mit: trash file1 file2

Dateien im Papierkorb auflisten: trash-list

Müll leeren mit: trash-empty

user55822
quelle
1
Dieses (Ubuntu-bezogene) Tool verweist auf eine Papierkorbspezifikation . Ziemlich interessant, nicht sicher, wie weit verbreitet, obwohl ...
Frank Nocke
Nach der Installation führe ich den Befehl aus und erhalte den Fehler: File "/usr/bin/trash-list", line 4, in <module> ImportError: No module named 'trashcli'
Daniel
25

Ab 2017 gvfs-trashscheint veraltet zu sein.

$ touch test
$ gvfs-trash test
This tool has been deprecated, use 'gio trash' instead.
See 'gio help trash' for more info.

Sie sollten giospeziell verwenden

gio trash

ist der empfohlene Weg.

Eugen Tverdokhleb
quelle
2
Könnten Sie eine Quelle für gvfs-trashveraltete verknüpfen und was gioist?
Melebius
1
Ich kann leider keinen Link bereitstellen, aber das ist es, was ich versuche, gvfs-trash auf Kubuntu 17.10 zu verwenden: pastebin.com/HA4a1pbs
Eugen Tverdokhleb
1
Sie könnten das Beispiel hier in Ihre Antwort einfügen, es würde für mich zusammen mit der Versionsnummer des Systems ausreichen. Ich benutze 16.04 LTS und gvfs-trashist die einzige Option hier.
Melebius
Dieses Tool verfügt über eine Reihe weiterer nützlicher Funktionen. Ich mag den infoBefehl; es scheint nützlich.
Raffi Khatchadourian
4

@Radu RădeanuAntwort wird aktualisiert . Da mir Ubuntu sagt, ich soll giostattdessen ...

Also, um Papierkorb some_file(oder Ordner) zu verwenden

gio trash some_file

Zum Mülltauchen verwenden

gio list trash://

Müll leeren

gio trash --empty
Barmaley
quelle
3

Ich mag die Low-Tech-Art und Weise am besten. Ich habe einen Ordner .Trin meinem Home-Verzeichnis erstellt, indem ich Folgendes eingegeben habe:

mkdir ~/.Tr

Anstatt rmDateien zu löschen, verschiebe ich diese Dateien in das ~/.TrVerzeichnis, indem ich Folgendes eingebe:

mv fileName ~/.Tr

Dies ist eine effektive und einfache Methode, um den Zugriff auf Dateien zu erhalten, von denen Sie glauben, dass Sie sie nicht benötigen, und bietet den zusätzlichen Vorteil, dass ich nicht mit den Ordnern des Systems herumspiele, da mein Ubuntu-Wissensstand ziemlich niedrig ist und ich mir Sorgen mache, was ich sein könnte vermasselt, wenn ich mit Systemkram rumlaufe. Wenn Sie auch niedrig sind, beachten Sie bitte, dass das "." im Verzeichnisnamen macht es zu einem versteckten Verzeichnis.

user2981989
quelle
3

In einer früheren Antwort wird der Befehl erwähnt, der in der Tat gio trashin Ordnung ist. Auf Servern gibt es jedoch kein Äquivalent zu einem Papierkorbverzeichnis. Ich habe ein Bash-Skript geschrieben, das die Arbeit erledigt. Auf (Ubuntu) -Desktop-Computern wird verwendet gio trash. (Ich habe alias tt='move-to-trash'zu meiner Aliasdefinitionsdatei hinzugefügt ; ttist eine Kurzbezeichnung für "in den Papierkorb".)

#!/bin/bash
# move-to-trash

# Teemu Leisti 2018-07-08

# This script moves the files given as arguments to the trash directory, if they
# are not already there. It works both on (Ubuntu) desktop and server hosts.
#
# The script is intended as a command-line equivalent of deleting a file from a
# graphical file manager, which, in the usual case, moves the deleted file(s) to
# a built-in trash directory. On server hosts, the analogy is not perfect, as
# the script does not offer the functionalities of restoring a trashed file to
# its original location nor of emptying the trash directory; rather, it is an
# alternative to the 'rm' command that offers the user the peace of mind that
# they can still undo an unintended deletion before they empty the trash
# directory.
#
# To determine whether it's running on a desktop host, the script tests for the
# existence of directory ~/.local/share/Trash. In case it is, the script relies
# on the 'gio trash' command.
#
# When not running on a desktop host, there is no built-in trash directory, so
# the first invocation of the script creates one: ~/.Trash/. It will not
# overwrite an existing file in that directory; instead, in case a file given as
# an argument already exists in the custom trash directory, the script first
# appends a timestamp to the filename, with millisecond resolution, such that no
# existing file will be overwritten.
#
# The script will not choke on a nonexistent file. It outputs the final
# disposition of each argument: does not exist, was already in trash, or was
# moved to the trash.


# Exit on using an uninitialized variable, and on a command returning an error.
# (The latter setting necessitates appending " || true" to those arithmetic
# calculations that can result in a value of 0, lest bash interpret the result
# as signalling an error.)
set -eu

is_desktop=0

if [[ -d ~/.local/share/Trash ]] ; then
    is_desktop=1
    trash_dir_abspath=$(realpath ~/.local/share/Trash)
else
    trash_dir_abspath=$(realpath ~/.Trash)
    if [[ -e $trash_dir_abspath ]] ; then
        if [[ ! -d $trash_dir_abspath ]] ; then
            echo "The file $trash_dir_abspath exists, but is not a directory. Exiting."
            exit 1
        fi
    else
        mkdir $trash_dir_abspath
        echo "Created directory $trash_dir_abspath"
    fi
fi

for file in "$@" ; do
    file_abspath=$(realpath -- "$file")
    file_basename=$( basename -- "$file_abspath" )
    if [[ ! -e $file_abspath ]] ; then
        echo "does not exist:   $file_abspath"
    elif [[ "$file_abspath" == "$trash_dir_abspath"* ]] ; then
        echo "already in trash: $file_abspath"
    else
        if (( is_desktop == 1 )) ; then
            gio trash "$file_abspath" || true
        else
            move_to_abspath="$trash_dir_abspath/$file_basename"
            while [[ -e "$move_to_abspath" ]] ; do
                move_to_abspath="$trash_dir_abspath/$file_basename-"$(date '+%Y-%m-%d-at-%H:%M:%S.%3N')
            done
            # While we're reasonably sure that the file at $move_to_abspath does not exist, we shall
            # use the '-f' (force) flag in the 'mv' command anyway, to be sure that moving the file
            # to the trash directory is successful even in the extremely unlikely case that due to a
            # run condition, some other thread has created the file $move_to_abspath after the
            # execution of the while test above.
            /bin/mv -f "$file_abspath" "$move_to_abspath"
        fi
        echo "moved to trash:   $file_abspath"
    fi
done
Teemu Leisti
quelle
2

Hier ist eine auf Open Source NodeJS basierende Version (wenn Sie wissen möchten, was unter der Haube passiert oder dies in einem Projekt benötigen), die auch Befehlszeilenunterstützung bietet (wenn Sie zufrieden sind, wenn es nur funktioniert).

> trash pictures/beach.jpg
Frank Nocke
quelle
0

In KDE 4.14.8 habe ich den folgenden Befehl verwendet, um Dateien in den Papierkorb zu verschieben (als ob sie in Dolphin entfernt worden wären):

kioclient move path_to_file_or_directory_to_be_removed trash:/

Anhang: Ich habe über den Befehl mit

    ktrash --help
...
    Note: to move files to the trash, do not use ktrash, but "kioclient move 'url' trash:/"
user3804598
quelle