用于通过终端将文件移动到废纸篓的命令
我想知道我是否可以在终端中发出命令,所以我不会经常删除( rm
)文件,而是将其移至垃圾箱(即Nautilus Move to Trash行为)。
如果有这样的命令,我也有兴趣知道它是什么。
您可以使用gvfs-trash
gvfs-bin
gvfs-trash
命令,该命令在Ubuntu中默认安装。
将文件移至废纸篓:
gvfs-trash filename
查看垃圾箱的内容:
gvfs-ls trash://
清空垃圾:
gvfs-trash --empty
安装trash-cli – sudo 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