• Shell入门01


    Shell入门

    1.基于硬件的虚拟化

    2.基于平台的虚拟化

    3.基于服务的虚拟化

    4.基于库的虚拟化

    5.基于操作系统的虚拟化

    管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是以单行命令来执行的,缺乏逻辑关系,将单行的命令统一并建立逻辑关系的过程,就是shell脚本编程。

    Sum _ = 0

    For I in range(1,101):

             Sum_  += i

    Print(sum_)

    --------------------------------------------------------------------

    sum_= 0

    for i in $(seq 100);do

    …………..

    done

    输出echo

    格式化输出 awk – printf

    与其他编程语言的区别:使用shell来实现linux的批量管理,而不是去开发应用程序

    学习内容:shell(python、perl、)

    Pip install ipython----交互式工具执行单行命令比较方便

    1.bash的基本特性

    python可以通过调用库来实现各种行业的需求

    ctrl + l

    上键

    History

    2.IO重定向与管道符---shell的功能特性   命令是一个可执行的二进制程序

             Which ls

    3.编程基础

             程序是什么?----程序是执行以某个功能的代码,而算法是程序中的其中一种。

             #/!bin/bash ------制定解释器

    Path路径来执行shell  ./aa.txt

    变量:是指一段命名的内存空间

    数据有变量来提供

    指令---命令

             程序必须包含 指令 + 数据       + (逻辑关系

    编程原理----面向对象()和面向过程 

    4.!!!!!!!!!!!!!!!!grep和正则表达式!!!!!!!!!!!!!

             Linux三剑客 **grep过滤(行)

    Pattern“模式”

    5.语句的逻辑关系

    分支

    if

     

    循环

    for  工作中常用—不容易进入死循环  放入for循环的列表

    while 指定初始值,循环条件为True 不要进入死循环

    until 与while相反 循环条件为False不要进入死循环

    case------**编写linux的程序启动脚本**

    打断循环的语句

    break 跳出循环

    continue跳出当前循环

    exit 退出当前程序,指定程序的返回值

    echo $? 命令执行情况

    read –--input()

    echo---print()

     unix bsd

    6.**变量**

    network:宣告路由,让路由器发送helllo包,携带路由信息,组播

    Linux三剑客

             **sed---编辑器  stream edit d。。 流编辑器

             数据存储在磁盘里就是“流”

    换行 输出数据时手动添加/n,计算机识别后展示

    流设备基于流编辑器。。。

    两种模式的切换

             **awk 报告生成器-----一个独立的编程语言

    函数  ----- 一段固定功能的代码块

    数组  ---- 列表、元组、字典

    字符串----- 字符串的处理太复杂 方法多

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

    练习:

    line = `wc –l /etc/inittab | cat –d’ ’ –f1 `  查看行数

    echo $line

    cat –n /etc/inittab

    if test $line -gt 100 ;then                     if [ $line -gt 100 ];then

             echo “ /etc/inittab is a big file ”                  echo “ /etc/inittab is a big file ”

    else                                     else

             echo “/etc/inittab is a small file”                  echo “/etc/inittab is a small file”

    fi                                        fi

    test 相当于一个[]  test $line –gt 100 ==[$line –gt 100]

    -gt ----大于

    bash的基本特性

    linux的时间:系统时钟和硬件时钟

    系统时间—date

    硬件时间---clock  hwclock

    1.命令历史  根----加载驱动

             作用:查看之前使用的命令

    关于命令历史的文件------每个用户家目录下面的.bash_history

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

    history是内置命令 history –r 将内存中的命令历史写入文件

    useradd xls –l

    echo “123456” | passwd –stdin(标准输入) “xls -l”

    cd /home/xls-l

    ls

    ls -a

    关于命令历史的变量(环境变量) path只是环境变量的一种     chroot 切换文件根目录

             Env    //查看环境变量

    Set    //查看更加详细的环境变量参数

    HISTSIZE = 1000  总量是1000条历史命令。超过1000删除重存

    HISTCONTROL = ignoredups/ignorespace/ignoreboth

    Set|grep“HIST”

    History的常见操作

             查看命令历史

             !+编号----!#---执行#号行的命令(#表示数值)

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

             !!-------上一条命令

             *!$*------- 上一条命令的最后一个参数

                      ls /etc == ls !$

                      ESC+.---上一条命令的最后一个参数

             常见的选项:

             -a  追加历史行到历史文件

             -d  删除

             -c  清空

             History # 显示最近#行的命令

    2.命令补全

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

                       1.提示2.自动补全

    3.目录补全

             Tab 1.提示2.自动补全

    4.命令展开—date命令

             {}

             Linux的目录遵循的规则------FHS(文件系统层次化标准)目录规则

    Mkdir –pv mylinux{bin,boot/grub,dev,etc{/rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys}

     

    属性一       属性二

    A              1

    B              2

    Mkdir –pv /var/{a,b}-{1,2}

    dateclockhwclock

    基于date命令来创建目录文件

    date +%F---改变date输出的格式 –日期格式  年-月-日 CCYY-mm-dd

    date+%F-%H-%M-%S

    %H---小时 hh

    %M---分钟 MM

    %S---秒 ss

    %T---hh:MM:ss

    %D---mm/dd/CCYY(月/日/年)

    %Y---显示年份CCYY  %y

    练习:

             通过for语句循环创建一个月的日志文件;.log  2019-08-06.log

             Crontab  –e * * * * *(分、时、日、月、星期)

    touch `date +%F`.http.log

    for  i  in  {1..30};do

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

    done

    for  i  in  {1..30};do  touch `date +%Y-%m-$i`.http.log; done --- 一行执行

    tar

    归档命令 压缩解压缩

    压缩工具 gzip、bzip、xz、zcat(不解压查看压缩文件)

    文本文件压缩效果较好,压缩只能对文件进行操作,不能对目录进行操作

    Tar的常见参数:

             归档工具       

    -j      bzip2

             -J      xz

             -z      gzip

             -c     create(压缩)

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

             -f      指定文件名

             -v     显示详细信息 verbose

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

             Tar归档工具可以对目录进行操作

    gzip /etc/inittab

    压缩 tar cjvf 2019-08.http.log.bz2 2019-08-*.http.log

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

    解压可以不选择解压方式

    .*---正则表达式 *---不是正则表达式

     

    crontab  –e * * * * *(分、时、日、月、星期) 写全路径  除/以外的符号都可以当作文件名

    20 02 * * * /root/xxx.sh

    编写xxx.sh脚本文件

    Vim xxx.sh

                      #!/bin/bash

                      #

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

    chmod +x xxx.sh

     

    补充:

             clock、hwclock ---- 查看硬件时钟(如何同步系统时钟和硬件时钟,以哪一个为准)

             cal    日历 cal 1997

    5.命令的执行状态

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

                      命令本身放回的内容

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

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

                      0 表示成功的状态(与python相反)

                      1-255 表示失败的状态

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

     

    在程序执行中,我们可以使用exit来手动制定返回的状态码

    6.命令的快捷键

             Ctrl + l //清屏

             Ctrl + c

             Ctrl + u //删除光标前的字符

             Ctrl + k //删除光标后的字符

             Ctrl + a //光标头

             Ctrl + e //光标尾

             Ctrl + e

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

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

    7.alias别名

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

             alias 文件别名

             alias cdnet=”cd /etc/sysconfig/network-scripts”   //这种方式定义的alias只能在当前shell使用

             pstree

             如果想要别名所有人都可以使用,写入下面两个文件中

             /etc/profile 

             /etc/bashrc

             如果想要别名自己使用,写入下面两个文件中

             ~ /.bash_profile

             ~/.bashrc

             PEP代码标准

     

     

    8.文件通配符

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

    ? 任意单个字符

    * 任意长度的任意字符

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

    ^  1.以什么开头

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

     [^0-9A-Za-z]  [0-9] [A-Z] [a-zA-Z]

    指定字符类:

    1.[:alnum]----- [^0-9A-Za-z]字母+数字

    2.[:upper:]-----字母大小写

    3.[:digit:]-------数字

    4.[:punct:]-----特殊字符

    5.[:space:]-----空格   ^*[[:space:]]*$-----匹配空白行

  • 相关阅读:
    Linux下JDK安装位置
    Oracle中的User与Schema
    MFC中不同窗口间的切换
    MFC 动态的画线 画当前的线是清除上一次画的线
    VC ADO连接ACCESS步骤及错误处理
    虚继承和虚函数继承
    虚拟机无法连接连接U盘
    未能找到类型或命名空间
    VS2008 重构 封装字段 出错 无法使用
    vs2010 Visual Studio 遇到了异常。这可能是由某个扩展导致的
  • 原文地址:https://www.cnblogs.com/KAJIA1/p/11307887.html
Copyright © 2020-2023  润新知