zoukankan      html  css  js  c++  java
  • Bash基础

    一. Bash基础

    # history

    1. 查看缓冲区历史命令
    history

    2. 清空缓冲区历史命令
    history -c

    3. 将缓冲区历史命令写入历史命令记录文件
    history -w # 默认历史命令记录文件为.bash_history
    history -w history.log

    4. 配置历史命令记录文件条数
    vim /etc/profile
    HISTSIZE=1000 # 默认1000条

    5. 重复上条命令
    !!

    6. 执行缓冲区第n条历史命令
    !n

    7. 执行缓冲区最后一条以字符串开头的历史命令
    !字符串

    # alias

    1. 查询所有命令的别名
    alias

    2. 临时将vim的别名设置为vi
    alias vi='vim' # alias 别名='命令'

    3. 删除vim的别名vi
    unalias vi

    4. 永久将vim的别名设置为vi
    vi /root/.bashrc
    alias vi='vim'
    source /root/.bashrc # 重新加载配置

    5. 命令执行优先级
    绝对路径 > 别名 > Bash内部命令(举例: cd) > $PATH环境变量

    # 快捷键

    ctrl + s 屏幕暂停
    ctrl + q 屏幕恢复
    ctrl + c 终止当前命令
    ctrl + z 暂停, 放入后台
    ctrl + u 剪辑
    ctrl + y 黏贴
    ctrl + l 清屏

    # 输入输出重定向

    1. > 表示覆盖, >> 表示追加, 2 表示错误, & 表示无论对错
    命令 > 文件
    命令 >> 文件
    命令 2> 文件
    命令 2>> 文件
    命令 &> 文件
    命令 &>> 文件

    2. 将ls命令输出的结果丢入回收站
    ls &> /dev/null

    3. ls命令执行成功, 输出结果追加到success.log, 否则追加到fail.log
    ls >> success.log 2>> fail.log

    4. 无论ls命令成功或失败, 将结果追加到cmd.log
    ls &>> cmd.log

    # 多命令执行

    1. 命令1和命令2之间无关系
    命令1 ; 命令2

    2. 命令1执行成功时, 命令2执行
    命令1 && 命令2

    3. 命令1无论执行成功或失败, 命令2都会执行
    命令1 || 命令2

    4. 模拟三目运算符
    命令 && echo yes || echo no

    # dd 磁盘拷贝

    TODO

    # grep

    1. grep用于截取字符行

    2. 选项
    -i 忽略大小写
    -v 反向查找
    -n 输出行号

    # 管道符

    netstat -an | grep LISTENING

    # 通配符

    1. 通配符在Linux中一般用于文件查询

    2. 通配规则
    ? 匹配一个任意字符
    * 匹配0个或多个任意字符
    [abc] 匹配 a 或 b 或 c
    [a-z] 匹配一个 a 至 z 范围内的字符
    [^1-9] 匹配一个非数字字符

    二. Bash变量

    # 四种变量类型

    自定义变量 环境变量 位置参数变量 预定义变量

    # 自定义变量

    1. 变量命名规范
    1) Bash默认变量类型为字符串类型
    2) = 两侧不允许出现空格
    3) today=$(date) # 将命令执行结果作为变量的值
    4) name='shao hsiung' # 字符串包含空格时, 使用引号包围
    5) 环境变量名一般为大写字符串

    2. 操作自定义变量
    1) 定义name变量
    name='shao'
    2) 叠加name变量
    name='$name'hsiung 或 name=$(name)hsiung
    3) 调用name变量
    echo name
    4) 查看所有变量
    set
    5) 删除name变量
    unset name

    # 环境变量

    1. 环境变量和自定义变量的区别
    自定义变量只在当前shell生效
    环境变量对当前shell和子shell生效

    2. 操作环境变量
    1) 定义NAME环境变量
    export NAME='env value'
    2) 查看所有环境变量
    env
    3) 删除环境变量
    unset NAME

    3. 两个重要的环境变量
    PS1 定义系统操作环境

    $PATH
    注意: 建议使用变量叠加的方式修改$PATH, 举例:
    PATH="$PATH":/root/sh

    # 位置参数变量

    $0 命令本身
    $1-$9 第1个至第9个参数
    ${10} 第10个以上的参数
    $* 返回所有参数 整体 循环一次 "$*"
    $@ 返回所有参数 个体 循环多次
    $# 返回参数个数

    # 预定义变量

    1. 验证上条命令执行结果, 执行成功返回0, 执行失败返回1
    echo $?

    2. 返回后台运行最后一个进程PID
    echo $!

    3. 返回当前进程PID
    echo $$

    # read

    1. 选项
    -p 提示信息 -t 指定秒数 -s 安全模式

    2. 通过name变量接收一个输入的参数
    read -t 30 -p "please input a number: " name
    echo $name

    # 变量的数值运算

    sum=$(( $a + $b )) 或 sum=$[ $a + $b ]

    # 运算符

    运算符优先级越大, 则优先级越高

    ## 变量测试与内容替换

    TODO

    # 环境配置文件

    1. 直接生效配置文件
    source 配置文件 或 . 配置文件

    2. 配置文件
    /etc下配置文件 // 对所有用户生效
    用户家目录下配置文件 // 只对当前用户生效
    ~/.bash_profile // 设置PATH
    ~/.bashrc // 定义系统别名, 调用/etc/bashrc
    /etc/bashrc // 定义登录提示符 (PATH umask PS1 ------- > no login shell)

    越后读取到的配置文件, 优先级越高, 除非使用变量叠加

    3. 其它配置文件
    ~/.bash_logout // 注销时执行
    ~/.bash_history // 手动从内存写入硬盘或注销时, 将内存的历史命令写入这个文件
    /ect/issue // 本地终端欢迎信息
    /ect/issue.net // 远程终端欢迎信息, 默认关闭, 可在/ect/ssh/sshd_config中开启
    /ect/motd // 不管是远程还是本地都会显示, 推荐: 英文警告信息

    4. 环境变量配置优先级

  • 相关阅读:
    linux内核(四)内存管理单元MMU
    open函数详解
    linux内核(三)文件系统
    C++中数字与字符串之间的转换 scanf string总结(复习必读)
    hello程序的运行过程-从计算机系统角度
    剑指offer第12题打印从1到n位数以及大整数加法乘法
    2017-10-11第二次万革始面经
    为什么需要半关闭
    Ubuntu指令
    143. Reorder List
  • 原文地址:https://www.cnblogs.com/shaohsiung/p/9921888.html
Copyright © 2011-2022 走看看