• 学习shell脚本语言的第一天


    1.python使人秃头

    2.python使人秃头

    3.python使人秃头

    4.生活的调剂  今天学习shell基础语言

    ----------------------------------我是分界线-------------------------------------------

    一.开始

    shell程序在学校都是单行命令的形式来执行(缺乏逻辑关系)

    区别:

    使用shell实现linux的批量管理,而不是去开发应用程序

    二.知识概述

    shell(python、perl)shell更好的兼容操作系统

    pip install ipython

    1、bash基本特性

      ctrl+l

      上键

      history

    2、IO重定向与管道符

    3、 编程基础

      编程原理(面向对象,面向过程)

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

      程序:指令(命令)+数据(变量)+(逻辑关系)

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

      Linux三剑客

      pattern“模式”

    5、语句的逻辑关系

       if

      for***(不容易进入死循环)

      放入for循环的列表

      while

      循环条件为true

       until

       循环条件为false

      (不要进入死循环)

      case(编写Linux的程序启动脚本)

      break

      continue

      exit(指定程序执行的返回值)

       read(input())

       echo(print())

      变量**

    6.Linux三剑客

      sed流编辑器

      两种模式的切换

      awk(报告生成器)

      一个独立的编程语言

    7.函数

      (数字型,字符型)

      一段固定的代码块

      数组

       列表,元组,字典

      字符串(字符串处理)

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

    三.Bash的基本特性

    1.命令历史

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

      关于命令历史的文件:

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

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

        (history -r 将内存中的命令手动写入磁盘)

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

        env //查看环境变量

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

        HISTSIZE=1000 数量

        HISTCONTROL=ignoredups

        l  history的常见操作

      查看命令历史

        !#    执行#行的命令

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

        !!   上一条命令

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

         ls /etc

         ls !$

         ESC+.

      常见的选项:

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

        -d

        -c

        history #    显示最近#行的命令

    2.命令补全

         Tab键,制表符\t代表四个空格键

       1、 提示

       2、 自动补全

       3.目录补全

         Tab键

       1、提示

       2、自动补全

    4.命令展开-date命令

         {}

         Linux的目录需要遵循什么规则?--FHS目录规则

         属性1     属性2

         A          1

         B          2

         mkdir -pv /var/{a,b}-{1,2}

        date  基于date命令来创建目录

      date +%F 改变date的输出格式

      %F     %H 时    %M  分    %S秒  %T 时间hh:mm:ss 

      %D mm/dd/yy

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

          例子:2019-08-6.http.log

                  touch `Date +%F`

                  for i in {1..31};do

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

                  done

      tar(归档工具)

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

    压缩工具:gzip、bzip2、xz、zcat(查看压缩文件中的内容【不解压】)

    tar的常见参数:

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

         -j bzip2

         -J xz

         -z gzip

         -c create 压缩

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

         -f 指定文件名

         -v 【verbose】显示详细信息

       tar cjvf 2018-08.http.log.bz2 2018-08-*.http.log

       tar xvz 2018-08.http.log.bz2 -C abc

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

    例:crontab – 20 2 * * * /root/xxx.sh

          vim xxx.sh

          #!/bin/bash

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

       chmod +x xxx.sh

    补充:

    clock/hwclock 查看硬件时钟(如何同步系统时钟与硬件时钟)

                     cal:日历

    5.命令的执行状态

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

      命令本身返回的内容

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

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

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

      1-255 表示失败状态

          [$? -eq 0]&& exit 0|| exit1

    6.命令的快捷键

       ctrl +l 清屏

       ctrl +c

      ctrl +u 删除光标前的字符

      ctrl +k 删除光标后的字符

      ctrl +a 跳到光标头

      ctrl +e 跳到光标尾

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

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

    7.alias别名

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

      例:alias cdnet=”cd /etc/sysconfig/network-scripts/”

       //这种方式定义的alias只能在当前shell中生效; 

      /etc/profile:定义环境变量(所有用户,大写)--EXPORT HISTCONTTROL=XXX

      /etc/bashrc :定义本地变量(alias,小写)

      ~/.bash_profile:定义环境变量(指定用户,写在谁的家目录下就是谁)

       ~/.bashrc:定义本地变量(alias,指定用户)

      sources /etc/profile 或者 ./etc/profile #使生效

    8.文件通配符—globbing

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

       ? 任意单个字符

      *  任意长度的任意字符

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

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

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

       指定字符类 (调用时还得加[])

      [:alnum:] 匹配任意一个字母或数字

      [:alpha:] 匹配任意一个字母

      [:cntrl:]

      [:digit:] 匹配任意一个数字

      [:graph:]

      [:lower:] 匹配任意一个小写字母

      [:print:]

      [:punct:]

      [:space:]

      [:upper:] 匹配任意一个大写字母

      [:xdigit:]

  • 相关阅读:
    铁轨
    POJ 2385 -- Apple Catching
    POJ 3258 -- River Hopscotch
    POJ 1469 -- COURSES (二分匹配)
    POJ 2349 -- Arctic Network
    最小生成树
    NOIP200703守望者的逃离
    NOIP200706字符串的展开
    POJ 1036 -- Gangsters
    POJ 1952 -- BUY LOW, BUY LOWER
  • 原文地址:https://www.cnblogs.com/TheNeverLemon/p/11311173.html
Copyright © 2020-2023  润新知