zoukankan      html  css  js  c++  java
  • 假期周进度报告二:shell编程

    一、说在前面

    1、本周主要学习了shell编程

    2、下周主要学习hadoop的安装和简单使用

    二、shell编程

    1.shell是什么
    Linux操作系统的核心是kernal(内核)!
    当应用程序在执行时,需要调用计算机硬件的cpu,内存等资源!
    程序将指令发送给内核执行!
    为了防止程序发送一些恶意指令导致损坏内核,在内核和应用程序接口之间,设置一个中间层,称为shell!

    本质上来说:
    shell: 一个可以解释shell规定的语法命令的解释器!
    解释器负责将应用程序发送的指令,进行检查,合法后交给内核解释执行!返回结果!

    shell命令: shell解释器要求的指定语法编写的命令!

    shell脚本: 多条shell命令,可以编写在一个文件中,文件中的指令,可以按照顺序执行!
    将这个文件称为shell脚本!

    2.shell中的解释器
    使用 $SHELL变量查看当前系统默认的解释器类型!

    shell支持多种不同风格的解释器,通过/etc/shells文件查看!

    默认使用 /bin/bash作为shell命令解释器!

    在终端中输入: cat /etc/shells
    等价于/bin/bash -c 'cat /etc/shells'.
    默认/bin/bash必须接一个脚本,作为输入!如果是一条命令,需要加-c (command)

    3. linux中的常用目录
    /bin: linux用户常用的命令
    cd
    echo
    pwd
    /sbin(super user bin): root用户(管理员)使用的常用命令!
    对整个机器的管理命令!
    开启网络服务: service network start

    4.命令的执行
    -bash: faefaw: command not found : 当前命令不在当前用户的环境变量!

    查看: echo $PATH

    5.脚本的编写要求
    ①声明: #!/bin/bash
    ②正文: 必须是shell解释器能否解释的命令

    6.脚本的执行
    ① bash /sh + 脚本
    特点: 新开一个bash执行脚本,一旦脚本执行完毕,bash自动关闭!
    ② ./脚本,前提是当前用户对脚本有执行权限,使用当前默认的解释器执行脚本
    特点: 新开一个bash执行脚本,一旦脚本执行完毕,bash自动关闭!
    ③ source / . +脚本 使用当前默认的解释器执行脚本,并不要求当前用户对脚本有执行权限
    特点: 在当前bash执行脚本

    三、变量操作

    1.基本操作

    增: 变量名=变量值

    删: unset 变量名

    改: 变量名=变量值

    查: echo $变量名
    查看当前bash所有定义的变量: set

    2.关键字
    特殊关键字:
    readonly : 用来修饰一个只读(不能修改,删除)变量!
    export: 导出!将一个变量提升为全局变量!
    局部变量: 默认变量只在定义变量的bash中有效!
    如果希望在bash-a访问bash-b中定义的变量!
    要求: ①bash-b不能关闭
    ②让bash-b将变量提升为全局变量,才能访问到!

    注意: ①变量赋值时,值全部以字符串存在,无法进行运算!
    ②赋值的值中有空格,需要使用引号引起来
    单引号: 不能识别$等特殊字符,不能脱义
    双引号: 可以脱义$
    ③``,作用是将引号中的命令执行的结果赋值给变量
    `命令` 等价于 $(命令)


    对象0X1234 B{String name="jack"}
    对象A{
    B b=0X1234
    void hello(){
    sysout(B.name)
    }



    3.变量的生命周期:
    在第一次新增时产生
    变量在执行unset时,撤销,失效!
    关闭当前bash,所有定义的变量也不会存在!

    4.特殊变量
    $?: 上一条命令的返回值!在bash中,如果返回值为0,代表上一条命令执行成功!
    $#: 参数个数
    $*: 参数列表。 在使用 "$*"时,将整个参数列表作为一个元素!
    $@: 参数列表
    $0-n: $0:脚本名
    $1-$n: 第n个参数
    获取第10以上的参数,${n}

    四、awk

    1. 关键字
    print: 向屏幕输出内容
    $1-$n: 第n列
    BEGIN: 代表开始读取文件所遇内容之前,做什么事! 初始化代码块
    END: 代表开始读取文件所有内容之后,做什么事! 结束代码块
    FILENAME: 文件名
    NR: 读的当前行的行号
    NF: 读的当前列的列号


  • 相关阅读:
    依赖注入和控制反转概念及目的(新手必读)
    电商秒杀系统可能遇到的坑及思路
    Java中的ReentrantLock和synchronized两种锁定机制的对比
    Java集合---HashMap源码剖析
    Java中的字符串常量池
    redhat7:用户、组和权限
    redhat7下对用户账户的管理
    通过Tacker将NFV引入OpenStack
    github中的一个快捷键
    关于
  • 原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/13658122.html
Copyright © 2011-2022 走看看