Comando per spostare un file nel Cestino tramite Terminale

102

Vorrei sapere se esiste un comando che posso inviare in un terminale, quindi non rimuovo classicamente ( rm ) il file, ma lo sposto nel cestino (cioè il comportamento di Nautilus Move to Trash).

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

    
posta Rasmus 06.11.2012 - 09:46

6 risposte

92

Puoi usare gvfs-trash comando dal pacchetto gvfs-bin che viene 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
    
risposta data Radu Rădeanu 17.09.2014 - 08:21
60

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

Inserisci i file nel cestino con: trash file1 file2

Elenca i file nel cestino: trash-list

Svuota cestino con: trash-empty

    
risposta data user55822 06.11.2012 - 10:12
11

A partire dal 2017, gvfs-trash sembra 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 metodo consigliato.

    
risposta data Eugen Tverdokhleb 29.10.2017 - 11:49
2

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

mkdir ~/.Tr

e invece di usare rm per eliminare i file, sposto quei file nella directory ~/.Tr digitando:

mv fileName ~/.Tr

Questo è un modo efficace e semplice per mantenere l'accesso ai file che ritieni di non desiderare con l'ulteriore vantaggio nel mio caso di non scherzare con le cartelle del sistema, dato che i miei livelli di conoscenza di Ubuntu sono piuttosto bassi e mi preoccupo di cosa Potrei rovinare quando faccio casino con le cose del sistema. Se sei anche di basso livello, tieni presente che "." nel nome della directory lo rende una directory nascosta.

    
risposta data user2981989 25.09.2015 - 19:29
1

Ecco una versione basata su nodejs di open source (se vuoi sapere, cosa succede sotto il cofano o hai bisogno di questo in un progetto), che ha anche supporto della riga di comando (se sei felice, se funziona, basta.

> trash pictures/beach.jpg
    
risposta data Frank Nocke 15.08.2017 - 19:44
1

Una risposta precedente menziona il comando gio trash , che va bene fin dove arriva. Tuttavia, su macchine server, non esiste un equivalente di una directory trash. Ho scritto uno script Bash che fa il lavoro; su macchine desktop (Ubuntu), usa gio trash . (Ho aggiunto alias tt='move-to-trash' al mio file di 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 "[email protected]" ; 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
    
risposta data Teemu Leisti 26.06.2018 - 15:05

Leggi altre domande sui tag