zoukankan      html  css  js  c++  java
  • shell脚本基础知识

    Shell脚本

    hell程序在学校都是单行命令的形式来执行

    缺乏逻辑关系

    根据shell脚本的不同,传入的参数不同

    Seq 自动生成1到100个数

    sum=0

    for i in $(seq100);do

    done

    echo#输出

    awk—printf#格式化输出

    区别:使用shell来实现Linux的批量管理,而不是去开发应用程序;

    shell (python、perl)

    pip install ipython

    ipython是交互系统

    IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

    1、 bash的基本特性

       ctrl +l

       上键

       history

    2、 IO重定向与管道符

    3、 编程基础

    编程原理

    程序:执行某个功能的一段代码而已

    程序:必须包含指令(由命令发出)和数据(一段命名的内存空间,数据由变量提供)和(逻辑关系)

    4、 grep和正则表达式

    pattern”模式”

    grep用来过滤

    1、语句的逻辑关系

    1)if

    2)循环

    重点:for 放入for循环的列表--------------好处:不容易进入死循环

    While  指定初始值,循环条件为true进入循环

    Until   循环条件为false进入循环,注意不要进入死循环

    Case  编写Linux程序的启动脚本

    3)打断循环

    Break 跳出所有循环

    Continue 跳出当前循环

    4)Exit退出当前程序

    5)读写

    Read—input

    Echo—print()

    *变量*

    Linux三剑客

    Sed stream edit d? 流编辑器 用来做文本编辑

    两种模式的切换

    内存模式

    Awk报告生成器

    他就是一个独立的编程语言

    1、数值型2、字符型

    函数:

             一段固定功能的代码块

    数组

             列表、元组、字典

    字符串

             字符串的处理

             重复:必须连续且相同的数据;先排序再统计(再去重)

    1、 联系:

    判断/etc/inittab文件是否大于100行,如果大于,则显示”/tec/inittab is a big file”

    Line=`wc –l /etc/inittab|cut –d’ ’ –f1`

    If test $Line –gt 100;then

    #if[$line –gt 100];then

              echo” /tec/inittab is a big file”

    else

              echo “/tec/inittab is a small file”

    fi#结束语句

    1、 bash的基本特征

    2、 命令历史

    作用:查之前使用的命令

    关于命令历史的文件

             每个用户家目录下面的.bash_history

    在关机的时候,会自动写入一次

    关于命令历史的变量(环境变量)

             snv //查看环境变量

             set //常看更详细的环境变量参数

             HISTSIZE=1000 记录1000个历史数量

             HISTCONTROL=ignoredups

                              Ignoredups 忽略重复的历史命令---连续且相同,才叫重复

                              Ignorespace忽略空白开头的历史命令,”键入空格开头则不会被记录”

                       Ignoreboth 两者都生效

    HISTFILE=/root/.bash_history

    HISTSIZE=1000

             History的常见操作

                                       查看命令历史

                                       !#  #表示数值,执行#行的命令

    !string 匹配最近一次的字符串

    !!上一条命令

    很重要:!$调用上一条命令的最后一个参数

                                       ls /etc

                                       ls !$= ESC+.

    常见的选项:

    -a

    -d

    -c

    History#显示最近#行的命令

                                      

    3、 命令补全

    Tab  扩展:制表符 代表四个空格键

    作用:1、提示

               2、自动补全

    4、 目录补全

    Tab    1、提示

           2、自动补全

    5、 命令展开---date命令

    {,}逗号做分隔符

    Mkdir –pv mylinux{bin,boot/grub}

    命令行扩展:

    Linux的目录需要遵循什么规则?-------FHS目录规则(文件系统层次化

    Date 基于date命令来创建目录

    斜杠不可以做文件和目录名,因为斜杠有特殊意义

    %F CCYY-mm-dd  年月日     当天日期

    %H hh 时

    %M MM 分

    %S ss 秒

    %T hh:mm:ss

    %D mm/dd/YY

     

    %Y CCYY

    改变date的输出时间的方式

    输出年月日和时分秒

    %M是分钟 %m是月

    练习:通过for语句循环创建一个月的日志文件;.log 2019-08-6.http.log

                      touch`date+%F`.http.log

    for i in {1..30};do

                      touch `date+%Y-%m-$i`.http.log

    done

    在一行写命令一定要用;分号分隔开

    执行周期命令两个:crontab

    Tar 归档(压缩与解压缩)

    tar归档可以对目录进行操作

    -j bzip2

    -J xz

    -z gzip

    -c create 创建压缩

    -x extract解压//可以不用指定解压的工具

    -f 指定文件名

    -v 显示详细信息verbose

    -t 不解压查看内容和zcat一样

    例如:tar cjvf 2019-08.http.log.bz2 2019-08-*.http.log  *文件通配符

    解压:Tar xvf 2019-08.http.log.bz2 –C abc

    压缩特性:只能对文件进行操作,不能对目录进行操作directory

    24234fjeonero24234f

    24234=ax

    压缩工具:gzip 、bzip2、 xz、zcat//查看压缩文件且不解压

    练习:编写脚本,每天02:20备份/etc/目录中所有文件,名称为当天日期;且保存文件为压缩文件;

    Crontab –e --20 2***/root/xxx.sh

    Vim xxx.sh

             #!/bin/bash

             #

             Tar cJvf /var/ `date +%F`.xz  /etc/

    Chmod +x xxx.sh

    补充:

    clock/ hwclock查看硬件时钟(如何同步系统时钟与硬件时钟)查看以哪个为准

    cal 日历

    cal 1998就可以查看1998年的日历

    1、 命令的执行状态

    在Linux中,每一条命令执行后都会有两个结果:

    命令本身放回的内容

    其次,命令执行的结果状态

    $? 变量,就是用来存放命令执行状态的变量;

                      0 表示成功状态(和python正好相反)

                      1-255 表示失败状态

            [$! –eq 0] && exit 0 || exit 1

    命令的执行结果状态:

    常见错误状态值:

    127—命令找不到

    2—文件或目录不存在

    13—没有权限

    7、命令的快捷键

             Ctrl+l

             Ctrl+c结束进程

             Ctrl+u删除光标前的字符

             Ctrl+k删除光标后的字符

             Ctrl+la跳到光标头

             Ctrl+e跳到光标尾

             Ctrl+w以空格为分隔符,去删除文件

             Ctrl+r进入交互式界面,搜索最近一次使用的命令(要输入字符串string)

    8、 alias别名

    系统启动时读取一些特殊文件的顺序;

    alias cdnet=”cd /etc/sysconfig/network-scriptes”//只能在当前shell生效

    文件:

    /etc/profile :  定义环境变量(所有用户)           大写----------export histcontrol=xxx

    /etc/bashrc :  定义本地变量----alias (所有用户)    小写

    ~/etc/.bash_profile    定义环境变量(指定用户)

    ~/.bashrc   定义本地变量----alias (指定用户

    sources /etc/profile 或者 ./etc/profile

    8、 文件通配符-----------globbing

    【文件通配符不是正则表达式】

             五种常见字符类:

    ?任意单个字符 A?b  Abb ab错误

            *任意长度任意字符

    [ ] 指定范围内的任意一个字符

                      [0-9A-Za-z]

                     [0-9] [a-z] [A-Z]

    全部字符: [a-zA-Z]

    ^   [^]指定范围以外的任意一个字符

    指定字符类:

                              [:alnum],[:alpha],[:cntrl],:数字[:digit:] ,

    标点:[:punct:],[:graph:],[:lower:],[:print:],[::]

                空格键的空格^[[:aprce:]]*$

  • 相关阅读:
    2019-2020-5 20174322 童硕《网络对抗技术》Exp8 Web基础
    2019-2020-5 20174322 童硕《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-4 20174322童硕《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20174322童硕《网络对抗技术》 Exp5 信息搜集与漏洞扫描
    2019-2020-4 20174322童硕《网络对抗技术》Exp4 恶意代码分析
    2019-2020-2 网络对抗技术 20174322童硕 Exp3 免杀原理与实践
    kali安装—来自重装3次,创建了8个虚拟机的老安装师
    Exp9 Web安全基础
    Exp6 MSF基础应用
    Exp3 免杀原理与实践
  • 原文地址:https://www.cnblogs.com/zqntx/p/11311231.html
Copyright © 2011-2022 走看看