码迷,mamicode.com
首页 > 其他好文 > 详细

脚本安装程序——bash之简单介绍

时间:2016-03-31 14:49:19      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

读取脚本

    递归遍历读取scriptPath目录下的脚本文件,排除掉install.sh和config.ini。
<code class="hljs lua has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;">do_file()
{
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> file <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> $<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>/*
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span> 
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">[[ -d "$file" ]]</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
            do_file <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"$file"</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
            basename=`basename $file`
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">[[ ! $basename == "install.sh" && ! $basename == "config.ini" ]]</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
                link_file $file
            fi
        fi
    done
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

三、创建软链接

    为每一个脚本在binPath目录下创建软链接,如果之前存在则会首先删除掉,并对软链接加上执行权限(这里直接加了777)
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;">link_file</span>()
{
    filePath=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>
    fileName=`basename <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>`
    linkName=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${fileName%.*}</span>
    linkPath=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$binPath</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"/"</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkName</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [[ -L <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkPath</span> ]];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"===>(warn):"</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkPath</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" is exist,remove it!"</span>
        rm <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkPath</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">fi</span>
    ln <span class="hljs-operator" style="box-sizing: border-box;">-s</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$filePath</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkPath</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"===>(info):link file "</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$filePath</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" -----> "</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkName</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" successful!"</span>
    chmod <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">777</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$linkPath</span>
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

四、配置环境变量

    把binPath目录添加到环境变量中(~/.bash_profile),这样就可以随时的访问脚本了~
<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;">add_profile</span>()
{
    isIn=`cat ~/.bash_profile | grep <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>`
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span>_test <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"isIn is "</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$isIn</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [[ x<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$isIn</span>"</span> == x    ]];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"\n#Setting PATH FOR LOCAL SCRIPT"</span> >> ~/.bash_profile
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"export PATH=\"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>:\${PATH}\""</span> >> ~/.bash_profile
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"===>(info)"</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$binPath</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" is added to bash_profile successful!"</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">export</span> PATH=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>:<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${PATH}</span> 
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"===>(info)"</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$binPath</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" is already in the bash_profile!<SKIP>"</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">fi</span>
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

尝试

每次新加的脚本便可以放在scriptPath目录,执行install.sh之后便会在binPath里面生成对应的软链接,然后就可以在终端中自由的使用了~

1.可以看到,我的目录下面有五个文件(包括安装脚本的配置文件)

技术分享

2.执行sh install.sh run 之后

技术分享

3.在binPath目录下生成了三个软链接~

技术分享

4.并在~/.bash_profile里生成了对应的Path

技术分享

5.可以看到我们在Shell的任何位置已经可以是用自己编写的脚本指令了~(例如pyversion,是自己写的一个修改本地python版本的小脚本)

技术分享

脚本安装程序——bash之简单介绍

标签:

原文地址:http://blog.csdn.net/sjzfhyykp/article/details/51024644

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!