Comando para mover un archivo a la Papelera a través de la Terminal

102

Me gustaría saber si hay un comando que puedo emitir en una terminal, así que no elimino clásicamente ( rm ) el archivo, sino que lo muevo a la papelera (es decir, el comportamiento de Nautilus Move to Trash).

En caso de que exista tal comando, también me interesaría saber de qué se trata.

    
pregunta Rasmus 06.11.2012 - 09:46

6 respuestas

92

Puedes usar el comando gvfs-trash del paquete gvfs-bin que está instalado por defecto en Ubuntu.

Mover archivo a la papelera:

gvfs-trash filename

Ver el contenido de la papelera:

gvfs-ls trash://

Vaciar la papelera:

gvfs-trash --empty
    
respondido por el Radu Rădeanu 17.09.2014 - 08:21
60

Instalar trash-cli - sudo apt-get install trash-cli

Guarde los archivos en la papelera con: trash file1 file2

Mostrar archivos en la papelera: trash-list

Vaciar la papelera con: trash-empty

    
respondido por el user55822 06.11.2012 - 10:12
11

A partir de 2017, gvfs-trash parece estar en desuso.

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

Deberías usar gio , específicamente

gio trash

es la forma recomendada.

    
respondido por el Eugen Tverdokhleb 29.10.2017 - 11:49
2

Me gustan las formas de baja tecnología lo mejor. Creé una carpeta .Tr en mi directorio personal escribiendo:

mkdir ~/.Tr

y en lugar de usar rm para eliminar archivos, muevo esos archivos al directorio ~/.Tr escribiendo:

mv fileName ~/.Tr

Esta es una forma efectiva y simple de mantener el acceso a los archivos que crees que no quieres con el beneficio adicional en mi caso de no jugar con las carpetas del sistema, ya que mis niveles de conocimiento de Ubuntu son bastante bajos y me preocupa qué Podría estar jodiendo cuando me meto con cosas del sistema. Si también eres de bajo nivel, ten en cuenta que el "." en el nombre del directorio lo convierte en un directorio oculto.

    
respondido por el user2981989 25.09.2015 - 19:29
1

Aquí hay una versión basada en nodejs de código abierto (si quieres saber qué sucede debajo del capó o si necesitas esto) en un proyecto), que también tiene soporte de línea de comandos (si está contento, si funciona)

> trash pictures/beach.jpg
    
respondido por el Frank Nocke 15.08.2017 - 19:44
1

Una respuesta previa menciona el comando gio trash , que está bien hasta donde llega. Sin embargo, en máquinas servidor, no hay un directorio de basura equivalente. He escrito un guión Bash que hace el trabajo; en máquinas de escritorio (Ubuntu), usa gio trash . (Agregué alias tt='move-to-trash' a mi archivo de definiciones de alias; tt es un mnemónico para "tirar basura").

#!/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
    
respondido por el Teemu Leisti 26.06.2018 - 15:05

Lea otras preguntas en las etiquetas