Preliminary linux_bash

# Class Notes

bash变量和逻辑运行

终端:附着在终端的接口程序  
  GUI:KDE GNOME XFCE   
  CLI:/etc/shells

bash的特性:  
  命令行展开:~,{}   
  命令别名:alias, unalias    
  命令历史:history   
  文件名通配:glob    
  快捷键:C+a e u k l   
  命令补全:$PATH   
  路径补全:    

bash特性之:命令hash    
  hash本身也是一个bash内嵌的命令  
  作用:缓存此前命令的查找结果:key-value
        key:搜索键  
        value:值  
  hash记录的是外部命令  
      hash:列出
      hash:-d COMMAND:删除  
      hash -r:清空  

bash的特性之:变量  
  程序:指令+数据  
      指令:由程序文件来提供  
      数据:IO设备、文件、管道、变量  

  程序:算法+数据结构  
  变量名:指向内存空间  
  变量赋值:name=value  (shell) 
  变量类型:存储格式、表示数据范围、参与的运算  
      编程语言:  
          强类型变量  
          弱类型变量:  
              bash把所有变量都视作字符型  
              bash不支持浮点类型  
              bash中的变量无需事先声明  
  变量替换:把变量名出现的位置替换为其所指向的内存空间中数据  
  变量引用:\$\{var_name\},\$var_name  
  变量名:数字、字母、下划线,不能使用数字开头  
  
  bash变量类型:  
      本地变量:作用域仅为当前shell进程  
      环境变量:作用域当前shell进程以及其子进程  
      局部变量:作用域为某代码片段(函数上下文)  
      位置参数变量:当执行脚本的shell进程传递的参数  
      特殊变量:shell内置的有特殊功用的变量  
    \$\?:  
        0: 成功
        1\~255:失败
      

      本地变量:  
        变量赋值:name=value
        变量引用:${name}, $name
            "":变量名会替换为其值;
            '':变量名不会替换为其值;
        查看变量:set
        撤销变量:unset name
        注意:此处非变量引用

    环境变量:
        变量赋值:
            1. export name=value
            2. name=value
               export name
            3. declare -x name=value
            4. name=value
               declare -x name
        变量引用:${name},$name

        注意:bash内嵌了许多环境变量,通常为全大写字母,用于定义bash的工作环境;
            PATH  HISTFILE HISTSIZE HISTFILESIZE  HISTCONTROL  SHELL HOME UID PID PWD OLDPWD
        
        查看环境变量:export  declare -x  printenv  env
        撤销环境变量:unset name
    
    只读变量:
        (1) declare -r name
        (2) readonly name
        
        只读变量无法重新赋值,并且不支持撤销,生命周期为当前shell进程的生命周期;
    bash特性之多命令执行:
        多个命令以 ; 隔开,依次执行;
        逻辑运算:
            true false

        与:(1 true; 0 false) [为了记忆,可以把与运算视作乘法运算]
            1 && 1 = 1
            1 && 0 = 0
            0 && 1 = 0
            0 && 0 = 0
        或:
            与上面相反
        非:
            取反 !1 = 0

        这里注意执行命令的短路法则

Guess you like

Origin www.cnblogs.com/rookieagle/p/11518230.html