shell编程之shell基础

摘要:shell基础性了解,包括概念,脚本执行方式,bash的一些简单和相关功能介绍

Shell基础

    1 shell概述
         1.shell概念 
               命令行解释器  接收用户命令翻译成二进制传给Linux内核,shell可以启动、挂起、停止甚至编写程序
              编程语言  (易编写 易调试 灵活性较强) 解释执行脚本语言,直接调用系统Linux命令
               (高级语言有两种类型 编译型语言(C JAVA)和解释性(shell php 执行时即时编译))
              Shell与其他语言对比
                   c, php和java主要实现复杂功能, Shell为简化管理操作
          2.shell分类
               Bourne Shell:1979起Unix开始使用 主文件名为sh
               C Shell:在BSD版Unix使用,语法类似C语言
               主要语法类型Bourne和C,两者不兼容
                    Bourne家族:sh、ksh、 Bash (Linux主要)、psh、zsh
                    C家族:csh、tscsh
          3.Linux支持Shell
               " /etc/shells"
    2 脚本执行方式
         1.echo输出命令
              "-e":支持控制字符
                   \a输出警告音 \b退格(左删除) \n换行符 \r回车 \t制表符(Tab) \v垂直制表符 
                    \0nnn 按照八进制ASCII输出字符。(nnn是三位八进制数)
                   \xhh 按照十六进制ASCII输出字符。(hh是三位十六进制数)
                   \e[1;31(31-37)m 开启颜色显示 \e[0m关闭颜色显示
         2.脚本编写
              .sh后缀
              #!/bin/bash(标称使用那种命令解释器 不能省略)
         3.脚本执行
              1.赋予执行权限,直接运行
                   chmod 755 file.sh  ./file.sh
              2.通过Bash调用执行脚本
                   bash file.sh
    3 Bash基本功能
         1.别名
              alias查看系统生效别名
              alias 别名=‘原命名' 设置别名(临时生效)( vi ~/.bashrc  写入环境变量可永久生效
              unslias删除别名
              命令生效顺序(考虑到别名可能原也是命令)
                   1.绝对路路径或相对路径 2.别名 3.Bash内部命令 4.按照$PATH环境变量定义目录查找顺序找到第一个命令
         2.快捷方式
              Tab补全命令文件目录
              ctrl+l清屏
              ctrl+c强制终止当前命令
              ctrl+a光标移动行首
              ctrl+e光标移动行末
              ctrl+u光标删除到行首
              ctrl+z命令放在后台
              ctrl+r从历史命令搜索
         3.历史命令
              history[][历史命令保存文件(~./bash_history)](文件默认保存1000条 可在/etc/profile修改)
                   "-c" 清楚历史命令
                   "-w" 把本次登录使用命令存入文件
              历史命令调用
                   1.上下箭头 2."!n"(数字)执行第n条命令 3."!!"重复执行上条命令 4."!字串"重复执行最后一条已该字串开头命令 
         4.重定向
              1 标准输入输出
                   键盘 /dev/stdin 0(文件描述符) 标准输入 显示器 /dev/sdtout 1 标准输出 /dev/sdterr 2 标准错误输出
              2 输出重定向
                   标准输出重定向 命令 >文件(把显示内容记录在文件(覆盖)) 命令 >>文件(把显示内容记录在文件(追加))
                   标准错误输出重定向 错误命令 2>文件(2>>文件)
                   正确输出和错误输出同时保存 命令 &>文件(&>>文件)  命令 >>文件1(正确) 2>>文件2(错误) 
              3 输入重定向
                   wc [] 文件名
                         "-l" 统计行数
                        "-w" 统计单词数
                        "-c" 统计字节
         5.管道符
              1.多命令顺序执行 命令1 命令2
                   ";" 执行命令1和2
                   "&&" 执行命令1 若1正确 则执行命令2
                   "||" 执行命令1 若1不正确 则执行命令2
                    (判断命令正确与否 (命令  && echo yes || echo no ))
              2.管道符 命令1 | 命令2
                   命令1的正确输出作为命令2的操作对象(命令2必须操作命令1输出结果)
                   (查看服务器连接人数 netstat -an |grep ESTABLISHED | wc -l
         6.通配符
              1.通配符
                    ?  匹配任意 个字符
                    *  匹配0-n个字符
                    []  匹配[]中字符里的
                    [-]  匹配[]范围里的
                    [^]  匹配不是[]范围里的
          7.其他特殊符号
               $  调用变量值 aa=123 echo $aa (输出 123)
               ''单引号 aa=123 echo '$aa' (输出 $aa(即单引号里特殊符号失效))
               ""双引号 aa=123 echo "$aa" (输出 123)
               ``反引号 aa=`ls` echo $aa (输出相当执行命令ls)
               $() aa=$(ls) echo $aa (输出相当执行命令ls)
               # 注释符
               \ 转义符  aa=123 echo \$aa (输出 aa)

你可能感兴趣的:(Shell)