脚本 订阅
脚本, 读音为jiǎo běn,汉语词语,指表演戏剧、拍摄电影等所依据的底本或书稿的底本。 [1] 展开全文
脚本, 读音为jiǎo běn,汉语词语,指表演戏剧、拍摄电影等所依据的底本或书稿的底本。 [1]
信息
外文名
script
拼    音
jiǎo běn
中文名
脚本
脚本解释
收起全文
精华内容
下载资源
问答
  • Linux中编写Shell脚本
    万次阅读 多人点赞
    更多相关内容
  • Python脚本100例

    2018-11-17 21:51:57
    Python脚本实战编写100例,有简单到复杂,简单易懂好学,实用。一看就会,易学就懂。
  • Nginx编译配置脚本最终篇 - configure脚本

    千次阅读 多人点赞 2021-06-07 20:11:04
    Nginx编译配置脚本最终篇 - configure脚本1、相关文章2、前言3、configure脚本详解3.1、设置LC_ALL宏3.2、调用auto/options脚本3.3、调用auto/init脚本3.4、调用auto/sources脚本3.5、objs/目录相关内容3.6、写入NGX...

    1、相关文章

    由于学习本文需要Nginx源码及搭建相关的编译环境,且本文与前面的文章有先后呼应关系,所以建议大家按以下文章顺序阅读

    2、前言

    通过前面的10篇文章,我们了解了Nginx源代码auto/目录下的各个脚本的作用,这篇文章我们将介绍configure脚本,看看它是如何通过使用auto/目录下的各个脚本来完成一次完整的配置的。本篇也是介绍Nginx编译配置脚本的最后一篇文章。

    3、configure脚本详解

    3.1、设置LC_ALL宏

    这里设置LC_ALL是为了清除所有本地化的设置,让命令能够正确运行。具体的大家可以参考一下这篇文章《LC_ALL=C的含义
    代码如下:

    
    LC_ALL=C
    export LC_ALL
    
    

    3.2、调用auto/options脚本

    本节对应这篇文章《Nginx配置编译脚本篇(1)- 解析配置选项脚本auto/options
    通过调用auto/options脚本来对初始化一些配置选项,并对我们传入脚本的参数进行处理
    代码如下:

    
    . auto/options
    
    

    3.3、调用auto/init脚本

    本节对应这篇文章《Nginx编译配置脚本篇(2)- Makefile初始化脚本auto/init
    通过调用auto/init脚本来初始化部分与Makefile相关的变量,生成源代码根目录的Makefile文件并往其中写入部分信息
    代码如下:

    
    . auto/init
    
    

    3.4、调用auto/sources脚本

    本节对应这篇文章《Nginx编译配置脚本篇(3)- 源码相关变量脚本auto/sources
    通过调用auto/sources脚本来设置与objs/Makefile文件的源码部分相关的一些变量,这些变量将在后续会进行转换写入到objs/Makefile文件中
    代码如下:

    
    . auto/sources
    
    

    3.5、objs/目录相关内容

    从前面几个脚本中我们可以知道,NGX_OBJS的默认值为objsNGX_AUTO_HEADERS_H的默认值为objs/ngx_auto_headers.hNGX_AUTOCONF_ERR的默认值为objs/autoconf.err,则下面的代码的作用就是创建objs/目录,然后在该目录下生成ngx_auto_headers.h(存放部分开关宏的头文件)和autoconf.err(配置错误信息的输出文件)文件,并往ngx_auto_headers.h写入一个宏
    代码如下:

    
    test -d $NGX_OBJS || mkdir -p $NGX_OBJS
    
    echo > $NGX_AUTO_HEADERS_H
    echo > $NGX_AUTOCONF_ERR
    
    echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $NGX_AUTO_CONFIG_H
    
    

    3.6、写入NGX_DEBUG宏到objs/ngx_auto_headers.h文件

    本节对应这篇文章《Nginx编译配置脚本篇(4)- 工具型脚本系列
    这里是根据NGX_DEBUG变量的值来选择是否写入NGX_DEBUG宏到objs/ngx_auto_headers.h文件中,NGX_DEBUG这个变量是在auto/options脚本里设置的,默认为NO
    代码如下:

    
    if [ $NGX_DEBUG = YES ]; then
        have=NGX_DEBUG . auto/have
    fi
    
    

    3.7、设置与系统相关的几个变量

    NGX_PLATFORM这个变量是在auto/options脚本里设置的,默认为空。可以看到当NGX_PLATFORM为空时,通过使用uname命令来设置NGX_SYSTEMNGX_RELEASENGX_MACHINE的值,最后通过这几个参数来设置NGX_PLATFORM,该值在后面会被多次用到,基本都是判断一下当前系统是不是Windows,然后执行一些特殊配置之类的操作
    代码如下:

    
    if test -z "$NGX_PLATFORM"; then
        echo "checking for OS"
    
        NGX_SYSTEM=`uname -s 2>/dev/null`
        NGX_RELEASE=`uname -r 2>/dev/null`
        NGX_MACHINE=`uname -m 2>/dev/null`
    
        echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE"
    
        NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE";
    
        case "$NGX_SYSTEM" in
            MINGW32_* | MINGW64_* | MSYS_*)
                NGX_PLATFORM=win32
            ;;
        esac
    
    else
        echo "building for $NGX_PLATFORM"
        NGX_SYSTEM=$NGX_PLATFORM
    fi
    
    

    3.8、调用auto/cc/conf脚本

    本节对应这篇文章《Nginx编译配置脚本篇(5)- 编译器相关脚本
    这里通过调用auto/cc/conf脚本来设置编译器相关的信息
    代码如下:

    
    . auto/cc/conf
    
    

    3.9、调用auto/headers脚本

    本节对应这篇文章《Nginx编译配置脚本篇(4)- 工具型脚本系列
    代码如下:

    
    if [ "$NGX_PLATFORM" != win32 ]; then
        . auto/headers
    fi
    
    

    auto/headers这个脚本之前没有讲过,里面的内容如下,可以看到里面又调用了auto/include脚本

    ngx_include="unistd.h";      . auto/include
    ngx_include="inttypes.h";    . auto/include
    ngx_include="limits.h";      . auto/include
    ngx_include="sys/filio.h";   . auto/include
    ngx_include="sys/param.h";   . auto/include
    ngx_include="sys/mount.h";   . auto/include
    ngx_include="sys/statvfs.h"; . auto/include
    ngx_include="crypt.h";       . auto/include
    

    auto/include脚本的内容如下:

    echo $ngx_n "checking for $ngx_include ...$ngx_c"
    
    cat << END >> $NGX_AUTOCONF_ERR
    
    ----------------------------------------
    checking for $ngx_include
    
    END
    
    
    ngx_found=no
    
    cat << END > $NGX_AUTOTEST.c
    
    $NGX_INCLUDE_SYS_PARAM_H
    #include <$ngx_include>
    
    int main(void) {
        return 0;
    }
    
    END
    
    
    ngx_test="$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c"
    
    eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
    
    if [ -x $NGX_AUTOTEST ]; then
    
        ngx_found=yes
    
        echo " found"
    
        ngx_name=`echo $ngx_include \
                  | tr abcdefghijklmnopqrstuvwxyz/. ABCDEFGHIJKLMNOPQRSTUVWXYZ__`
    
    
        have=NGX_HAVE_$ngx_name . auto/have_headers
    
        eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'"
    
    else
        echo " not found"
    
        echo "----------"    >> $NGX_AUTOCONF_ERR
        cat $NGX_AUTOTEST.c  >> $NGX_AUTOCONF_ERR
        echo "----------"    >> $NGX_AUTOCONF_ERR
        echo $ngx_test       >> $NGX_AUTOCONF_ERR
        echo "----------"    >> $NGX_AUTOCONF_ERR
    fi
    
    rm -rf $NGX_AUTOTEST*
    

    可以看到这个脚本和auto/feature比较像,也是生成一个测试文件,只不过这个比较简单一点,只是测试当前环境是否可以使用ngx_include这个变量对应头文件,不行的话也是往objs/autoconf.err写入错误信息,行的话就使用auto/have_headers脚本往objs/ngx_auto_headers.h文件中写入相关的宏

    3.10、调用auto/os/conf脚本

    本节对应这篇文章《Nginx编译配置脚本篇(6)- 系统环境相关脚本
    这里通过调用auto/os/conf脚本来设置系统环境相关的信息
    代码如下:

    
    . auto/os/conf
    
    

    3.11、调用auto/unix脚本

    本节对应这篇文章《Nginx编译配置脚本篇(7)- UNIX环境脚本auto/unix
    这里通过调用auto/unix脚本来配置UNIX环境下的一些信息,下面的判断语句也是表明了在Windows下配置是不会调用该脚本的
    代码如下:

    
    if [ "$NGX_PLATFORM" != win32 ]; then
        . auto/unix
    fi
    
    

    3.12、调用auto/threads脚本

    代码如下:

    
    . auto/threads
    
    

    这里调用auto/threads脚本来设置与多线程相关的信息,auto/threads内容如下:

    if [ $USE_THREADS = YES ]; then
    
        if [ "$NGX_PLATFORM" = win32 ]; then
            cat << END
    
    $0: --with-threads is not supported on Windows
    
    END
            exit 1
        fi
    
        have=NGX_THREADS . auto/have
        CORE_DEPS="$CORE_DEPS $THREAD_POOL_DEPS"
        CORE_SRCS="$CORE_SRCS $THREAD_POOL_SRCS"
        CORE_LIBS="$CORE_LIBS -lpthread"
        NGX_LIBPTHREAD="-lpthread"
    fi
    

    可以看到USE_THREADS的值必须是YES才会生效,并且Windows下不允许设置这个。里面做的工作比较简单,将相关的宏、动态库信息添加到对应的变量中而已

    3.13、调用auto/modules脚本

    本节对应这篇文章《Nginx编译配置脚本篇(8)- 模块配置脚本auto/modules
    这里通过调用auto/modules脚本来设置与模块相关的内容
    代码如下:

    
    . auto/modules
    
    

    3.14、调用auto/lib/conf脚本

    本节对应这篇文章《Nginx编译配置脚本篇(9)- 动态库配置脚本auto/lib/conf
    这里通过调用auto/lib/conf脚本来设置与动态库相关的内容
    代码如下:

    
    . auto/lib/conf
    
    

    3.15、设置NGX_PREFIX相关内容

    这里是设置NGX_PREFIX变量相关的内容,我们知道这个变量存储的值是我们最后Nginx的安装路径,且这个值默认为空,当它为空时就在这里给他设置一个默认值/usr/local/nginx,然后将NGX_PREFIX写入objs/ngx_auto_config.h文件中,宏的内容就是NGX_PREFIX变量对应的值,也就是安装路径
    代码如下:

    case ".$NGX_PREFIX" in
        .)
            NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx}
            have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define
        ;;
    
        .!)
            NGX_PREFIX=
        ;;
    
        *)
            have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define
        ;;
    esac
    

    3.16、往objs/ngx_auto_config.h文件中写入一系列路径相关的宏

    可以看到这里往objs/ngx_auto_config.h写入了各个路径相关的宏,这些变量的值都是在前面设置的
    代码如下:

    if [ ".$NGX_CONF_PREFIX" != "." ]; then
        have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define
    fi
    
    have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define
    have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
    have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
    have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define
    have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define
    
    have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define
    have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
    . auto/define
    have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\""
    . auto/define
    have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\""
    . auto/define
    have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\""
    . auto/define
    have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\""
    . auto/define
    

    3.17、设置与最终生成的Makefile相关的内容

    本节对应这篇文章《Nginx编译配置脚本篇(10)- Makefile相关脚本
    这里通过调用auto/makeauto/lib/makeauto/install这三个脚本来补充Makefileobjs/Makefile里面的内容(因为这两个文件前面已经生成了,这里就是往里面增加内容来使其更加完整)
    代码如下:

    
    . auto/make
    . auto/lib/make
    . auto/install
    
    

    3.18、一些其它的配置

    这部分内容比较简单,没什么可讲的,auto/stubs脚本就是写两个宏而已,auto/summary里面就是输出一些编译信息而已,有兴趣的读者可以自行去看一下这两个脚本的内容
    代码如下:

    
    . auto/stubs
    
    have=NGX_USER value="\"$NGX_USER\"" . auto/define
    have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define
    
    if [ ".$NGX_BUILD" != "." ]; then
        have=NGX_BUILD value="\"$NGX_BUILD\"" . auto/define
    fi
    
    . auto/summary
    
    

    4、总结

    关于Nginx编译配置脚本的内容到这里也就全部讲完了,全部看完之后就会发现其实里面并没有多么复杂的设计,可能最难的就是那几个sed相关的正则了吧。从这些脚本中我们可以学习到makeShell相关的一些知识,虽然对于开发来说这些可能确实是用处不大,但是秉着知其所以然的理念了解一下这些知识也是挺不错的。

    最后,如果大佬们觉得我写的这些文章对你们有帮助的话,可以关注一下我或者我的专栏,以后会有更多有价值的文章输出的。

    展开全文
  • 一个没有接触过脚本开发的人如何开发一个简单而又实用的油猴脚本? 本文分为几个要点:油猴的介绍安装,脚本需求分析(重点),代码更迭,最终代码。

    📢博客主页:https://blog.csdn.net/mukes
    📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!
    📢本文由 mukes 原创,首发于 csdn


    前言

    之所以开发这个插件,是因为昨天在知乎看了一篇文章:为什么CSDN上很少人会去给文章点赞?,我引用一下其中一个答主的回答:

    只有我自己写博客了,我才发发现这个问题,阅读几百上千,评论0,点赞 0 。可能是点赞的按钮不明显,我说说我自己看csdn博客的情况:程序遇到问题,网上查一下,按csdn的博文操作,没效果,关了继续查,有效果,继续工作。就这样了,很少去点赞,就算查了非常久的问题,结果发现在某个博主那里得到解决,也会留个评论吐槽顺便支持下博主,还是不会点赞。

    这情况和我本人差不多,每次遇到问题,有时要看好几篇博文才能解决问题,而这几篇博文中恰好只有一篇才是最有价值的,也就是能解决我的问题的那篇,但是解决问题总不能白嫖吧?
    至少点个赞或者留个评论如“博主666”之类的。
    但是呢查文章多了发现写评论是真的浪费时间,于是我想,不如我把我一些评论事先写好,遇到对我有帮助的博文再一键点赞评论,说干就干,于是花了一点点时间就写好了这个脚本。


    开发脚本之前的准备工作

    1.什么是油猴(Tampermonkey )

    首先,油猴油猴脚本有什么区别?
    Tampermonkey 就是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox 等等。你安装后你的浏览器不会发生任何变动,直到你开始安装一种叫做油猴脚本(用户脚本)的东西。

    油猴脚本一般指用户脚本(User Script),ta 是一段 Javascript 代码,它们能够优化您的网页浏览体验。一般有包含但不限于以下几种功能:

    • 能为网站添加新的功能,比如本篇博文所介绍的csdn 手动一键点赞评论脚本。
    • 能使网站的界面更加易用,比如一些改变网站样式、排版的脚本等。
    • 能隐藏网站上烦人的部分内容,比如一些去广告的脚本。

    博主日常用的比较多的油猴脚本网站:https://greasyfork.org/zh-CN/


    2.安装油猴(Tampermonkey )

    油猴官方下载地址:http://www.tampermonkey.net/
    在这里插入图片描述
    点进去你会发现上面有各个浏览器的选项;而下面则是下载地址,油猴扩展有两个版本,一个 stable 版本,一个 beta 版本,顾名思义,一个是稳定版,一个是测试版。下载稳定版就好了。

    油猴支持的浏览器有 Chrome, Microsoft Edge, Safari, Opera Next, Firefox,和 UC 浏览器等等,各大主流浏览器几乎都支持了。


    3.新建一个油猴脚本

    安装好油猴后,在浏览器工具栏上点击油猴添加新脚本
    在这里插入图片描述

    接着跳转到脚本编写界面
    在这里插入图片描述

    图里的代码头是自带的,叫做元数据。每个用户脚本都含有一段元数据,用来向 Tampermonkey 描述这个脚本自身的信息:脚本名,作者,描述,执行规则等等

    // ==UserScript==
    // @name         New Userscript
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        http://*/*
    // @grant        none
    // ==/UserScript==
    

    我粗略解释一下

    // ==UserScript==
    // @name         这里是你的编写的油猴脚本的名字
    // @namespace    这个是命名空间;用来区分名称相同但是作者不同的用户脚本,一般都是写作者的个人网址,没有也可以写你的博客地址
    // @version      0.1  这个是版本号
    // @description  这个是功能描述,描述你的这个脚本是用来干嘛的
    // @author       这个是作者的名字,比如我:mukes
    // @match        这个是该脚本匹配的网址,支持通配符匹配
    // @include		 这个也是该脚本匹配的网址,支持通配符匹配
    // @exclude		 这个和 iclude 配合使用,排除匹配到的网址,优先于 include
    // @grant        none 
    // ==/UserScript==
    

    match 和 include 是有一点区别的,区别在这?match更严格一点,它对 * 角色的含义设定了更严格的规则,详情点击这里

    关于元数据更详细介绍:点击这里 或者 点击官方博客介绍

    如果你不会 不想自己写一个脚本的话,那你可以去 油猴脚本网站 搜索你需要的脚本。


    脚本需求分析迭代过程

    我不是做好需求分析再写代码的,因为当时脑子里面只有一个朦胧的概念而已,我就打算边写边实践边改代码。

    v0.1.0版本
    一开始的插件是一点开博文就自动点赞和评论
    然后我发现我打开自己的博文也会点赞评论…我去,不行,得改( ̄. ̄)


    v0.1.0版本
    在脚本文件头加了排除自动点赞评论自己博文的一行代码

    // @exclude      https://blog.csdn.net/mukes/article/details/*
    

    刷着刷着博文,我发现一刷新页面又会自动评论Σ( ° △ °|||)︴,那我刷新几次岂不是就会评论几次?不行,得改( ̄▽ ̄)"


    v0.3.0 版本
    本来想写一个函数判断自己是否评论点赞了。结果突然冒出来一个想法:有一些文章对我零作用啊,我不想点赞和评论 >_<,为什么不改成手动一键点赞评论?so~此版本 卒╮(╯▽╰)╭


    v0.4.0 版本
    在浏览器页面添加一个按钮,直接把自动点赞评论改为手动点击在这里插入图片描述
    虽然我前端渣得要死,但是我也知道这个按钮是真的丑,又得改╮( ̄▽ ̄)╭


    v0.5.0 版本
    我又双叒叕发现了一个问题,这个按钮固定在标签页的话,如果我阅读到文章末尾,那我岂不是又要按 “home” 键回到文章开头再点赞???能一步就一步,干嘛要变成两步呢?(>_<)

    于是我找啊找,呀嘿~发现了 ≧◇≦
    在这里插入图片描述

    如何所示,csdn 博文页面一共有两个地方在阅读滑动鼠标的时候仍然保持不动的
    那么选择哪里放按钮就显而易见了

    按钮改了位置后,发现样式和csdn 自带的不一致(似乎混进了一个奇怪的东西 ):
    似乎混进了一个奇怪的东西

    留着 v1.0.0 版本再改吧,我已经看到胜利在向我招手了 b( ̄▽ ̄)d


    v1.0.0 版本
    此处插播一条消息:关于以上版本号为何这般命名,请参考我的另一篇博文:版本号命名规则
    要改和网页端一样的样式的话,那就需要用到一个神奇的按键 F12 了,用谷歌浏览器打开博文:https://blog.csdn.net/mukes/article/details/103480696,点击 F12 ,跳出 DevTools 工具窗口,如下图:
    -1

    点击图中的箭头
    然后再把鼠标移动到网页上一键三连这个元素上

    由上图就可以获得很多信息了,比如 一键三连这个按钮的宽和高是74x28
    背景颜色是#E33E33,字体颜色为#FFFFFF

    想要看更具体的信息只需要点击一下该元素,然后在 DevTools 窗口中会自动跳到对应该元素的代码,而窗口的右边则是该元素详细的样式信息。
    在这里插入图片描述

    在样式我们又可以知道 一键三连 这个元素的圆角的边框属性为:border-radius: 4px;
    因此我们只需要改我们这个插件按钮的:
    宽和高,字体颜色,底色,以及圆角边框的属性就可以了,其他的细节就不用扣了。

    button.style.width = "90px"; //按钮宽度
    button.style.height = "20px"; //按钮高度
    button.style.align = "center"; //文本居中
    button.style.color = "white"; //按钮文字颜色
    button.style.background = "#b46300"; //按钮底色
    button.style.borderRadius = "4px"; //按钮四个角弧度
    

    最终代码

    // ==UserScript==
    // @name          csdn 手动一键点赞评论
    // @namespace     https://blog.csdn.net/mukes
    // @version       0.0.6
    // @description  打开博文,点击一键点赞评论按钮后自动为该博文点赞以及评论,前提是已经登录 csdn 博客
    // @author       mukes
    // @include      *://blog.csdn.net/*/article/details/*
    // @include      *.blog.csdn.net/article/details/*
    // ==/UserScript==
    (function() {
        'use strict';
        var button = document.createElement("button"); //创建一个按钮
        button.textContent = "一键点赞评论"; //按钮内容
        button.style.width = "90px"; //按钮宽度
        button.style.height = "28px"; //按钮高度
        button.style.align = "center"; //文本居中
        button.style.color = "white"; //按钮文字颜色
        button.style.background = "#e33e33"; //按钮底色
        button.style.border = "1px solid #e33e33"; //边框属性
        button.style.borderRadius = "4px"; //按钮四个角弧度    
        button.addEventListener("click", clickBotton) //监听按钮点击事件
        
        function clickBotton(){
            setTimeout(function(){
    
            var comment=["针不戳呀,写的针不戳!","学习了!b( ̄▽ ̄)d","本文不错( ̄ˇ ̄),值得学习!(= ̄ω ̄=)","感谢博主的分享!(^ ^)/▽▽\(^ ^)","感谢博主,你的文章让我得到一些收获!( ̄ˇ ̄)"];
            var STARTNUMBER = -1;
            var ENDNUMBER = 5;
            var temp_count = Math.floor(Math.random()*(STARTNUMBER-ENDNUMBER+1))+ENDNUMBER ;//取STARTNUMBER-ENDNUMBER之间的随机数 [STARTNUMBER,ENDNUMBER]
    
            document.getElementsByClassName("tool-item-comment")[0].click(); //打开评论区
            document.getElementById("comment_content").value = comment[temp_count]; //随机把一条预先写好的评论赋值到评论框里面
            document.getElementsByClassName("btn-comment")[0].click(); //发表评论
            document.getElementById("is-like").click() //点赞。把该代码注释后只会一键评论
    
    },100);// setTimeout 0.1秒后执行
        }
    
    
        var like_comment = document.getElementsByClassName('toolbox-list')[0]; //getElementsByClassName 返回的是数组,所以要用[] 下标
        like_comment.appendChild(button); //把按钮加入到 x 的子节点中
        
    })(); //(function(){})() 表示该函数立即执行
    

    最终效果:
    在这里插入图片描述
    动态展示效果:
    在这里插入图片描述
    ps:如果你觉得博主写得针不戳的话,欢迎点赞收藏 ~(゜ - ゜) つロ 干杯~
    如有疑问,欢迎留言讨论~
    pps:如何想测试脚本可行性的话,欢迎在此界面测试,同时也把你的个性留言秀出来吧๑乛◡乛๑

    最后:
    感谢以下 3 位博主在我编写这个脚本时做出的巨大贡献:
    https://blog.csdn.net/u010598445/article/details/108880602
    https://blog.csdn.net/jayandchuxu/article/details/79113755
    https://dyqdzh.blog.csdn.net/article/details/107399298

    官方文档
    https://www.tampermonkey.net/documentation.php

    展开全文
  • shell脚本编程100例

    2018-07-11 16:57:19
    shell脚本100例,非常经典,从简单的脚本,到最后企业实战可用的复杂脚本,非常适合初学者参考学习!
  • shell脚本

    万次阅读 多人点赞 2021-02-02 19:26:00
    shell脚本就是将命令写入文本中,文本可以被执行。 二、脚本的调用形式 打开终端时系统自动调用:/etc/profile 或 ~/.bashrc /etc/profile 此文件为Linux系统为每个用户设置环境变量,当用户第一次登陆时,该文件会...

    以下内容来自:
    脚本之家
    c语言中文网
    c语言中文网
    shell 整形自增

    一、shell简介

    shell是Linux系统的用户界面,它提供用户与内核的一种交互方式。它接收用户输入的命令,并把它送入内核去执行,是一个命令解释器。
    在这里插入图片描述

    在这里插入图片描述
    shell脚本就是将命令写入文本中,文本可以被执行。
    脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
    shell 既是应用程序,又是一种脚本语言(应用程序 解析 脚本语言)。

    二、执行方式

    • ./xxx.sh 先按照#!指定的解析器解析,如果找不到使用默认解析
    • bash xxx.sh 指定使用bash解析器解析,找不到使用默认解析
    • . xxx.sh 直接使用默认解析

    三、脚本的调用形式

    可以手动执行脚本或自动执行脚本。
    手动:
    ①chmod +x xxx.sh(添加可执行权限) ./xxx.sh(执行脚本)
    ②source xxx.sh
    ……(还有其他方法)

    自动执行:写到其他脚本中,利用脚本去调用。比如写道开机脚本中,开机会自动调用。

    打开终端时系统自动调用:/etc/profile 或 ~/.bashrc

    /etc/profile
    此文件为Linux系统为每个用户设置环境变量,当用户第一次登陆时,该文件会被执行。 系统的公共环境变量在这里设置
    开始自启动的程序,一般也在这里设置。

    注意:错误的修改系统配置文件时,可能会导致重复输密码一直无法进入桌面的现象。
    解决方法:进入终端机也就是字符界面(tty1-tty6):[Ctrl] + [Alt] + [F1] ~[F6],还原被修改的文件,重启即可。
    [Ctrl] + [Alt] + [F7]返回图形界面。

    ~/.bashrc
    用户自己的家目录中的.bashrc
    登录时会自动调用,打开一个新终端时也会自动调用
    这个文件一般设置与个人用户有关的环境变量 ,如交叉编译器的路径等等
    在这里插入图片描述

    三、shell语法

    3.1、定义以开头:#!/bin/sh

    #!用来声明脚本由什么shell解释,否则使用默认shell

    3.2、单个"#"号代表注释当前行

    shell脚本注释
    <<EOF xxxxxxx EOF 能注释多行
    在这里插入图片描述

    3.5、变量

    变量定义

    Shell 变量的命名规范和大部分编程语言都一样:

    • 变量名由数字、字母、下划线组成;
    • 必须以字母或者下划线开头;
    • 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。

    shell支持以下3种方式定义变量:

    variable=value			#普通赋值方法
    variable='value'
    variable="value"		#当变量的值(字符串)中包含任何空白符时,加双引号
    

    赋值符两边不能有空格,若变量值本身包含了空格,则整个字符串都要用双引号、或单引号括起来。

    双引号和单引号的区别

    在双引号中会引用变量的值,而单引号只把它当字符处理。
    在这里插入图片描述
    在这里插入图片描述

    **问题:在脚本中定义的变量,脚本结束后,变量和它的值还在,命令行“echo $变量名”可以查看。 **

    变量类型

    在shell中给变量赋值会默认视为字符串,不管有没有加双引号,即使你将整数或者小数赋值给它。

    当然如果有需要也可以设置变量类型:
    设置变量类型:typeset或declare可以设置变量类型。
    比如:
    typeset -i data 表示将data设置为int型。

    使用变量

    使用一个定义过的变量,只要在变量名前面加美元符号$即可,如:

    author="严长生"
    echo $author
    echo ${author}
    

    花括号{ }是可选的,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

    skill="Java"
    echo "I am good at ${skill}Script
    

    如果不给 skill 变量加花括号,写成echo “I am good at $skillScript”,解释器就会把 $skillScript 当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

    推荐给所有变量加上花括号{ },这是个良好的编程习惯。

    变量作用域

    运行shell时,会同时存在三种变量:
    1) 局部变量
    局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
    2) 环境变量
    所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
    3) shell变量
    shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    shell中的一些关键字

    echo: 打印

    echo “xxxxx” #打印字符串
    echo $变量名 #打印变量的值
    例如:echo $PATH 可以打印环境变量PATH的值
    在这里插入图片描述
    env #打印所有的环境变量

    显示结果重定向至文件

    会在当前目录下创建myfile文件,并写入字符串。

    echo "It is a test" > myfile
    

    unset:变量值清除。

    read: 读取键盘输入。read 变量名。读取输入的值到变量。

    脚本内容:
    read 从键盘读取变量的值, -p 可以在打印字符的当前行的最后输入。也可以同时读取多个值。
    变量赋值demo
    运行结果:
    在这里插入图片描述

    readonly:只读变量

    3.6 预设变量

    shell直接提供无需定义的变量。
    预设变量
    shell脚本支持从命令行传递参数,参数之间用空格隔开:
    $? 命令执行后返回的状态:返回0表示成功,非0表示失败
    在这里插入图片描述
    在这里插入图片描述

    3.7 脚本变量的特殊用法

    在这里插入图片描述

    系统命令调用和转义字符

    调用系统命令用··(反单引号)
    转义字符使用加“-e”
    在这里插入图片描述
    在这里插入图片描述

    命令序列

    “()”中由子shell执行,类似于子进程(“()”内定义的变量仅在此文件有效)
    在这里插入图片描述
    在这里插入图片描述
    “{}”由当前shell执行
    在这里插入图片描述

    3.8 变量的扩展

    判断变量是否存在

    在这里插入图片描述

    在这里插入图片描述
    这里100是因为,在之前的脚本中,定义过num变量。
    在这里插入图片描述
    两者区别“ n u m : − v a l ” 和 “ {num:-val}” 和 “ num:val{num:=val}”。
    在这里插入图片描述

    3.9字符串操作

    计算字符串长度

    string="abcd"
    echo ${#string} #输出 4
    

    提取子串

    string="alibaba is a great company"
    echo ${string:1:4} #输出liba
    

    拼接字符串

    your_name="qinjx"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting $greeting_1
    

    查找字符串

    string="alibaba is a great company"
    echo `expr index "$string" is`
    

    替换字符

    string="123123"
    echo ${string/3/0}			#用0替换第一个遇见的3
    echo ${string//3/0}			#用0替换串中所有3
    

    在这里插入图片描述

    在这里插入图片描述

    运算符

    算术运算符

    Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。
    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

    expr 是一款表达式计算工具,使用它能完成表达式的求值操作:
    例如,两个数相加:

    #!/bin/bash
    val=`expr 2 + 2`
    echo "Total value : $val"
    

    两点注意:

    • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
    • 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

    在这里插入图片描述

    test命令:用于测试字符串、文件状态和数值。

    test命令有两种格式:
    test condition 或[ condition ]
    使用方括号时,要注意在条件两边加上空格。

    文件测试运算符

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    字符串运算符

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    关系运算符

    在这里插入图片描述
    在这里插入图片描述

    3.11 与或非

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    数组

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

    定义数组

    在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:

    array_name=(value0 value1 value2 value3)
    

    array_name=(
    value0
    value1
    value2
    value3
    )
    

    还可以单独定义数组的各个分量:

    array_name[0]=value0
    array_name[1]=value1
    array_name[2]=value2
    

    可以不使用连续的下标,而且下标的范围没有限制。

    读取数组

    读取数组
    读取数组元素值的一般格式是:

    ${array_name[index]}
    

    如:

    valuen=${array_name[2]}
    

    使用@ 或 * 可以获取数组中的所有元素,例如:

    ${array_name[*]}
    ${array_name[@]}
    

    获取数组的长度

    获取数组长度的方法与获取字符串长度的方法相同,例如:

    # 取得数组元素的个数
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}
    # 取得数组单个元素的长度
    lengthn=${#array_name[n]}
    

    3.12 控制语句

    if控制语句

    格式一:
    if [条件1]
    then
      执行第一段程序
    else
      执行第二段程序
    fi
    格式二:
    if [条件1] 
    then
      执行第一段程序
    elif [条件2] 
    then
    执行第二段程序
    else
      执行第三段程序
    fi
    

    注意空格

    判断字符串
    在这里插入图片描述
    在这里插入图片描述
    判断文件是否存在
    在这里插入图片描述
    在这里插入图片描述

    case 控制语句

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    for循环语句

    与c语言不同,循环的值可以时字符串
    在这里插入图片描述
    注意空格
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    扫描当前文件
    在这里插入图片描述
    在这里插入图片描述

    while控制语句

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用while与read组合,循环读取键盘输入:

    while read FILM
    do
        echo "Yeah! great film the $FILM"
    done
    

    until

    在这里插入图片描述
    在这里插入图片描述

    break、continue

    在这里插入图片描述
    在嵌套循环中,break 命令后面还可以跟一个整数,表示跳出第几层循环。例如:

    break n
    

    表示跳出第 n 层循环。
    同样,continue 后面也可以跟一个数字,表示跳出第几层循环。

    函数

    所有函数在使用前必须定义,必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用
    在这里插入图片描述
    在这里插入图片描述
    在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…

    #!/bin/bash
    funWithParam(){
        echo "The value of the first parameter is $1 !"
        echo "The value of the second parameter is $2 !"
        echo "The value of the tenth parameter is $10 !"
        echo "The value of the tenth parameter is ${10} !"
        echo "The value of the eleventh parameter is ${11} !"
        echo "The amount of the parameters is $# !"  # 参数个数
        echo "The string of the parameters is $* !"  # 传递给函数的所有参数
    }
    funWithParam 1 2 3 4 5 6 7 8 9 34 73
    

    注意, 10 不 能 获 取 第 十 个 参 数 , 获 取 第 十 个 参 数 需 要 10 不能获取第十个参数,获取第十个参数需要 10{10}。当n>=10时,需要使用${n}来获取参数。

    求最值
    在这里插入图片描述
    函数分文件
    在这里插入图片描述
    fun.sh
    在这里插入图片描述
    24_sh.sh
    在这里插入图片描述

    输出重定向

    命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向。

    命令输出重定向的语法为:

    command > file
    

    这样,输出到显示器的内容就可以被重定向到文件。

    例如,下面的命令在显示器上不会看到任何输出:

    who > users
    

    打开 users 文件,可以看到下面的内容:

    $ cat users
    oko         tty01   Sep 12 07:30
    ai          tty15   Sep 12 13:32
    ruth        tty21   Sep 12 10:10
    pat         tty24   Sep 12 13:07
    steve       tty25   Sep 12 13:03
    

    输出重定向会覆盖文件内容,请看下面的例子

    $ echo line 1 > users
    $ cat users
    line 1
    $
    

    如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾,例如:

    $ echo line 2 >> users
    $ cat users
    line 1
    line 2
    $
    

    输入重定向

    和输出重定向一样,Unix 命令也可以从文件获取输入,语法为:

    command < file
    

    这样,本来需要从键盘获取输入的命令会转移到文件读取内容。

    注意:输出重定向是大于号(>),输入重定向是小于号(<)。

    例如,计算 users 文件中的行数,可以使用下面的命令:

    $ wc -l users
    2 users
    $
    

    也可以将输入重定向到 users 文件:

    $ wc -l < users
    2
    $
    

    重定向深入了解

    一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

    • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

    shell文件包含

    像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本。
    Shell 中包含脚本可以使用:

    . filename
    或
    source filename
    
    展开全文
  • shell 脚本入门

    千次阅读 2021-07-15 15:42:47
    一、什么是shell 脚本: 如果此时需要在终端中输入一系列命令完成一些操作,但是我们一条一条输入命令,这样就会很麻烦。那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?有!就是 ...
  • 淘宝准点秒杀脚本

    万次阅读 多人点赞 2019-11-10 02:11:19
    阿里云服务器 云小站_专享特惠_云产品推荐-阿里云 推荐一个薅羊毛教程地址:程序工厂 脚本技术交流群:212796668 开始教程 准备软件 下载地址 : python脚本运行环境.zip_python脚本执行未安装库-Python工具类资源-...
  • ES中script脚本的使用

    千次阅读 2021-11-09 13:46:06
    本文主要介绍了ES中script脚本的使用。 其主要作用是:提取字段属性,进行表达式计算。 最典型的使用场景是:定义运行时字段。
  • XSS跨站脚本攻击剖析与防御(完整版).pdf,完整版电子书,可以下载下来学习,很好的学习资料
  • sql server 导入超大SQL脚本文件

    热门讨论 2015-05-24 22:13:04
    sql server 导入超大SQL脚本文件.doc 说明
  • 手游自动挂机脚本开发历程

    万次阅读 多人点赞 2019-12-12 18:26:24
    时间一晃就到了两周前,大概是11月底的时候,一个朋友跟我说他玩碧蓝航线,每个月都要花20多块钱买脚本。当时听到脚本居然还要花钱去买时,作为一个程序员,不知道哪里来的正义感,决定自己给...
  • 109 个实用 shell 脚本

    千次阅读 多人点赞 2022-02-15 10:08:39
    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来...
  • windows操作系统,只用一行脚本。实现炫酷的滑动关机效果
  • shell脚本语言(超全超详细)

    万次阅读 多人点赞 2020-04-20 22:26:20
    shell脚本语言1、shell的概述2、脚本的调用形式打开终端时系统自动调用:/etc/profile 或 ~/.bashrc3、shell语法初识3.1、定义以开头:#!/bin/bash3.2、单个"#"号代表注释当前行第一步:编写脚本文件第二步:加上可...
  • linux编写脚本的基本方法

    千次阅读 2021-07-27 10:36:15
    shell 脚本文件 shell 解释器可当作人与计算机硬件的“翻译官”, 他作为用户与linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了像判断,循环等高级编程语言有的控制流程的特性。 想要正确高效的...
  • MCJ脚本 超强MCJ脚本 速度 340+

    热门讨论 2011-05-15 23:58:06
    玩过 KZ的人应该知道 MCJ 把 就是连续小跳,但是很多人都不会,这个脚本就是 MCJ 脚本 移动速度达到 340+ 比赛 或者 混战中用很拉风啊 哈哈
  • 什么是脚本脚本是什么

    万次阅读 2021-01-12 12:09:14
    *一、脚本是什么 脚本(Script)是一种描述性语言,依据一定格式可执行化文件。脚本是一种去重复性、多样性、简洁性、规范性、共同性的工具。简单说脚本能够将复杂、重复的工作进行简单化,有序执行的一段固定程序或...
  • Photoshop 脚本指南

    千次阅读 2020-04-01 10:26:56
    Photoshop 脚本指南一. 介绍关于本手册:约定二. Photoshop脚本基础脚本概览为什么使用脚本而不是动作?Photoshop中的脚本支持JavaScript支持执行其他脚本启动脚本从AS或VBS中调用的JavaScripts脚本Photoshop 对象...
  • 文章目录一、脚本简介二、脚本类与功能三、脚本使用案例四、脚本进阶 一、脚本简介 在介绍脚本之前先简单介绍一下VidionPro开发环境(QuickBuild)的项目结构,Job是QuickBuild工程的基本组成单位,一个QucikBuild...
  • 京东准点秒杀脚本【2020】

    万次阅读 多人点赞 2019-11-10 01:20:47
    直接上菜 1.浏览器打开https://www.jd.com/,登录京东 2.选择要抢购的商品 ...3.按键盘F12,打开开发者模式,选择Console选项卡 ...4.把以下代码粘贴在Console里面,修改代码里开始抢购时间(有二处时间) ... conso...
  • 青龙羊毛——可用脚本

    万次阅读 多人点赞 2022-03-18 23:01:43
    往期的一些脚本或者教程已经失效了,还有很多朋友问我怎么抓包怎么操作,现在更新一篇博文总结一下往期内容,同时后续更新也会同步到这篇博文里面! 该博文只做目录与索引之用,同时对羊毛大小进行分类,别再来问我...
  • 1、python脚本的格式是什么 举个例子来说明:hello.py中hello是脚本名,py脚本格式 2、脚本的结构 #coding:utf-8 //脚本头 一个空行分割 import os //引用部分 两个空行的分割 print(‘欢迎大家’)//业务...
  • 好插件·用户造,CSDN寻找最佳产品体验官 |有奖征文赛进行中...... ???? 作者:Linux猿 ??...,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!...三、脚本功能·
  • Redis使用Lua脚本详解

    千次阅读 多人点赞 2021-08-15 13:50:31
    本文将讲解 RedisLua脚本的基本操作以及与 Java项目的集成使用。 Lua脚本 Lua是一个高效的轻量级脚本语言,在葡萄牙语中是“月亮”的意思,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,...
  • 拉取单个脚本 ql raw <fileurl> 使用方法: 一、添加库:进入面板-右上角“定时任务”-分别填入相关信息。提供个人设置,给大家参考。其中人物名、任务定时可自定义。 二、运行库任务添加脚本:分别点击每个...
  • lua脚本工具。可以调试.带破解。

    热门讨论 2013-03-21 16:44:55
    lua脚本工具。可以调试 lua脚本工具。可以调试带破解。
  • 24h脚本,24h脚本

    千次阅读 2021-07-29 09:44:41
    24h自阅脚本
  • Lua脚本语言——Lua脚本基础语法

    万次阅读 多人点赞 2020-06-06 16:22:47
    1、LUA是一门脚本语言 ①、什么是脚本脚本语言又被称为扩建的语言,或者动态语言,是一种编程 语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在 被调用时进行解释或编译 ②、 脚本语言的执行 ...
  • 什么是脚本脚本语言?

    万次阅读 多人点赞 2018-10-01 21:28:39
    一、脚本 百科解释: 脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。 脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,050,002
精华内容 1,220,000
关键字:

脚本

友情链接: 串口6.rar