首页 > 代码库 > 鸟哥的Linux私房菜笔记6------11章认识和学习bash

鸟哥的Linux私房菜笔记6------11章认识和学习bash

1.合法的shell与/etc/shells功能
     shell有多个版本,有Bourne Shell(sh)、C Shell、K Shell 、TCSH等。通常Linux使用的是Bourne Again Shell(Bash),是sh的增强版
     可以检查/etc/shells,查看有多少可用的shell。
将合法的shell写入/etc/shells文件,是为系统某些服务在运行过程中检查用户能够使用的shells。
当用户登录时就会取得一个shell来工作,这个shell记录在/etc/passwd这个文件中
2.bash shell的功能
     命令记忆history,默认命令记忆功能1000个。在~/.bash_history文件中
     命令补全功能:Tab
     别名:alias
     作业控制、前台、后台(job control、foreground、background)
     shell script
     通配符(Wildcard)
3.bash 内置命令type:查看命令来自外部命令还是内置命令
     type [-tpa] name
          -t:显示字段有:file、alias、builtin
          -p:如果后面接外部命令时显示完整的文件名
          -a:由PATH定义的路径中,将所有含有name的命令列出。
4.变量的设置和显示unset、echo
     变量规则:
          变量与变量内容以等号=链接   name="VBird"
          等号两边不能有空格键
          变量名只能是英文字母与数字,开头不能是数字
          变量内容若有空格,则用“”或者‘’将变量扩起来,
               “”中特殊字符如$可以保持原本特性
               ‘’中的特殊字符仅为一般字符
          转义字符\可将Enter、$、\等变成一般字符。
          在一串命令中若有其他命令,可用$(comand)或者·comand·执行。
          系统默认变量通常为大写,自定义变量为小写
          取消变量用unset name
5.bash命令 打开一个子进程shell
6.环境变量功能
     env命令查看那环境变量和常见环境变量说明
          HOEM:代表主文件夹  cd ~
          SHELL:当前使用的shell
          HISTSIZE:记录条数
          MAIL:使用mail命令在收信时系统读取的信箱文件
          PATH:环境变量的目录
          LANG:语系数据
          RANDOM:随机数
     set命令查看所有变量(环境变量和自定义变量)
          PS1(提示符设置)
          $(本shell PID):echo $$
          ?(上一个命令的回传码)
     export:将自定义变量转成环境变量
     declare:可将环境变量转成自定义变量
7.locale语系变量  /etc/default/locale    /etc/sysconfig/i18n
8.变量键盘读取、数组与声明 read、array、declare
     read [-pt] variable
          -p:后面接提示符
          -t:后面接等待的秒数
     declare [-aixr] varibale
          -a:声明称数组array
          -i:声明称整数
          -x:声明称export环境变量
          -r:将变量设置成readonly
     var[index]=content
     echo "${var[1],${var[2]}}"
     建议用${}读取数组内容
9.与文件系统及程序的限制关系:ulimit
10.变量内容的删除、替换、替代
     ${variable#关键字}:从头开始数组符合关键字,将最短的数据删除
     ${varibale##keyword}:从头开始符合关键字,将最长的数据删除
     ${variable%keyword}    :从尾开始符合关键字,将最短的数据删除
     ${variable%%keyword}     :从尾开始符合关键字,将最长的数据删除
     ${variable/old str/new str}:将变量内容符合旧字符串,将第一个old替换new
     ${variable//old str/new str}:全部替换

     #:符合替换文字最短的那个
     ##:符合替换文字最长的那个
11.变量的测试和内容替换
                                   str没有设置      str=“”          str设置为非空
     var=${str-expr}          var=expr          var=          var=$str
     var=${str:-expr}          var=expr        var=expr     var=$str
     var=${str+expr}          var=            var=expr       var=expr
     var=${str:+expr}          var=              var=          var=expr
     var=${str=expr}    str=expr,var=expr  str不变,var=    str不变,var= $str
     var=${str:=expr}   str=expr,var=expr  str=expr,var=expr  str不变,var=$str
     var=${str?expr}     expr输出到stderr    var=          var=str
     var=${str:?expr}     expr输出到stderr  expr输出到stderr  var=str
12.历史别名 alias unalias
          ~/.bashrc文件中设置
13.bash的操作环境
     路径与命令查找顺序:
          1.以绝对相对路径执行命令
          2.由alias找到该命令执行
          3.由bash内置builtin命令执行
          4.通过$PATH顺序找到的第一个命令执行。
     bash登录与欢迎信息/etc/issue,/etc/motd.在Ubuntu中/etc/update-motd.d中00-header  10-help-text文件中
14.bash配置文件
     以login shell读取流程:/etc/profile------------>~/.bash_profile-------------->开始bash操作
                                          ----->/etc/inputrc          -------->~/.bashrc
                                          ----->/etc/profile.d/*.sh  
                                                            --->/etc/sysconfig/i18n
     当取得nologin-bash时会读取~/.bashrc
     /etc/bashrc中定义的数据:
          依据不同UID规定的umask值。
          依据不同的UID规定PS1值。
          调用/etc/profile.d/*.sh的设置
15.终端机的环境配置stty,set
16.通配符与特殊符号
     通配符:
          *     代表0到无穷多个任意字符
          ?     代表一个任意字符
          []     代表一个在中括号内的字符
          [-]     代表一个中括号范围内的字符
          [^]     代表非中括号内的字符
     特殊符号:
          #     注释
          \     转义
          |     管道
          ;     命令分割符
          ~     用户主文件夹
          $     取变量
          &     作业控制,后台运行
          !     非
          /          目录符号
          >,>>     数据流冲定向,替换   累加
          <,<<     数据流重定向
          ‘ ‘     不具有变量置换功能
          " "     具有变量置换功能
          ``     可以执行的命令,也可用$()
          ( )     中间为子shell的起始和结束
          {}     中间为命令块组合
17.重定向
     标准输入  代码为0,使用<,<<
     stdout     代码为1,使用>,>>
     stderr     代码为2,使用2>,2>>
     如果将错误和正确输出到同一文件,用
          find /home -name .bashrc >list 2>&1
           find /home -name .bashrc &>list 
     如果将一些错误信息丢弃掉,用2>/dev/null
18.管道命令
     选取命令:cut,grep
     排序命令:sort,wc,uniq
     双向重定向:tee
     字符转换命令:tr,col,join,paste,expand
     切割命令:split
     参数代换:xargs
     关于-:将前一个命令的stdout当作当前命令的stdin

鸟哥的Linux私房菜笔记6------11章认识和学习bash