用于通过终端将文件移动到废纸篓的命令

我想知道我是否可以在终端中发出命令,所以我不会经常删除( rm )文件,而是将其移至垃圾箱(即Nautilus Move to Trash行为)。

如果有这样的命令,我也有兴趣知道它是什么。

您可以使用gvfs-trash gvfs-bin gvfs-trash命令,该命令在Ubuntu中默认安装。

将文件移至废纸篓:

 gvfs-trash filename 

查看垃圾箱的内容:

 gvfs-ls trash:// 

清空垃圾:

 gvfs-trash --empty 

安装trash-cli 安装trash-clisudo apt-get install trash-cli

将文件放入垃圾箱: trash file1 file2

列出垃圾箱中的文件: trash-list

空垃圾: trash-empty

截至2017年, gvfs-trash似乎已被弃用。

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

你应该特别使用gio

 gio trash 

是推荐的方式。

我最喜欢低科技的方式。 我在我的主目录中输入了一个文件夹.Tr

 mkdir ~/.Tr 

而不是使用rm删除文件,我通过键入以下~/.Tr将这些文件移动到~/.Tr目录:

 mv fileName ~/.Tr 

这是一种有效且简单的方法,可以保持对您认为不需要的文件的访问,并且在不弄乱系统文件夹的情况下可以获得额外的好处,因为我的Ubuntu知识水平相当低,我担心我可能会遇到什么问题。当我弄乱系统的东西时搞砸了。 如果你也是低级请注意“。” 在目录名称中使其成为隐藏目录。

这是一个基于开源节点的基于nodejs的版本 (如果你想知道,在幕后发生了什么,或者在项目中需要这个),它也有命令行支持 (如果你很高兴,如果它只是工作。

 > trash pictures/beach.jpg 

之前的回答提到了命令gio trash ,尽管它很好。 但是,在服务器计算机上,没有相应的垃圾目录。 我写了一个Bash脚本来完成这项工作; 在(Ubuntu)台式机上,它使用gio trash 。 (我已将alias tt='move-to-trash'到我的别名定义文件中; tt是“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