Linux学习笔记(八)--shell编程(上)

来源:互联网 发布:js商品计算公式 编辑:程序博客网 时间:2024/05/18 17:00

第一节 概述

1.    Shell是什么

Shell是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

Shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统函数。

2.   Shell的分类

3.   Linux支持的Shell

/etc/shells

第二节 Shell脚本的执行方式

1.    echo输出命令

echo 【选项】【输出内容】

选项:

             -e: 支持反斜线控制的字符转换

范例:

echo “hello world”

 

控制字符

作用

\\

输出\本身

\a

输出警告音

\b

退格键,也就是向左删除键

\c

取消输出行末的换行符。和“-n”选项一致

\e

ESCAPE键

\f

换页符

\n

换行符

\r

回车符

\t

制表符,也即是Tab键

\v

垂直制表符

\0nnn

按照八进制ASCII码表输出字符。其中0为数字零,nnn为三位八进制数

\xhh

按照十六进制ASCII码输出字符。其中hh为十六进制数。

输出颜色

echo –e “\e[1;31mabcd \e[0m”

abcd

#输出颜色

#30m=黑色,31m=红色,32m=绿色,33m=黄色

#34m=蓝色,35m=洋红,36m=青色,37m=白色

2.    第一个脚本

#!/bin/bash

#The test program

#author=altman

echo “Hello World”

3.    脚本执行

赋予执行权限,直接运行

chmod 755 test.sh

./test.sh

通过Bash调用执行脚本

bsh test.sh


第三节 Bash的基本功能

3.1历史命令与命令补全

1.   历史命令

history 【选项】【历史命令保存文件】

选项:

      -c: 清空历史命令

      -w:把缓存中的历史命令写入历史命令保存文件

            ~/.bash_history

#历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中经行修改

历史命令的调用:

使用上、下箭头调用以前的历史命令。

使用“!n”重复执行第n条历史命令

使用“!!重复执行上一条命令

使用“!字串”重复执行最后一条以该字串开头的命令

1.      命令与文件补全

在Bash中,命令与文件补全是非常方便与常用的功能,我们只要再输入命令或文件时,按‘Tab’键就会自动经行补全。

#连按两下,显示所有文件。

3.2命令别名与常用快捷键

1.命令别名

alias 别名=‘原命令名’

#设定命令别名

alias

#查询命令别名

命令执行时顺序:

第一顺位执行用绝对路径或相对路径执行的命令。

第二顺位执行别名。

第三顺位执行Bash的内部命令

第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

删除别名

unalias 别名

2.Bash常用快捷键

快捷键

作用

Ctral+c

强制终止当前命令

Ctral+L

清屏

Ctral+U

删除或剪切光标当前的命令。

Ctral+Y

粘贴

Ctral+R

在历史命令中搜索,只要输入搜索命令,就会从历史命令中搜索。

Ctral+D

退出当前终端

3.3输入输出重定向

1.标准输入输出

设备

设备文件名

文件描述符

类型

键盘

/dev/stdin

0

标准输入

显示器

/dev/sdtout

1

标准输出

显示器

/dev/sdterr

2

标准错误输出

2.输出重定向

 

类型

符号

作用

标准输出重定向

命令->文件

以覆盖的方式,把命令的正确输出输出到指定的文件设备中。

命令->>文件

以追加的方式,把命的正确输出输出到指定的文件或设备当中。

标准错误输出重定向

错误命令2>文件

以覆盖的方式,把命令的错误输出输出到指定的文件设备中。

错误命令2>>文件

以追加的方式,把命令的错误输出输出到指定的文件设备中。

正确输出和错误输出同时保存

命令>文件 2>&1

以覆盖的方式,把命令的正确输出和错误输出输出到指定的文件设备中。

命令>>文件 2>&1

以追加的方式,把命令的正确输出和错误输出输出到指定的文件设备中。

命令&>文件

以覆盖的方式,把命令的正确输出和错误输出输出到指定的文件设备中。

命令&>>文件

以追加的方式,把命令的正确输出和错误输出输出到指定的文件设备中。

命令>>文件1 2>>文件2

把正确的输出追加到文件1中,把错误输出追加到文件2中。

3.输入重定向

wc 【选项】【文件名】

选项:

      -c        统计字节数

      -w       统计单词数

      -l         统计行数

命令<文件

#把文件作为命令的输入


3.4多命令顺序执行与管道符

1.多命令顺序执行

 

多命令执行

格式

作用

命令1;命令2

多个命令顺序执行,命令之间没有任何逻辑关系

&&

命令1&&命令2

逻辑与

当命令1正确执行,则命令2才会执行;

当命令1执行不正确,则命令2不会执行

||

命令1||命令2

逻辑或

当命令1执行正确,则命令2不会执行;

当命令1不正确执行,则命令2才会执行。

2.管道符

命令格式:命令1 | 命令2

#命令1的正确输出作为命令2的操作对象

grep命令

grep 【选项】“搜索内容” 文件名

选项:

-i   忽略大小写

-n  输出行号

-v  反向查找

--color=auto 搜索出的关键字用颜色显示

四节 Bash的变量

4.1用户自定义变量

1.什么是变量

变量是计算机内存的单元,其中存放的值可以改变。当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用的信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

2.变量设置规则

l  变量名称可以由字母、数字和下划线组成,但不能以数字开头。

l  在Bash中,变量的默认类型都是字符串类型,若果要经行数值运算,则必须指定变量类型为数值型。

l  变量用等号连接值,等号左右两侧不能有空格。

l  变量的值如果有空格,如要使用单引号或双引号包括。

l  在变量的值中,可以使用’\’转义符。

l  如果需要增加变量的值,那么变量需要双引号包含“$变量名”或用”${变量名}”包含。

l  如果是把命令的结果作为变量赋值于变量,则需要使用反引号或$()包含命令。

l  环境变量名建议大写,便于区分。

3.变量分类

l  用户自定义变量

l  环境变量:这种变量主要保护的是和系统操作相关的数据

l  位置参数变量:这种变量主要用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

l  预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

4.本地变量

变量定义

name=“root”

变量叠加

aa=123

aa=“$aa”456

aa=${aa}456

变量调用

echo $变量名

查看变量

set

变量删除

unset 变量名

4.2环境变量

1.环境变量是什么

用户自定义变量只在当期的shell中生效,而环境变量会在当前的shell和这个shell的所有shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在在所有的shell中生效。

2.设置环境变量

export 变量名=变量值

#申请变量

env

#查询变量

unset 变量名

#删除变量

3.系统常见环境变量

PATH:系统查找命令的路径

echo &PATH

PATH=${PATH}:/root/sh

#PATH叠加

PS1:定义系统提示符的变量

\d:显示日期,格式为“星期 月 日”

\h:显示简写主机名。如默认主机名“loaclhost”

\t:显示24小时制时间,格式为“HH:MM:SS”

\T:显示12小时制时间,格式为“HH:MM:ss”

\A:显示24小时制时间,格式为“HH:MM”

\u:显示当前用户名

\w:显示当前所在目录的完整名称

\W:显示当前所在目录的最后一个目录

\#:执行第几个命令

\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”。


4.3位置参数变量

1.位置参数变量

位置参数变量

作用

$n

n位数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}

$*

这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体。

$@

这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。

$#

这个变量代表命令行中所有的参数个数。

 

4.4预定义变量

1.预定义变量

预定义变量

作用

$?

最后一次执行的命令的返回状态。如果这个变量为0,证明上一个命令执行正确;如果这个变量的值非0(具体那个数,由命令自己来决定),则证明上一个命令没有正确执行。

$$

当期进程的进程号(PID)

$!

后台运行的最后一个进程的进程号(PID)。

2.接受键盘输入

read 【选项】变量名

选项:

            -p  “提示信息”:在等待read输入时,输出提示信息

            -t   秒数              :read命令一直等待用户输入,使用此选项                                       可以指定等待时间。

            -n 字符数            :read命令只接受指定的字符数,就会执行

            -s                          :隐藏输入数据,适用于机密信息的输入

-s –t –p顺序


第五节 Bash 的运算符

5.1数值运算与运算符

1.declare声明变量类型

Declare 【+/-】【选项】变量名

选项:

      -:      给变量设定类型属性

      +:     取消变量的类型属性

      -i:     将变量声明为整数型

      -x:    将变量设定为环境变量

      -p:    显示指定变量的被声明的类型

2.数值运算

方法1:

aa=1

bb=2

declare –ic=$aa+$bb

方法2:$((运算式))和$[运算式]

ff=$(($aa+$bb))

gg=$[$aa+$bb]

2.      运算符号

5.2变量测试与内容替换

第六节 环境变量配置文件

6.1环境变量配置文件简介

1.source命令

source 配置文件    或者: . 配置文件

2.环境变量配置文件简介

      环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量,比如PATH、HISTORY、PS1、HOSTNAME等默认环境变量。

对所有登陆用户有效

/etc/profile

/etc/profile.d/*.sh    (一组文件)

/etc/bashrc

当期用户生效

~/.bash_profile

~/.bashrc

6.2环境变量配置文件使用

优先级:


对所有登陆用户有效

/etc/profile

l  USER变量:

l  LOGNAME变量:

l  MAIL

l  PATH

l  HOSTNAME

l  HISTSIZE

l  umask

l  调用/etc/profile.d/*.sh文件

/etc/profile.d/*.sh    (一组文件)

/etc/bashrc

当期用户生效

~/.bash_profile

0 0