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:]]*$

 

posted on 2019-08-06 19:22  琦妮  阅读(247)  评论(0编辑  收藏  举报