给OIer节约5s的快速创建子目录的程序

每次考试考完的时候教练都会要求建立子目录,然后又会在这个时候浪费我们生命中美好的5s,这个时候,这个轮子孕育而生,有了它,你就比其他人多拥有了5s的美好时光~

用法:在选手文件夹下输入Mkdir回车,即可为当前文件夹的所有cpp文件创建一个文件夹,同时把文件复制进去

方法: 复制以下内容到一个叫做"Mkdir"的文件里
宣传一波个人博客

#!/bin/bash
if [[ "$1" == "-h" ]]
then
    echo "---------------------------------------------------------------------------------"
    echo
    echo "-h  --help         输出此帮助界面"
    echo "-a  --ask          按询问模式执行"
    echo "-q  --quiet        安静的执行程序"
    echo "-c  --copy         仅仅将文件复制进文件夹"
    echo "文件名             shell默认跳出参数 并将后面的变量不创建文件夹(且删除此文件目录)"
    echo
    echo "例: Mkdir a.cpp b.cpp"
    echo
    echo "这将不会为a.cpp b.cpp创建目录,且如果也会删掉和文件 询问模式除外"
    echo -e "\033[;31m默认复制并替换文件 \033[;0m"
    echo
    echo "---------------------------------------------------------------------------------"
    exit 0
fi
ask=0
quiet=0
copy=0
while getopts ayqc opt
do
    case "$opt" in
        a)ask=1 ;;
        q)quiet=1 ;;
        c)copy=1 ;;
        *) echo "未知的参数!"  ;;
    esac
done
if echo "$1" | grep "-" >/dev/null 2>&1
then
    shift
fi
if [ $ask -eq 1 ]
then
    echo "以询问模式执行..."
fi
if [ $copy -eq 1 ]
then
    echo "以copy模式执行..."
fi
for file in `ls *.cpp`
do
    pre=`echo "$file" | cut -d '.' -f1`
    if [ $# -ne 0 ]
    then
        for list in "$@"
        do
            if [[ $list = $file ]]
                #if  echo "$file" | grep "$*" >/dev/null 2>&1 
            then
                if [ $ask -eq 1 ]
                then
                    if [ -d $pre ]
                    then
                        echo -e "\033[;33m 找到 $pre 文件夹,是否删除?\033[0m"
                        read -l opt
                        if [[ $opt = 'y' ]] || [[ $opt = 'Y' ]]
                        then
                            echo -e "\033[;31m 删除 $pre 文件夹.\033[0m"
                            echo -e "\033[;31m 删除 $file 文件.\033[0m"
                            echo
                            rm -rf $pre
                            rm $file
                        else
                            echo -e "\033[;32m 保留原文件夹\033[0m"
                        fi
                    fi
                else
                    echo -e "\033[;31m 删除 $pre 文件夹.\033[0m"
                    echo -e "\033[;31m 删除 $file 文件.\033[0m"
                    echo
                    rm -rf $pre
                    rm $file
                fi
                continue 2
            fi
        done
    fi
    if [ $copy -eq 1 ]
    then
        echo -e "\033[;33m 复制 $file 进入 $pre 文件夹...\033[0m"
        cp $file $pre
        continue
    fi
    if [ $quiet -ne 1 ]
    then
        echo -e "\033[;32m 正在创建 '$pre' 文件夹 ... \033[0m"
    fi
    if [ -d "$pre" ]
    then 
        if [ $quiet -ne 1 ]
        then
            echo -e "\033[;31m $pre 文件夹已经存在 \033[0m"
        fi
    else
        if [ $ask -eq 1 ]
        then
            echo -e "\033[;33m 是否创建 $pre 文件夹?(y/n)\033[0m"
            read  -l opt
            if [[ $opt == y ]]|| [[ $opt = 'Y' ]]
            then
                mkdir "$pre"
            else
                echo -e "\033[;33m 跳过此文件\033[0m"
                continue
            fi
        else
            mkdir "$pre"
        fi
        if [ $quiet -ne 1 ]
        then
            echo -e "\033[;37m $pre 文件夹创建成功 \033[0m"
        fi
    fi
    if [ $quiet -ne 1 ]
    then
        echo -e "\033[;32m 正在复制 $file$pre 文件夹 ... \033[0m"
    fi
    if [ -f "$pre/$file" ]
    then
        if [ $quiet -ne 1 ]
        then
            echo -e "\033[;31m 文件 $file 已经存在! \033[0m"
        fi
        if [ $ask -eq 1 ]
        then
            echo -e "\033[;33m 是否强制替换?(y/n) \033[0m"
            read opt
            if [[ $opt == y ]] || [[ $opt = 'Y' ]]
            then
                cp "$file" "$pre"
            fi
        elif [ $quiet -ne 1 ]
        then
            echo -e "\033[;32m 强制替换文件 \033[0m"
        fi
        cp "$file" "$pre"
    else 
        cp "$file" "$pre"
    fi
    echo
done
echo -e "\033[;31m 程序执行结束\033[0m"

然后

sudo chmod 777 Mkdir
sudo mv Mkdir /bin
Mkdir -h

效果图:

Visual Studio Code (VSCode) 是一个非常流行的开源代码编辑器,因其高度可扩展性和丰富的插件生态系统而受到开发者喜爱。对于面向算法和竞赛编程 (OI/ACM) 的开发者来说,有一些插件可以帮助提升编写、测试和优化代码的效率。以下是几个推荐的 VSCode 插件,它们可以为 OIer 提供支持: 1. **C/C++**: - C/C++ Extension Pack:包含了基本的C/C++语言支持,以及调试工具。 - Clangd Language Server:提供自动完成、错误检测等功能,适用于竞赛中的高效编程。 2. **代码高亮和语法提示**: - C/C++ Intellisense:增强的语法高亮和代码提示。 - C++ LSP (Language Server Protocol) Extensions:例如, "C++ Enhanced" 提供更全面的代码提示。 3. **代码片段和模板**: - Live Share C++:支持多人协作,可以分享代码片段和模板。 - C/C++ Snippets:自定义代码片段,快速输入常见代码模式。 4. **调试**: - Debugger for GDB/LLDB:如果你使用GDB或LLDB作为调试器,这个插件必不可少。 5. **代码格式化**: - C/C++ Prettier Code Formatter:自动格式化代码风格,保持一致性。 6. **竞赛管理**: - Competitive Programming Tools:提供题目管理、提交、测试等功能,帮助组织和跟踪竞赛进度。 7. **版本控制**: - GitLens:强大的Git功能,方便版本管理和代码比较。 8. **Markdown**: - Markdown All in One:编写文档时常用的工具,因为算法题解经常用到Markdown。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值