linux改写rm命令

fiy 其他 74

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Linux系统中的rm命令用于删除文件或文件夹。如果您想要改写rm命令,可以考虑增加一些安全性的措施,以防止误删文件或者误删重要的系统文件。

    下面是一个改写的示例:

    #!/bin/bash

    # 定义rm命令的备份目录
    BACKUP_DIR=”/tmp/backup”

    # 备份要删除的文件或文件夹到备份目录中
    function backup() {
    # 检查备份目录是否存在
    if [ ! -d “$BACKUP_DIR” ]; then
    mkdir $BACKUP_DIR
    fi

    # 备份文件或文件夹
    cp -r $1 $BACKUP_DIR
    }

    # 删除文件或文件夹
    function rm() {
    # 检查是否为文件夹
    if [ -d “$1” ]; then
    # 备份文件夹
    backup $1

    # 删除文件夹及其内容
    rm -rf $1
    else
    # 备份文件
    backup $1

    # 删除文件
    /bin/rm $1
    fi
    }

    # 在rm命令之前确认用户的意图
    function confirm() {
    read -p “Are you sure you want to delete $1? (y/n) ” choice
    case “$choice” in
    y|Y ) rm $1;;
    n|N ) return;;
    * ) echo “Invalid input. Please choose y or n.”;;
    esac
    }

    # 主程序
    for arg in “$@”; do
    confirm $arg
    done

    上述代码中,我们定义了一个新的rm函数。在这个函数中,我们先进行文件或文件夹的备份操作,然后再进行删除操作。备份操作将要删除的文件或文件夹复制到一个指定的备份目录中。如果删除过程中出现问题,我们可以通过备份目录中的文件恢复数据。

    在主程序中,我们使用for循环遍历用户输入的参数,然后调用confirm函数来确认用户是否确认删除操作。用户可以选择yes或no来进行确认。

    需要注意的是,这只是一个示例代码,您可以根据自己的需求来改写rm命令。改写rm命令时需要慎重,务必确保修改的代码符合自己的需求,并进行充分的测试。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Linux下的rm命令是用来删除文件和目录的,但是它在使用时非常危险,因为一旦删除后就无法恢复。为了防止误操作造成不可挽回的损失,可以对rm命令进行改写。下面是改写rm命令的几种方法:

    1. 增加确认提示:可以通过修改命令别名或创建一个shell脚本来实现。例如,创建一个名为rm的shell脚本,在其中使用read命令提示用户是否确认删除,只有在用户输入”y”时才执行删除操作。

    “`shell
    #!/bin/bash
    read -p “Are you sure you want to delete? (y/n)” choice
    if [ “$choice” == “y” ]; then
    /bin/rm “$@”
    fi
    “`

    将上面的脚本保存为rm,并将其放置在PATH环境变量所包含的目录下,同时修改其权限以确保其可执行。

    2. 添加回收站功能:可以通过创建一个垃圾箱目录,将需要删除的文件移动到该目录下,而不是直接删除。这样可以在需要的时候从回收站恢复被删除的文件。可以通过修改命令别名或创建一个shell脚本来实现。

    “`shell
    #!/bin/bash
    trashDir=”$HOME/.trash”
    if [ ! -d “$trashDir” ]; then
    mkdir “$trashDir”
    fi

    for file in “$@”; do
    mv “$file” “$trashDir”
    done
    “`

    将上面的脚本保存为rm,并将其放置在PATH环境变量所包含的目录下,同时修改其权限以确保其可执行。需要注意的是,该方法只是将文件移动到回收站目录,并不会真正删除文件。

    3. 添加日志记录:可以通过修改命令别名或创建一个shell脚本,在删除文件之前打印日志记录。日志记录可以包括删除的文件名、删除的时间等信息。这样可以方便用户在需要的时候查阅删除的记录。

    “`shell
    #!/bin/bash
    logFile=”$HOME/rm.log”

    for file in “$@”; do
    echo “Deleted file: $file at $(date)” >> “$logFile”
    done

    /bin/rm “$@”
    “`

    将上面的脚本保存为rm,并将其放置在PATH环境变量所包含的目录下,同时修改其权限以确保其可执行。日志记录将保存在指定的log文件中。

    4. 操作权限控制:可以通过修改rm命令的权限,只允许特定用户或用户组执行删除操作。这样可以避免普通用户误操作导致重要文件的删除。

    “`shell
    $ sudo chown root:root /bin/rm
    $ sudo chmod 750 /bin/rm
    $ sudo chmod +s /bin/rm
    “`

    上述命令将rm命令的所有权修改为root用户,同时设置权限为750,只有root用户和root组成员才可执行删除操作。

    5. 使用trash-cli工具:trash-cli是一个命令行工具,它提供了类似于回收站的功能。可以使用该工具代替rm命令来删除文件和目录。该工具自动将删除的文件移动到垃圾箱目录,可以通过指定选项来恢复被删除的文件。

    以上是几种改写rm命令的方法,可以根据实际需求选择合适的方法来增加删除操作的安全性和可恢复性。无论使用哪种方法,都建议在执行删除操作前进行确认,避免误操作导致不可挽回的损失。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux系统中,`rm`命令是用于删除文件或目录的。如果你想要改写`rm`命令,可以通过创建一个脚本来实现,这个脚本可以替代原始的`rm`命令,并添加额外的功能、安全性或者确认机制。

    下面是一种可能的实现方式,你可以根据自己的需求进行调整和修改。

    ## Step 1: 创建脚本文件
    首先,使用任意文本编辑器创建一个文件,文件名可以是 `myrm` 或者任何你喜欢的名字。确保文件的扩展名是 `.sh`,表明这是一个shell脚本。

    命令:
    “`
    touch myrm.sh
    “`

    ## Step 2: 添加脚本内容
    将下面的代码复制到 `myrm.sh` 文件中:

    “`bash
    #!/bin/bash

    # 记录删除文件的日志
    log_file=”/var/log/myrm.log”

    # 判断是否有输入参数
    if [ $# -eq 0 ]; then
    echo “Error: No files specified.”
    exit 1
    fi

    # 迭代所有的参数文件
    for file in “$@”
    do
    # 判断文件是否存在
    if [ -e “$file” ]; then
    # 提示用户确认删除
    read -p “Are you sure you want to delete $file? (y/n): ” response
    case $response in
    [yY])
    # 删除文件
    rm -rf “$file”
    echo “Deleted $file” >> $log_file
    ;;
    *)
    echo “Abort delete for $file”
    ;;
    esac
    else
    echo “$file does not exist.”
    fi
    done
    “`

    上述脚本的基本思路是,对传入的每个文件进行询问确认删除操作。如果用户回答“是”,则执行`rm -rf`命令删除文件,并将操作记录到日志文件中。如果用户回答“否”或者其他字符,则中止删除操作。

    ## Step 3: 添加执行权限
    将脚本文件设置为可执行。

    命令:
    “`
    chmod +x myrm.sh
    “`

    ## Step 4: 将脚本添加到系统的可执行路径中
    将`myrm.sh`脚本添加到系统的可执行路径中,这样就可以直接在命令行中使用 `myrm` 命令了。

    命令:
    “`
    sudo cp myrm.sh /usr/local/bin/myrm
    “`

    ## Step 5: 测试
    现在,你可以在命令行中使用 `myrm` 命令来代替原始的 `rm` 命令了。

    命令:
    “`
    myrm file1.txt file2.txt
    “`

    根据脚本的设置,对于每个文件,脚本会提示用户确认是否删除,并记录删除操作到日志文件`/var/log/myrm.log`中。

    希望这个例子能够帮助你理解如何改写`rm`命令,并在其中添加一些额外的功能。当然,你可以根据自己的需求对脚本进行进一步的定制和扩展。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部