Shell -- 基本语法

1、基本语法:

        1)Shell脚本变量和定义之间不能有空格

        2)单引号:不识别特殊语法。 双引号:识别特殊语法。

        3)环境变量:

       每个用户都有自己的环境变量配置文件。~/.bash_profile 或 ~/.bashrc。且以个人配置文件优先加载变量,读取,以个人的优先生效。

       全局配置文件/etc/profile、/etc/bashrc,且系统建议最好创建在/etc/profile.d/,而非直接修改主文件,修改全局配置文件,影响所有登录系统的用户。

        4)调用:

        每次调用bin/bash 就会开启一个子Shell,不保留当前的Shell变量,可以通过pstree检查进程树。

        调用source或者.是在当前Shell环境加载脚本,因此保留变量

2、基本命令:

       ``是反引号: user=`ls`,echo $user会将当前文件夹的文件名全部转成字符串后,放在了user中

        HISTSIZE: echo $HISTSIZE -- 查询Shell history能保留多少条命令

        HISTFILE:echo $HISTFILE --   查询Shell History中保留的命令记录所在的文件。

        history:

                -c:清空历史

                -r:恢复历史

                !+历史命令的ID  :  调用历史命令eg:!1000

                !! :执行上次的命令。

        set:找到当前的Shell环境中所有变量,以及包括局部变量。

        env 只显示全局变量

        declare 输出所有的变量。 -- 同set

        export 显示环境变量值。

        unset 删除变量,环境变量

        readonly 只读变量

        ${vars}和$vars:取出变量结果

        $()和``:在括号中执行命令,且拿到命令的执行结果。

        ():开启了子Shell执行命令。

        转义符\:还原符号原本的意思,不会被阅读成特殊含义。也可以用''(单引号),中间的都是符号原本的意思。

3、特殊变量:

       $#:表示执行脚本传入参数的个数

       $*:执行脚本传入参数的列表(不包括$0) -- 所有的参数是一个整体

       $@:脚本传入的所有参数(区分各个参数)

       $0:脚本名称

       $1:表示第一个参数

       $2:表示第二个参数

       ${10}:表示第十个参数

       $*和 $@详细区别:Shell $*和$@的区别

4、特殊状态变量:

        $?:表示上一次脚本执行的状态,0表示正常,其他表示错误

        $$:进程Id,脚本运行的当前进程Id号

        $!:Shell最后运行的后台Process的Id。

        $_:取得上次命令的最后一个参数 

5、shell 快捷键:

        Ctrl+L:清除终端屏幕并将光标定位在顶部。

        Ctrl+A:将光标移动到当前命令行的开头。

        Ctrl+E:将光标移动到当前命令行的末尾。

        Ctrl+U:删除光标之前的所有字符。

        Ctrl+K:删除光标之后的所有字符。

        Ctrl+C:中断当前正在运行的命令。

        Ctrl+Z:将当前正在运行的命令置于后台。

        Ctrl+D:退出当前的终端会话。        

        Ctrl+W:删除光标之前的一个单词。

        Ctrl+R:在历史命令中进行逆向搜索。

        Ctrl+G:退出当前的搜索模式。

        Tab:自动补全命令或文件名。

        Shift+Tab:逆向自动补全命令或文件名。

        Ctrl+P:向上浏览历史命令。  -- 上键

        Ctrl+N:向下浏览历史命令。  -- 下键        

6、重定向:       

        >       标准输出覆盖重定向:将命令的输出重定向输出到其他文件中

        >>    标准输出追加重定向:将命令的输出重定向输出到其他文件中

        >&    标识输出重定向:将一个标识的输出重定向到另一个标识的输入

        <      标准输入重定向:命令将从指定文件中读取输入而不是从键盘输入

        |       管道符,从一个命令中读取输出并作为另一个命令的输入
                     

7、Shell子串用法:
        ${变量}:  返回变量值

        ${#变量}:返回变量长度

        ${变量:start}:返回变量Start数值之后的字符,包括Start的数字

        ${变量:start:length}:返回变量Start之后的Length长度的字符。

        ${变量#word}:从变量开头删除最短匹配的Word子串

        ${变量##word}:从变量开头删除最长匹配的Word子串

        ${变量%word}:从变量结尾删除最短的Word子串

        ${变量%%word}:从变量结尾删除最长的Word子串

        ${变量/pattern/string}:用String代替第一个匹配的Pattern

        ${变量//pattern//string }:用String代替所有的Pattern

                wc –l :计算文件中的行数 

                wc –L :找出文件中的最长的行数并输出其字符的长度


8、变量的处理: 四个扩展的变量都是属于对变量的值进行判断、处理。

        res=${para:-word}  如果para是空,返回word给Res

        res=${para:=word}  如果para是空,返回word给para和Res

        res=${para:?word}  如果para是空,返回word给Res,若不为空的话则返回para

        res=${para:+word}  如果para是空,什么都不做。否则返回word

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值