Comando per spostare un file nel Cestino tramite Terminale


117

Vorrei sapere se esiste un comando che posso emettere in un terminale, quindi non rimuovo classicamente ( rm) il file, ma invece lo sposto nel cestino (ovvero il comportamento di Nautilus Sposta nel cestino).

Nel caso ci fosse un tale comando, sarei anche interessato a sapere di cosa si tratta.


2
Dai un'occhiata a questa risposta .
Peachy,

Risposte:


105

Puoi usare il gvfs-trashcomando dal pacchetto gvfs-binche è installato di default in Ubuntu.

Sposta il file nel cestino:

gvfs-trash filename

Vedi il contenuto del cestino:

gvfs-ls trash://

Svuota il cestino:

gvfs-trash --empty

Visita anche la mia domanda su gvfs .
Pandya,

Questa è la risposta più semplice per me che funziona. Grazie.
Teody C. Seguin,

10
Secondo man gvfs-trashesso è deprecato a favore di gio trash, vedi man gio.
pbhj,

67

Installa trash-cliInstalla trash-cli -sudo apt-get install trash-cli

Metti i file nel cestino con: trash file1 file2

Elenca i file nel cestino: trash-list

Svuota cestino con: trash-empty


1
Quello strumento (relativo a Ubuntu) punta a una specifica spazzatura . Abbastanza interessante, non sono sicuro di quanto ampiamente adottato, però ...
Frank Nocke,

Dopo l'installazione, eseguo il comando e ottengo l'errore: File "/usr/bin/trash-list", line 4, in <module> ImportError: No module named 'trashcli'
Daniel

25

A partire dal 2017, gvfs-trashsembra essere deprecato.

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

Dovresti usare gio, in particolare

gio trash

è il modo raccomandato.


2
Potresti collegare una fonte per gvfs-trashessere deprecata e cos'è gio?
Melebio

1
Purtroppo non posso fornire un link, ma questo è quello che sto cercando di usare gvfs-trash su Kubuntu 17.10: pastebin.com/HA4a1pbs
Eugen Tverdokhleb

1
Potresti incollare l'esempio qui nella tua risposta, sarebbe sufficiente per me insieme al numero di versione del sistema. Sto usando 16.04 LTS ed gvfs-trashè l'unica opzione qui.
Melebio

Questo strumento ha un sacco di altre belle funzionalità. Mi piace il infocomando; sembra utile.
Raffi Khatchadourian,

4

@Radu RădeanuRisposta di aggiornamento . Dato che Ubuntu mi sta dicendo di usare gioinvece ...

Quindi, per cestino some_file(o cartella) utilizzare

gio trash some_file

Per usare l'immersione con cassonetto

gio list trash://

Svuotare la spazzatura

gio trash --empty

3

Mi piacciono i modi low tech il meglio. Ho creato una cartella .Trnella mia home directory digitando:

mkdir ~/.Tr

e invece di utilizzare rmper eliminare i file, li sposto nella ~/.Trdirectory digitando:

mv fileName ~/.Tr

Questo è un modo efficace e semplice per mantenere l'accesso ai file che ritieni non desiderino con l'ulteriore vantaggio nel mio caso di non scherzare con le cartelle del sistema, poiché i miei livelli di conoscenza di Ubuntu sono abbastanza bassi e mi preoccupo di ciò che potrei essere rovinare quando incasino roba di sistema. Se sei anche di basso livello, tieni presente che "." nel nome della directory lo rende una directory nascosta.


3

Una risposta precedente menziona il comando gio trash, che va bene fino in fondo. Tuttavia, sui computer server, non esiste un equivalente di una directory cestino. Ho scritto uno script Bash che fa il lavoro; su macchine desktop (Ubuntu), utilizza gio trash. (Ho aggiunto alias tt='move-to-trash'al mio file delle definizioni alias; ttè un mnemonico per "to trash".)

#!/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


0

In KDE 4.14.8 ho usato il seguente comando per spostare i file nel cestino (come se fossero rimossi in Dolphin):

kioclient move path_to_file_or_directory_to_be_removed trash:/

Appendice: ho scoperto il comando con

    ktrash --help
...
    Note: to move files to the trash, do not use ktrash, but "kioclient move 'url' trash:/"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.