zoukankan      html  css  js  c++  java
  • 1 shell 基础

    一、shell:命令解释器

    shell编程可以不考虑效率,只要简单可以实现功能就可以,这也是与其他编程语言最大区别之一

    查看Linux支持的shell cat /etc/shell
    可以切换到其他支持的shell exit退出

    二、shell脚本

    1、echo命令

      -e支持反斜线控制的字符转换
      a 输出警告音 在/etc/inputrc中可以取消系统警告音
       输出制表符tab
       换行符
       回车
      -n取消输出后的换行符
      echo支持输出颜色 echo -e 'e[1;31m abc e[0m'

    2、执行脚本:

      1)可以赋予执行权限,通过绝对路径的方式执行
      2)通过 bash命令执行,可以不赋予执行权限

      *bash -x 可以查看脚本执行过程可以用来排错

    三、bash的基本功能

    1、历史命令history

      history -w 把缓存中的历史命令写入历史命令保存文件家目录下.bash_history中
      历史命令条数在/etc/profile中 HISTSIZE=1000
      !$上一条命令的参数

    2、补全 tab
    3、别名 alias 家目录下的.bashrc中 . .bashrc
    4、快捷键
    5、输入输出重定向

      键盘     /dev/stdin     0   标准输入
      显示器      /dev/stdout   1   标准输出
      显示器     /dev/stderr     2   标准错误
      输出重定向
        >   >>   &>    命令 >> ok 2>>erro #把正确输出和错误输出分别保存在两个文件中
      输入重定向
        <   << EOF(可以用来输出多行)

    6、多命令顺序执行

      命令1;命令2         命令之间没有任何联系,前一条命令报错后面也会执行
      命令1&&命令2        命令1执行成功才会执行命令2(用$?判断)
      命令1||命令2           命令1错误才会执行命令2
      命令1&&命令2||命令3       命令1成功执行命令2,命令1错误执行命令3

    7、管道符

      grep 参数
        -A数字 列出符合条件的行并列出后续的n行
        -B数字 列出符合条件的行并列出前面的n行
        -c统计次数
        -i忽略大小写
        -n输出行号
        -v反向查找

       |
       -regex

    8、通配符

      用来匹配文件名,完全匹配

    9、bash中其他的特殊符号

      ' ' 单引号在单引号中所有的特殊符号都没有特殊含义
      " " 双引号在特殊符号都没有特殊含义 除了$ `
      ` ` $( ) 把命令的值赋给变量
      () 在()中执行的命令需要打开一个子shell执行
      { } 在当前shell执行 #左括号必须要有空格 最后加;
      [] 变量测试
      $ 调用变量

    四、bash的变量和运算符

    1、什么是变量

      在bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为字符型
      变量用=赋值,且两边不能有空格
      变量可以叠加   a=123 a="$a"abc echo $a 123abc
      环境变量建议大写

    2、变量的分类

      用户自定义变量        名称:自定义 作用:自定义 内容:自定义
      环境变量
        用户自定义变量     名称:自定义 作用:自定义 内容:自定义
        系统自带环境变量       名称:确定 作用:确定 内容:自定义
      位置参数变量
        名称:确定 作用:确定 内容:自定义
      预定义变量
        名称:确定 作用:确定 内容:自定义

    3、用户自定义变量

      增
      删 unset 变量名
      改
      查
        set 查询环境变量
        -u 如果设定此选项,调用未声明的变量时会报错(默认无任何提示)

    4、环境变量

      1)用户自定义环境变量   可以在子shell中调用,用户自定义变量不可以
        设置自定义环境变量 export A=10
        删除 unset A
      2)系统自带环境变量
      1、PATH   系统查找命令的路径 用:分隔
        把/root/sh添加到PATH变量中: PATH="$PATH":/root/sh (变量叠加)
      2、ps1变量   命令提示符
        写在环境变量配置文件/etc/bashrc中

      3、LANG语系变量
        Linux中文支持的条件
          1)安装了中文字体和编码
          2)操作终端必须支持中文编码
        查询Linux支持的语系 locale -a
        默认语系配置文件/etc/sysconfig/i18n

    5、位置参数变量

      $n $0命令本身 $1-$9代表第1到第9个参数10以上要用大括号${10}
      $* 保留传入的所有参数(整体) 字符串
      $@ 保留传入的所有参数(个体) 列表
      $# 传入参数的个数

    6、预定义变量

      $$ 当前进程pid号
      $? 保存上一条命令执行状态
      $! 后台运行的最后一个进程的进程号

    7、接受键盘输入read

      -p 指定提示
      -t 超时时间
      -s 隐藏输入的字符
      -n 指定输入的字符数
      例:read -t 30 -p "please input a number:" number

    8、shell的运算符

      使用declare声明变量类型
        -: 给变量设定类型属性
        +: 取消变量的类型属性
        -a: 将变量声明为数组型 数组 a[0]=1 调用 echo ${a[*]}
        -i: 将变量声明为整数型(integer)
        -r: 讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,
        也不能删除变量,甚至不能通过+r 取消只读属性
        -x: 将变量声明为环境变量
        -p: 显示指定变量的被声明的类型

      使用expr和let数组运算工具
        c=$(expr $a + $b) +前后必须有空格
        let c=$a+$b
        c=(($a+$b))

    9、变量的测试与内容置换

      常用测试一个变量y有没有被赋值(通过x的值判断y是否存在)
               变量 y 没有设置        变量 y 为空值            变量 y 设置值
      x=${y-新值}     x=新值             x为空             x=$y #新值可为任意
      x=${y:?新值}   新值输出到标准错误输出     新值输出到标准错误输出    x=$y

    五、环境变量配置文件

    1、加载配置文件的命令
      source bash 绝对路径
    2、环境变量配置文件
      /etc/profile
      /etc/profile.d/*.sh

      /etc/bashrc
      ~/.bash_profile
      ~/.bashrc

    用户登录调用环境变量配置文件过程

      用户登录调用环境变量配置文件过程
        /etc/profile----->~/.bash_profile----->~/.bashrc(别名)----->/etc/bashrc($PS1定义提示符)

      非登录调用环境变量 /etc/bashrc---->/etc/profile.d/*.sh------>/etc/profile.d/lang.sh--------->/etc/sysconfig/i18n

    如果出现提示符的错误,如图则可能是前4个配置文件不论哪个丢失都会造成$PS1没有加载到环境变量中

     注销时生效的环境变量配置文件 ~/.bash_logout

      ~/bash_history 历史命令保存文件

    3、shell登录信息

      /etc/issue
        登录tty1-tty6时的终端生效,欢迎信息 (远程登录无法看到)
      /etc/issue.net
        在远处登录时要看到/etc/issue.net的欢迎信息,要修改ssh的配置文件/etc/ssh/sshd_config中加入 Banner /etc/issue.net
      /etc/motd 在用户输入用户名和密码正确登录后显示的欢迎信息

    4、快捷键定义

      查询所有快捷键 stty -a
      定义快捷键
        stty 关键字 快捷键

  • 相关阅读:
    魔法阵
    求和
    罗马数字
    「NOIP2005P」循环
    【Windows批处理III】实现删除含自定字符串的文件和文件夹(搜索子目录)
    扩展欧几里得算法
    埃氏筛法(素数筛)
    python学习之argparse模块
    51Nod1364 最大字典序排列
    51Nod1537 分解
  • 原文地址:https://www.cnblogs.com/baci/p/11410412.html
Copyright © 2011-2022 走看看