Lệnh di chuyển tệp vào Thùng rác qua Terminal


117

Tôi muốn biết nếu có một lệnh tôi có thể đưa ra trong một thiết bị đầu cuối để tôi không xóa rmtệp ( ) một cách cổ điển , mà thay vào đó chuyển nó vào thùng rác (tức là hành vi Nautilus Move to Trash).

Trong trường hợp có một lệnh như vậy, tôi cũng sẽ quan tâm đến việc biết nó là gì.


2
Có một cái nhìn vào câu trả lời này .
Peachy

2
Cũng là một tài nguyên tốt ở đây: webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
Rinzwind

Câu trả lời:


105

Bạn có thể sử dụng gvfs-trashlệnh từ gói gvfs-binđược cài đặt theo mặc định trong Ubuntu.

Di chuyển tệp vào thùng rác:

gvfs-trash filename

Xem nội dung của thùng rác:

gvfs-ls trash://

Làm sạch thùng rác:

gvfs-trash --empty

Cũng truy cập câu hỏi gvfs của tôi .
Pandya

Đây là câu trả lời đơn giản nhất cho tôi mà làm việc. Cảm ơn bạn.
Teody C. Seguin

10
Theo man gvfs-trashnó là phản đối ủng hộ gio trash, xem man gio.
pbhj

67

Cài đặt thùng rácCài đặt thùng rác -sudo apt-get install trash-cli

Đặt các tệp vào thùng rác với: trash file1 file2

Liệt kê các tập tin trong thùng rác: trash-list

Thùng rác có: trash-empty


1
Công cụ đó (liên quan đến Ubuntu) chỉ ra một thông số rác . Khá thú vị, không chắc là được áp dụng rộng rãi như thế nào, mặc dù ...
Frank Nocke

Sau khi cài đặt, tôi chạy lệnh và nhận được lỗi: File "/usr/bin/trash-list", line 4, in <module> ImportError: No module named 'trashcli'
Daniel

25

Tính đến năm 2017, gvfs-trashdường như không được chấp nhận.

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

Bạn nên sử dụng gio, cụ thể

gio trash

là cách được đề nghị.


2
Bạn có thể liên kết một nguồn để gvfs-trashđược phản đối và đó giolà gì?
Melebius

1
Tôi không thể cung cấp một liên kết một cách đáng tiếc, nhưng đây là những gì tôi đang cố gắng sử dụng gvfs-thùng rác trên Kubfox 17.10: pastebin.com/HA4a1pbs
Eugen Tverdokhleb

1
Bạn có thể dán ví dụ ở đây vào câu trả lời của bạn, nó sẽ đủ cho tôi cùng với số phiên bản hệ thống. Tôi đang sử dụng 16.04 LTS và gvfs-trashlà lựa chọn duy nhất ở đây.
Melebius

Công cụ này có một loạt các tính năng tốt đẹp khác. Tôi thích infolệnh; nó có vẻ hữu ích
Raffi Khatchadourian

4

Cập nhật @Radu Rădeanucâu trả lời. Vì Ubuntu đang bảo tôi sử dụng giothay thế ...

Vì vậy, để rác some_file(hoặc thư mục) sử dụng

gio trash some_file

Đi lặn biển sử dụng

gio list trash://

Để trống rác

gio trash --empty

3

Tôi thích những cách công nghệ thấp tốt nhất. Tôi đã tạo một thư mục .Trtrong thư mục nhà của tôi bằng cách gõ:

mkdir ~/.Tr

và thay vì sử dụng rmđể xóa các tệp, tôi di chuyển các tệp đó vào ~/.Trthư mục bằng cách gõ:

mv fileName ~/.Tr

Đây là một cách hiệu quả và đơn giản để giữ quyền truy cập vào các tệp mà bạn nghĩ rằng bạn không muốn với lợi ích bổ sung trong trường hợp tôi không làm phiền các thư mục của hệ thống, vì mức độ kiến ​​thức Ubuntu của tôi khá thấp và tôi lo lắng về những gì tôi có thể làm hỏng việc khi tôi làm hỏng hệ thống Nếu bạn cũng ở cấp độ thấp, xin lưu ý rằng "." trong tên thư mục làm cho nó một thư mục ẩn.


3

Một câu trả lời trước đó đề cập đến lệnh gio trash, đó là tốt như nó đi. Tuy nhiên, trên các máy chủ, không có thư mục rác tương đương. Tôi đã viết một kịch bản Bash thực hiện công việc; trên máy tính để bàn (Ubuntu), nó sử dụng gio trash. (Tôi đã thêm vào alias tt='move-to-trash'tệp định nghĩa bí danh của mình; ttlà một bản ghi nhớ cho "vào thùng rác".)

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

Trong KDE 4.14.8, tôi đã sử dụng lệnh sau để di chuyển tệp vào thùng rác (như thể nó đã bị xóa trong Cá heo):

kioclient move path_to_file_or_directory_to_be_removed trash:/

Phụ lục: Tôi tìm thấy về lệnh với

    ktrash --help
...
    Note: to move files to the trash, do not use ktrash, but "kioclient move 'url' trash:/"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.