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——————命令执行成功或失败,不影响后面命令的执行

    编写脚本思路

      明确脚本功能

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

      把变化的数据用变量表示

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

    实验

  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/fina/p/5805016.html
Copyright © 2011-2022 走看看