实战Linux shell编程与服务器管理笔记(1-7章节)

第一章 shell简介

1.1 shell是什么?

       shell是外壳的意思,连接系统核心和操作者之间的接口。

1.4  简易bash shell程序的编写

       注意三点,.sh后缀,chmod +x加上可执行权限,执行。

第三章 基本概念介绍

 3.1登陆注销

      登陆主机可以分为本机登陆和远程登录。

     (1)本机登陆接口可以是文本接口或图形接口。linux tty1-tty6为文本接口,tty7为图形接口。ctrl+Alt+F1切换

    (2)远程登录通过网络,以虚拟终端程序登陆主机

 3.2 文件和目录

    (1) linux下一切视为文件。可分为一般文件,目录文件,设备文件(字符文件和磁盘文件),内部进程通信文件(Socket文件和管道文件),符号链接文件。

    (2)ls命令以及file命令都可以查看文件类型。(-,d,l,b,c,s,p)

    (3)cd,pwd命令

    (4)文件权限(文件形态,文件拥有者权限,同组权限,其他用户权限),权限的数字表示方法,421

    (5)权限修改命令 chmod

 3.3 通配符和转义符

  (1)*以及?通配符

   (2)反斜线(\)为转义符,目的是去除特殊字符的作用。

       例子 echo 9*9 =81改 echo 9 \*9=81,也可以使用单引号包括特殊字符或者整个字符串。需注意单引号中不能包括单引号,使用转义符也不可以,可以换双引号或去除最外单引号。

   (3)续行符号

         \后接换行符(Enter)为续行符

  3.4  字符集合

        例【abc】,【a-z】,【!a-z】

  3.5  符号扩展

       例 {g,nc,s}

  3.6 系统默认开启的文件

    每一个shell script执行时 (进程),系统默认开启3个标准文件,标准输入,标准输出以及标准错误。文件描述符为0,1,2

  3.7 标准输入/输出转向

   (1)转向输出>

   (2)cat,more,less命令获取文件内容

   (3)转向附加>>

   (4)转向输入<,配合wc -l命令可以计算文件有多少行信息

   (5)利用cat命令和转向输出做简易编辑,ctrl+D结束编辑

  3.8 管道

    形式,命令1|命令2,一个程序的输出变成另一个程序的输入

  3.9 前台工作,后台工作

   &符号,是程序在后台执行

第四章 bash shell的程序结构

  4.1 shell程序的组成

   (1) 变量设定,内置命令,shell的语法结构,函数以及其他命令行程序

   (2)程序执行权限添加以及程序的执行

 4.4 Bash Script排错方法

  (1)检查script语法 bash -v test.sh

  (2)查看script代码 bash -n test.sh

  (3)追踪script执行 bash -x test.sh

  (4)echo命令的插入使用

 4.5 Bash Script执行原理

   (1)父shell和子shell

   (2)login shell

 4.6 Bash shell的启动配置文件总结

第五章 基本操作介绍

 5.1 内置命令

(1)常见内置命令

(2)必备内置命令

   help,echo,printf,cd,pwd,:,source,alias,unalias,exit,logout,umask,history,fc,type,set,shopt,time,read,exec,eval

 5.2 命令行程序(即单独存在的执行文件)

 (1)常见命令行程序

   (2) 必备命令行程序

  which,locate,date,who,whoami,ls,cat,head,tail,wc,ln,mkdir,rmdir,rm,find,tar,gzip,basename,dirname,sort,unip,cut,paste,tr,grep,

tee,diff,comm,xargs

 5.3 执行多个命令的方法

    ;,&&,||,(),{ }

 5.4 记录命令的执行过程

   script命令

第六章  变量与字符操作

6.1 变量是什么

 bash shell把任何存储在变量中的值,皆视为以字符组成的字符串

6.3  变量的设定

(1)方法 变量名称=值

(2)若值含有空白,要用引号括起来

6.4 取得变量值

   $变量名称

6.5 取消与清空变量

(1)取消变量 unset (后面可以接变量与函数名称)

 (2)清空变量 变量名称=(给变量设定一个空值)

6.6 变量和引号

  (1)双引号与单引号区别 :单引号的作用是形成一个所见即所得的字符串,不会进行任何替换变量的操作

(2)可以利用转义操作符(\)抑制双引号替换变量

6.7 变量的有效范围

  变量一旦设定,只在各自的shell环境中有效

6.8 环境变量

(1)父shell设定环境变量为子shell所用

(2)export

6.9 bash内置变量

6.10 调整变量属性

(1)只读 readonly

(2)变量属性调整 delcare

6.11 别名

(1)为指令取别名 alias 别名=指令

(2)取消别名 unalias

6.12 自定义环境

   bash shell的启动配置文件

6.13 数组

(1)数组的用法

   数组的两种初始化方式,(A[0]=1 A[1]=10 A[2]="bash shell" )  ,(A=(1 10 "bash shell")

(2)取得元素值

    取得一个元素,${ A[1] }

    取得所有元素,${ A[@] }

(3)取得数组元素的个数

${#数组[@]} 或${#数组[*]} 

(4)取得数组元素长度

若数组元素为字符串,获得长度,${#数组[索引]}

(5)取消数组或数组元素

unset,同取消变量一样

6.14 Here Document

(1)Here Documnet的基本语法(把命令和标记之间的内容,利用转向输入的方式交给命令处理

   命令<

   .....

   HERE(标记)

(2)利用Here Document设定变量

(3)利用Here Documnet做多行批注

第七章  高级变量

7.1 变量扩展:测试存在性以及空值

(1)变量扩展的基本型:${变量名称},变量扩展是一种简易的条件判断,对不同的条件赋予变量不同的替换值。

(2)“变量存在”的定义

(3)测试变量“存在与否”的基本用法

      ${待测变量-默认值}

 (4)测试变量“不存在”或其值为空:“传回”一个默认值

      ${待测变量:-默认值}

(5)测试变量"不存在“或其值为空:给变量设定一个默认值

     ${待测变量:=默认值)

(6)测试变量“不存在”或其值为空:提示错误信息

     ${待测变量:?提示信息}

  (7)测试变量的“存在性”:变量存在且非空,传回真值

     ${待测变量:+真值}

7.2 变量扩展:取字符串切片,字符串长度

1)取字符串切片

       语法一:${变量:位置起点}

       语法二:${变量:位置起点:长度}

 (2)取部分位置参数

        位置参数的概念

     取部分位置参数的用法:${@:起点},${@:起点:个数}

 (3)计算字符串长度

     ${#变量名称}

 7.3 变量扩展:对比样式

(1)由字符串前面对比,删除最短的相符者

  语法:${变量#样式}

(2)由前面对比,删除最长的相符者

  语法:${变量##样式}

(3)由字符串后面对比,删除最短相符者

  语法:${变量%样式}

(4)由后面对比,删除最长的字符

  语法:${变量%%样式}

(5)取代或删除部分字符串(最长)

只替换第一个对比符合的字符串:${变量/样式/ 替换字符串}

替换全部对比符合的字符串:${变量//样式/替换字符串}

(6)把对比符合的字符串删除(最长)

  只删除第一个:${变量/样式/}

  删除所有:${变量//样式/}

(7)要求样式在句首或句末

  要求样式在句首:样式前加上#

  要求样式在句末:样式前加上%

7.4 变量扩展:取变量名称列表、数组索引列表

(1)取变量名称列表

把所有以指定字符串开头的变量名称列出:${ !开头字符串@}

取数组索引列表:把数组变量所有的索引列出:${ !数组变量[@] }

注:当取索引列表出现在双引号中,取得的变量不是一个字符串,而是将索引值视为单独的字符串

7.5 命令替换

将命令执行后的标准输出存放于变量中:变量名称=$(命令)

7.6 算数扩展

Bash变量没有数据型,全部以字符视之,不会自动进行算数运算。

算数扩展语法:$( (算数式) )


你可能感兴趣的:(shell)