linuxrm命令进行封装为软删除
-
软删除是指文件或文件夹被标记为删除,但并非真正地删除,仍然可以恢复。在Linux系统中,可以通过封装`rm`命令来实现软删除。下面是封装`rm`命令进行软删除的方法:
首先,创建一个新的shell脚本文件,例如`soft_rm.sh`。
在`soft_rm.sh`文件中,使用以下代码:
“`bash
#!/bin/bashTRASH_DIR=”$HOME/.trash” # 设置垃圾箱目录
TIME=$(date “+%Y%m%d%H%M%S”) # 获取当前日期和时间
FILE_PATH=$1 # 获取用户传入的文件路径
FILE_BASENAME=$(basename “$FILE_PATH”) # 获取文件的基本名称# 判断垃圾箱目录是否存在,若不存在则创建
if [ ! -d “$TRASH_DIR” ]; then
mkdir -p $TRASH_DIR
fi# 判断用户传入的是否为一个目录
if [ -d “$FILE_PATH” ]; then
# 如果是目录,则将目录移动到垃圾箱中
mv -r “$FILE_PATH” “$TRASH_DIR/$FILE_BASENAME” # 将目录移动到垃圾箱中
else
# 如果是文件,则将文件移动到垃圾箱中
mv “$FILE_PATH” “$TRASH_DIR/$FILE_BASENAME” # 将文件移动到垃圾箱中
fi# 在垃圾箱中创建一个记录文件,用于存储被软删除的文件的信息
echo “$FILE_PATH,$TRASH_DIR/$FILE_BASENAME,$TIME” >> $TRASH_DIR/.trashinfo
“`保存并退出`soft_rm.sh`文件。
然后,将`soft_rm.sh`文件添加到系统的可执行路径中,例如`/usr/local/bin`。
运行以下命令将`soft_rm.sh`文件添加到可执行路径中:
“`bash
sudo cp soft_rm.sh /usr/local/bin/soft_rm
sudo chmod +x /usr/local/bin/soft_rm
“`现在,您可以使用`soft_rm`命令代替`rm`命令进行软删除。
例如,要软删除一个文件,可以使用以下命令:
“`bash
soft_rm file.txt
“`该文件将被移动到垃圾箱目录`$HOME/.trash`中,并在`.trashinfo`文件中记录软删除的信息。
如果要恢复软删除的文件,可以手动将文件从垃圾箱中移回原始位置。
总结:通过封装`rm`命令为`soft_rm`脚本,可以实现在Linux系统中进行软删除。软删除的文件会被移动到垃圾箱目录并记录相应的信息。这样可以提供文件恢复的机制,增加了文件管理的灵活性和安全性。
2年前 -
封装Linux中的rm命令以实现软删除的功能是一个常见的需求。软删除允许用户删除文件,但是在真正删除文件之前,将其移动到一个特定的目录或者重命名文件以隐藏它们。这样可以提供一种安全的方法来恢复被删除的文件,避免误删除或者对系统重要文件的错误操作。
下面是一种简单的方法来封装rm命令以实现软删除的功能。
1. 创建一个包含软删除文件的目录:首先,创建一个目录来存放所有被软删除的文件。可以选择将目录命名为.trash或者类似的一个隐藏目录。使用命令`mkdir ~/.trash`来创建一个位于用户主目录下的.trash目录。
2. 创建一个脚本文件:接下来,创建一个脚本文件,将其命名为rmtrash并将其放置在/usr/bin或者/usr/local/bin等可执行文件所在的目录中。在脚本文件中,我们将使用mv命令将要删除的文件移动到.trash目录中。
“`
#!/bin/bash# 检查.trash目录是否存在,如果不存在则创建
if [ ! -d ~/.trash ]; then
mkdir ~/.trash
fi# 将每个参数文件逐一移动到.trash目录下
for file in “$@”; do
mv “$file” ~/.trash
echo “文件 $file 已被移到 ~/.trash 目录”
done
“`3. 设定脚本文件的权限:在终端中运行`chmod +x /usr/bin/rmtrash`来将脚本文件赋予执行权限。
现在,当用户使用rm命令删除文件时,实际上使用的是我们的软删除命令rmtrash。rmtrash会将文件移动到.trash目录中,而不是直接永久删除它们。 用户只需运行像rm一样的命令,例如`rmtrash file1.txt file2.txt`,而不需要担心无法找回已删除的文件。
当需要恢复被软删除的文件时,用户可以通过在.trash目录中查找并移回它们来实现。用户可以使用命令`mv ~/.trash/file.txt ~/Documents`将软删除的文件移动到指定的位置。
需要注意的是,这种封装rm命令的方法仅提供了一个基本的软删除功能。如果需要更强大的恢复功能,可能需要考虑使用专门的软件工具或者备份与恢复系统来实现。
2年前 -
封装rm命令来实现软删除功能,可以通过编写一个脚本来实现。下面是一个示例脚本,可以将其保存为一个独立的文件,比如”srm”:
“`shell
#!/bin/bashtrash_dir=”$HOME/.trash” # 设置垃圾箱目录,可以根据实际情况进行修改
# 创建垃圾箱目录,如果不存在
if [[ ! -d “$trash_dir” ]]; then
mkdir -p “$trash_dir”
fi# 处理命令行参数
for file in “$@”; do
if [[ -e “$file” ]]; then
# 生成唯一的文件名,以避免重名文件的覆盖
timestamp=$(date +%s)
filename=$(basename “$file”)
trash_file=”$trash_dir/$filename.$timestamp”# 移动文件到垃圾箱
mv “$file” “$trash_file”echo “文件 ‘$file’ 已经被软删除,移动到垃圾箱中。”
else
echo “文件 ‘$file’ 不存在。”
fi
done
“`脚本中,首先定义了垃圾箱目录的位置,可以根据实际需要修改。然后,通过循环处理命令行参数,对每个文件进行软删除操作。如果文件存在,脚本会生成一个唯一的文件名(基于当前时间戳),然后将文件移动到指定的垃圾箱目录中。移动完成后,脚本会打印相应的提示信息。
为了使用封装的软删除命令,可以将该脚本放入系统的可执行路径目录(例如 `/usr/local/bin/`),并为其设置合适的执行权限(例如 `chmod +x srm`)。这样,就可以在命令行中使用`srm`命令来软删除文件了。例如:
“`
$ srm myfile.txt
文件 ‘myfile.txt’ 已经被软删除,移动到垃圾箱中。
“`需要注意的是,这个脚本仅仅是将文件移动到垃圾箱目录中,而并非真正的删除文件。因此,垃圾箱目录下的文件仍然占用磁盘空间,需要定期清理来释放空间。根据需要,可以编写另外一个脚本来清理垃圾箱目录中的文件,以及提供恢复已删除文件的功能。
2年前