学习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:]

猜你喜欢

转载自www.cnblogs.com/TheNeverLemon/p/11311173.html