zoukankan      html  css  js  c++  java
  • Day1-shell

    基础

    正则表达式

    Sed

    Awk

    Expect

    shell基础

    脚本,实现某种功能,且有执行权限的文件

    遵揗语言格式、功能——变量函数数组流程控制

    系统命令

    脚本格式

    #!/bin/bash            定义脚本shell

    功能体————内容

    执行脚本方法

    ./脚本名即可————前提该用户有执行权限

    用户——>shell——>内核——>硬件

    内核——资源分配和进程调度

    当前支持的shell,没有的可以安装

    系统默认为/bin/bash

    可以使用    type    命令——是否为内置或外置命令

    内置功能

    更改histroy历史命令次数——默认为1000

    该配置是全局——所有用户

    [root@localhost ~]# vim /etc/profile

    HISTSIZE=1000

    每个用户家目录下有一个

    该配置是root用户,同样,也可以设置别的用户

    [root@localhost ~]# ls /root/.bash_*

    /root/.bash_history /root/.bash_logout /root/.bash_profile

    别名记录[root@localhost ~]# alias

    全局生效

    [root@localhost ~]# vim /etc/bashrc

    用户生效

    [root@localhost ~]# vim /root/.bashrc

    管道

    命令1    |    命令2    |    命令3|

    重定向——修改数据输入或输出设备

        标准输入/dev/stdin        0    键盘

        标准输出/dev/stdout        1    显示器

        标准错误输出/dev/stdout    2    显示器

    重写向输出

        >    覆盖

        >>     追加

    重写向输入

        <     覆盖输入

        <<     追加输入

    重写向错误输出————也可以将错误信息记录到文件中

    重写向正确+错误输出

    变量——使用不变的字符串,保存变化的数据

        编写时,把变化的数据用变量表示

    变量的使用规则

        变量名相同时,后赋值有效

        变量名区分字母大小写

        变量名命名时可以使用数字、字母、下划线,但不允许以数字开头

        变量赋值是=两边不允许有空格

        不指定变量类型时    默认都是字符类型

    定义变量        变量名1=值

    使用变量        $变量名1

    输出变量的值        echo    $变量名1

    删除变量        unset     $变量名1

    查看已定义的变量    set |grep     变量名1

    [root@localhost mnt]# a=this

    [root@localhost mnt]# b=test

    [root@localhost mnt]# echo $ais$b

    test

    [root@localhost mnt]# echo $a$b

    thistest

    [root@localhost mnt]# echo ${a}is$b

    thisistest

    [root@localhost mnt]# echo $a is $b

    this is test

    区别""和''

        ""变量的值会被值所取代

        ''不解释变量值——直接输出

    [root@localhost mnt]# echo "$a-is-$b"

    this-is-test

    [root@localhost mnt]# echo '$a-is-$b'

    $a-is-$b

    系统命令的执行结果给变量赋值

    [root@localhost mnt]# date ``

    Wed Aug 24 22:48:25 CST 2016

    [root@localhost mnt]# date +%d

    24

    [root@localhost mnt]# a=`date +%d`

    [root@localhost mnt]# b=$(date +%d)

    [root@localhost mnt]# echo $a $b

    24 24

    执行脚本时接收用户从键盘输入的数据——read    函数

    结果

    系统环境变量——系统启动时或系统服务启动时

        加载配置文件定义 变量

        系统环境变量名,通常都是大写字母定义

        变量名和存储的值都是固定的

        编写脚本时可以直接调用系统环境变量——通常不修改系统环境变量的值

    $PATH——保存系统命令对就文件所在的目录

    $USER——当前系统登录的用户

    $PWD——当前的路径

    $HOSTNAME——当前的主机名

      全局变量:在当前shell和当前相有的子shell里使用 

        可以使用export  变量名=值————————export  -n  变量名——————则取消变量

        开机自动识别变量  export  变名=值写入到/etc/profile

      局部变量:只能在当前shell下使用

      终端变量周期

      终端下定义变量只要不手动撤销、关闭终端,定义的变量就一直有效

      脚本里定义变量,只在脚本执行过程中有效

    预定义变量——/bin/bash——默认

      变量名和值都是固定的,变量的值不可以修改,变量的值是根据当前运行环境赋值

      在写脚本时可直接调用预定义变量

    $0——保存当前终端的进程或当前运行脚本的脚本名

    $?——上一条命令执行结果的返回状态

      非0:错误

      为0:正确

    $$  进程的PID号

    $!——当前终端后台运行进程的PID号

    [root@localhost ~]# find / -name "test" &
    [1] 6608

    [root@localhost ~]# echo $!
    6608

    位置变量——保存脚本或函数 对应位置变量的值

      $1保存脚本或函数 第一个位置参数的值

      $2保存脚本或函数 第二个位置参数的值

      ...

      $9保存脚本或函数 第九个位置参数的值

      ${10}保存脚本或函数 第十个位置参数的值

      ......

    $# ——保存脚本或 函数,位置变量 的总个数

    $*——保存脚本或 函数,所有 位置变量 的值

    自定义变量——根据脚本的需要定义的变量是自定义变量,遵揗变量的使用规则

    可以man bash——/bin/bash帮助手册

    命令行下的特殊符号

    通配符——* ? {} []

     

    &&

    命令1 && 命令2

    命令1执行成功,命令2才会执行

    若命令1执行失败,命令2不会去执行

    ||

    命令1 || 命令2

    命令1执行失败,命令2才会执行

    若命令1执行成功,命令2不会去执行

     

    命令1 ; 命令2

    先执行命令1,在执行命令2——————命令执行成功或失败,不影响后面命令的执行

    编写脚本思路

      明确脚本功能

      实现功能时,会用到哪些系统命令

      把变化的数据用变量表示

      把脚本中反复执行的操作,使用流程控制实现

    实验

  • 相关阅读:
    LootCode-链表排序-Java
    Vue创建项目及基本语法 一
    七大设计原则、单一职责原则
    SpringBoot 将自制的Starter 发布到远程公服
    SpringBoot 系列
    Mysql Sql 语句练习题 (50道)
    一、SpringBoot学习笔记_Eclipse 安装 SpringBoot、配置Gradle
    七、垃圾回收_判断对象是否存活算法_可达性分析法详解
    从零开始搭建Django+vue前后端分离项目
    Airtest一:批量运行脚本、汇总报告、导出报告
  • 原文地址:https://www.cnblogs.com/fina/p/5805016.html
Copyright © 2011-2022 走看看