linux shell基础

标签: shell

附上教学视频,仅用于教学交流,

链接: https://pan.baidu.com/s/1Lo7meFHhL7sUQRKyCLH0wg 密码: dz2s

echo输出命令:
   (1)输出‘\’,需要在前面加另一个\,
   (2)\b  :删除前一个字符
         echo 'ab\bc':  输出ac
   (3) \t:  插入tab,
   (4) \e[1; ....  \e[0m  输出颜色
        echo -e '\e[1;31m abcd\e[0m'
!/bin/Bash: 标识以下的程序是shell脚本
执行方法:
    1,给予执行权限直接执行,   
        sudo chomd 755 xx.sh   
        ./xx.sh
    2,使用bash 命令执行
        bash xx.sh

#!/bin/bash
#first program
echo 'hello world'

历史命令与补全:
    history命令,保存在.bash_hostory文件里
        history -w (保存历史命令)
        history -c (清空缓存)
        !n:重复执行第n条历史命令
        !!:重复执行上一条命令
        !string :重复执行string开头的上一条命令
    Tab键补全:按两次列出含有的多个可能补全

命令别名和快捷键:
    定义别名:alias vi='vim'
    执行顺序:绝对路径执行 > 别名 > bash内部命令 > $path找到的命令
    快捷键:
        ctr+l:清屏
        ctr+c:强制终止
        ctr+u:删除剪切(ctr+y粘贴回来)光标左侧所有的东西
        ctr_r:搜索命令
        ctr+z:暂停应用,但是还是会占用内存,没有终止
        
输入输出重定向:
    1,输出: > 符号(覆盖)   xxx > filename
            >>   (追加)     
    2,错误输出重定向   2>   2>>,(之间不能够有空格)   
    3,同时保存正确和错误输出:  命令 > filename 2>&1
                            命令 &> filename
                            命令 >> rightname 2>> errorname (分别保存到两个文件)
    4,输入重定向:

多命令执行:
    多命令执行符号:
         ; :没有逻辑顺序     ls ; cd /user ; date
         &&:逻辑与,顺序执行   当第一条命令正确执行,才会后续执行
         || : 多个命令只执行一个   相反  
管道符号:  命令1 | 命令2  
        连接两个命令符号,1的输出作为2的输入
        grep 命令 grep -op 'String' file
           op: -i 忽略大小写  
               -n  行
               -c : 颜色
          
通配符和特殊符号:
    ? :匹配任意一个字符
    * :匹配多个字符
    []: 匹配括号中的一个字符 [abc]代表必定有abc
    [-]: 匹配a-z
    [^]: 匹配不是括号中的字符
特殊符号:
    ''  :中间有特殊符号时特殊符号认不出来,当做正常符号处理
    ""  :中间有特殊符号可以识别
    $() : 系统命令执行,结果当做变量   abc=$(date) && echo $abc
    #  :注释
    $  :代表变量
    \  :转意,将特殊符号转换为普通符号
    
Bash变量:
1,用户自定义变量:
    命名:不能以数字开头
    默认类型都是字符串,数值运算必须指定类型
    变量之间等号不能空格
    变量值内部包含空格需要用单引号包括  name='ab cd'
    变量叠加: aa=123   aa="$aa"456
    |     |      |
    二者区别在于,用户自定义变量只在当前shell存在,而环境变量在子shell
    中也有,写入配置文件后作用范围更广
    |     |      |
2,环境变量:
    export xx=xx  定义环境变量
    env          查询变量
    unset     删除变量
    PATH:   系统所认识的路径,可以通过PATH="$PATH"yourpath的方式添加临时环境变量
    提示符  :可以自定义提示符就是命令行前面一大串
3,位置参数变量:
    $n  $0代表命令本身,$1-9代表参数,${10}
    $*  代表命令行中所有的参数

#!/bin/bash
echo $0    #命令本身
sum=$(($1+$2))
echo $sum


4,预定义变量
    $?:  最后一次命令的返回值,0代表正确
    $$ :当前进程号
    $! :最后一个后台进程的进程号
5,从键盘接受数据
    read [op] [varname]
    op : -p  提示信息, -t :等待时间 -n :字符数

#!/bin/bash
read -p "please input name:" name  -n 2 -s

运算符:
   例如: aa=11 bb=22 cc=$aa+$bb='11+22'  字符处理所有变量
   声明变量  declare [+/-] [op] varname
        +,-:取消,设定变量类型
        -i  :整形
        -x: 环境变量
        aa=11 && bb=22 && declare -i cc=$aa+$bb && echo $cc   (运算符旁边不能加空格)
   运算工具:expr; let:
       dd=$(expr $aa+$bb)
   括号括起来:  ff=$(($aa+$bb))

变量测试和替换:
    x=${y-1}:  如果y不存在或者y=null,x=1,否则x=y;类似于C++里面的 ?: 表达式
    
环境变量配置文件:  每次登录系统去读取环境变量的文件,更改后才能够在每次登录都生效  
    如果不想重新登录 ,可以使用命令 source xxx.xxx
    $PATH临时增加环境变量: PATH="$PATH"path  ,但是不会写入配置文件,注销之后会失效
    /etc/  系统环境变量
    ~/.bashrc  用户环境变量
    
   环境变量配置文件的作用
  

 /etc/profile           
   /etc/profile.d/*.sh
   /etc/bashrc
   ~/.bashrc
   ~/.bash_profile


   变量存在覆盖行为,最后调用和读取的配置文件,同样的变量会覆盖前面的变量。
   
    
    


       


    
    
          
   

原文链接:加载失败,请重新获取