Perintah untuk memindahkan file ke Sampah melalui Terminal

117

Saya ingin tahu apakah ada perintah yang bisa saya keluarkan di terminal jadi saya tidak menghapus ( rm) file secara klasik , tetapi memindahkannya ke trash (yaitu Nautilus Move to Trash behaviour).

Jika ada perintah seperti itu, saya juga akan tertarik untuk mengetahui apa itu.

Rasmus
sumber
2
Lihatlah jawaban ini .
Peachy
2
Juga sumber yang bagus di sini: webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
Rinzwind

Jawaban:

105

Anda dapat menggunakan gvfs-trashperintah dari paket gvfs-binyang diinstal secara default di Ubuntu.

Pindahkan file ke tempat sampah:

gvfs-trash filename

Lihat isi tempat sampah:

gvfs-ls trash://

Kosongkansampahnya:

gvfs-trash --empty
Radu Rădeanu
sumber
Kunjungi juga pertanyaan gvfs saya .
Pandya
Ini adalah jawaban paling sederhana bagi saya yang bekerja. Terima kasih.
Teody C. Seguin
10
Menurutnya man gvfs-trashsudah usang dalam mendukung gio trash, lihat man gio.
pbhj
67

Instal trash-cliInstal trash-cli -sudo apt-get install trash-cli

Masukkan file ke tempat sampah dengan: trash file1 file2

Daftar file di tempat sampah: trash-list

Sampah kosong dengan: trash-empty

pengguna55822
sumber
1
Alat itu (terkait Ubuntu) menunjuk ke depan ke spesifikasi tempat sampah . Cukup menarik, tidak yakin seberapa banyak diadopsi, ...
Frank Nocke
Setelah instalasi, saya menjalankan perintah dan mendapatkan kesalahan: File "/usr/bin/trash-list", line 4, in <module> ImportError: No module named 'trashcli'
Daniel
25

Pada 2017, gvfs-trashtampaknya sudah usang.

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

Anda harus menggunakan gio, secara khusus

gio trash

adalah cara yang disarankan.

Eugen Tverdokhleb
sumber
2
Bisakah Anda menautkan sumber karena gvfs-trashsudah usang dan apa gioitu?
Melebius
1
Sayangnya saya tidak dapat memberikan tautan, tetapi inilah yang saya coba gunakan dengan gvfs-trash di Kubuntu 17.10: pastebin.com/HA4a1pbs
Eugen Tverdokhleb
1
Anda dapat menempelkan contoh di sini di jawaban Anda, itu akan cukup bagi saya bersama dengan nomor versi sistem. Saya menggunakan 16,04 LTS dan gvfs-trashmerupakan satu-satunya pilihan di sini.
Melebius
Alat ini memiliki banyak fitur bagus lainnya. Saya suka infoperintahnya; sepertinya bermanfaat.
Raffi Khatchadourian
4

Memperbarui @Radu Rădeanujawaban. Karena Ubuntu memberitahu saya untuk menggunakan gio...

Jadi, untuk menggunakan sampah some_file(atau folder)

gio trash some_file

Untuk menggunakan tempat sampah, gunakanlah

gio list trash://

Untuk mengosongkan sampah

gio trash --empty
Barmaley
sumber
3

Saya suka cara teknologi rendah yang terbaik. Saya membuat folder .Trdi direktori rumah saya dengan mengetik:

mkdir ~/.Tr

dan alih-alih menggunakan rmuntuk menghapus file, saya memindahkan file-file itu ke ~/.Trdirektori dengan mengetik:

mv fileName ~/.Tr

Ini adalah cara yang efektif dan sederhana untuk menjaga akses ke file yang Anda pikir tidak Anda inginkan dengan manfaat tambahan dalam kasus saya tidak mengacaukan folder sistem, karena tingkat pengetahuan Ubuntu saya cukup rendah dan saya khawatir tentang apa yang mungkin saya lakukan. mengacaukan ketika saya mengacaukan hal-hal sistem. Jika Anda juga level rendah, harap perhatikan bahwa "." dalam nama direktori menjadikannya direktori tersembunyi.

pengguna2981989
sumber
3

Jawaban sebelumnya menyebutkan perintah gio trash, yang sejauh ini baik-baik saja. Namun, pada mesin server, tidak ada yang setara dengan direktori tempat sampah. Saya telah menulis skrip Bash yang melakukan pekerjaan; pada mesin desktop (Ubuntu), ia menggunakan gio trash. (Saya telah menambahkan alias tt='move-to-trash'file definisi alias saya; ttadalah mnemonic untuk "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
Teemu Leisti
sumber
2

Berikut ini adalah versi open source berbasis simpuljs (jika Anda ingin tahu, apa yang terjadi di bawah tenda, atau memerlukan ini dalam proyek), yang juga memiliki dukungan command line (jika Anda senang, jika itu hanya berfungsi.

> trash pictures/beach.jpg
Frank Nocke
sumber
0

Di KDE 4.14.8 saya menggunakan perintah berikut untuk memindahkan file ke tempat sampah (seolah-olah itu dihapus di Dolphin):

kioclient move path_to_file_or_directory_to_be_removed trash:/

Lampiran: Saya menemukan tentang perintah dengan

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