CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

干货篇:Python基础教程之shell编程资料大全-永久免费的源码丞旭猿

一.shell的作用和历史

二.shell的常用功能

三.shell变量种类

四.shell脚本的运行

五.编写简单的shell脚本

一.Shell的作用及常见种类

Shell的作用 — 命令解释器,翻译官

vim /etc/shells

二.Bash的常用功能

1. Tab键自动补齐

2.Bash的命令历史

命令历史

保存用户曾经执行过的命令操作

存放位置:~/.bash_history 文件

查看历史命令

使用↑、↓按键逐条翻看,允许编辑并重复执行

执行:history

清除历史命令

执行:history -c

3.调用历史命令

!n:执行历史记录中的第n条命令

!str:执行历史记录中以str开头的命令

设置记录历史命令的条数

修改 HISTSIZE 参数(默认为1000条)

4.命令别名

为使用频率较高的复杂命令行设置简短的调用名称

存放位置:~/.bashrc

查看命令别名

格式:alias [别名]

设置命令别名

执行:alias 别名=实际执行的命令

取消已设置的命令别名

格式:unalias 别名

5.Bash的标准输入输出

交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

6.Bash的重定向操作

改变标准输入、标准输出、标准错误的方向

7.Bash的管道操作

管道操作符号|

连接左右两个命令,将左侧的命令输出的结果,作为右侧命令的输入(处理对象)

格式:cmd1 | cmd2 [… | cmdn]

三.Shell变量的应用

1.Shell变量含义

为灵活管理Linux系统提供特定参数,有两层意思:

1)变量名:使用固定的名称,由系统预设或用户定义

2)变量值:能够根据用户设置、系统环境变化而变化

2.Shell变量的种类

用户自定义变量:由用户自己定义、修改和使用

环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改

预定义变量:Bash预定义的特殊变量,不能直接修改

位置变量:通过命令行给程序传递执行参数

3.变量的赋值与引用

定义新的变量

变量名要以英文字母或下划线开头,区分大小写

格式:变量名=变量值

查看变量的值

格式:echo $变量名

查看所有变量:set

清除变量

unset 变量名

[root@localhost ~] DAY=Sunday

[root@localhost ~] echo $DAY

Sunday

在查看变量时,如果变量名容易和后边的字符串连在一起导致混淆,则应该使用大括号将变量名括起来,使用形式为:${变量名} ,例如:

若已知变量Var的值为lamp,则执行echo $Var3.0命令后将显示结果.0而不是lamp3.0,因为在该命令中,会将Var3当成变量名(默认未定义此变量)。若希望正确显示lamp3.0的输出结果,则需要执行echo ${Var}3.0

从键盘输入内容为变量赋值

格式: read [-p “信息”] 变量名

结合不同的引号为变量赋值

双引号 :允许通过$符号引用其他变量值

单引号 ‘ ’ :禁止引用其他变量值,$视为普通字符

反撇号 ` ` :将命令执行的结果输出给变量

4.数值变量的运算

计算整数表达式的运算结果

格式:expr 变量1 运算符 变量2 …[运算符 变量n]

expr的常用运算符

加法运算:+

减法运算: –

乘法运算: \*

除法运算: /

求模(取余)运算: %

Bash程序并不适合进行强大的数学运算,例如小数或指数运算的,一般只能进行简单的整数运算

对Shell变量进行数值运算时,更多的时候是用于脚本程序的过程控制,如控制程序的循环次数

在expr命令的使用格式中,变量与运算符间是有空格的,可以同时使用多个运算符、多个变量

由于星号*作为Bash环境中的通配符使用,因此乘法运算符需要使用\*的特殊形式(转义字符)

!/bin/bash

read -p “please input num1:” -t 30 test1

read -p “input num2:” -t 30 test2

declare -i sum=$test1+$test2

echo num1 + num2 = $sum

5.环境变量赋值

设置变量的作用范围

格式:export 变量名…

export 变量名=变量值 […变量名n=变量值n]

查看环境变量

env 或 export

清除用户定义的变量

格式:unset 变量名

对于用户自行定义的变量,默认只能在当前的Shell环境中使用,因此称为局部变量

局部变量在新开启的子Shell环境中是无效的(无法引用定义的变量) ,因此需要使用export命令将变量输出为全局变量

只有对于全局变量,在当前Shell的子Shell环境(例如zsh)中,才能够被正确引用

变量不存在或者值为空时,通过echo命令查看时将显示一个空行

6.系统环境变量

环境变量配置文件

全局配置文件:/etc/profile

/etc/bashrc

用户配置文件:~/.bash_profile

~/.bashrc

有完整登陆流程时,加载环境变量顺序

先读/etc/profile

再读~/.bash_profile

再读~/.bashrc

再读/etc/bashrc

开始Bash界面

用set查看环境变量

[root@localhost root] set

SHELL=/bin/bash

TERM=xterm

UID=0

USER=root

consoletype=pty

环境变量

常见的环境变量:

$USER 、$LOGNAME

$UID 、 $SHELL 、$HOME

$PWD、 $PATH

$PS1、$PS2

查看环境变量

[root@localhost ~] echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~] PATH=”/opt/bin:$PATH”

[root@localhost ~] echo $PATH

/opt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

命令执行时查找顺序

1、以相对/绝对路径执行

2、由alias找到的执行

3、bash内部命令执行

4、按$PATH路径执行

环境变量PS1

echo $PS1

\d 日期 \t 时间(24) \T时间(12)

\H 完整主机名 \h 简写主机名

\u 用户名 \v bash版本

\w 完整目录 \W 最后一个目录

\ 执行了第几个命令 \$ 提示符

PS1=‘[\u@\h \W \t \]\$’

位置变量

表示为 $n,n为1~9之间的数字

$0为第0个参数,脚本本身

[root@localhost ~] ./exam01.sh one two three four five six

预定义变量

表示形式如下

$:命令行中位置参数的个数

$*:所有位置参数的内容

$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错

$$:当前所在进程的进程号

$!:后台运行的最后一个进程号

$0:当前执行的进程/程序名

[root@localhost ~] bash

[root@localhost ~] echo $0 $$

bash 5887

[root@localhost ~] exxit

bash: exxit: command not found

[root@localhost ~] echo $?

127

[root@localhost ~] exit

exit

[root@localhost ~] echo $?

0

输出位置参数变量,脚本后要接参数

!/bin/bash

echo “the command is $0”

echo “canshu1 is $1”

echo “canshu2 is $2”

输出预定义变量

!/bin/bash

echo “canshu zongshu $”

echo “canshu libiao: $*”

echo $?

多命令运行

; 命令顺序执行。

&& 前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,它后面的命令才被执行。

|| 前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,它后面的命令才被执行。

通配符与特殊符号

通配符

* 任意多个

? 任意一个

[] 括号内任一个 [^0-9]非数字

特殊符号

\ 转义符

& 后台

! 非

四.Shell脚本的概念

Shell脚本

1.用途:完成特定的、较复杂的系统管理任务

2.格式:集中保存多条Linux命令,普通文本文件

3.执行方式:按照预设的顺序依次解释执行

编写可执行的Shell脚本

建立包含执行语句的脚本文件

脚本文件中包括的内容

运行环境设置:!/bin/bash

注释信息:以开始的说明性文字

可执行的Linux命令行

为脚本文件添加可执行权限

在脚本文件的各组成部分中,只有可执行语句是必不可少的(否则就不叫程序了)

当缺省运行环境设置时,会自动由当前加载该脚本的Shell解释器负责解释执行

Shell脚本文件的扩展名并无严格的约束,不一定非得是.sh结尾的

给shell脚本增加执行权限

[root@localhost ~] vi repboot.sh

!/bin/bash

To show usage of /boot directory and mode of kernel file.

echo “Useage of /boot: “

du -sh /boot

echo “The mode of kernel file:”

ls -lh /boot/vmlinuz-*

[root@localhost ~] chmod a+x repboot.sh

运行Shell脚本程序

1.直接执行具有x权限的脚本文件

例如:./repboot.sh

2.使用指定的解释器程序执行脚本内容

例如:bash repboot.sh

3.通过source命令(或 . )读取脚本内容执行

例如:souce repboot.sh 或 . hello.sh

脚本程序可以通过多种方式运行:

为脚本文件设置了可执行属性后,在Shell命令行中可以直接通过脚本文件的路径执行脚本程序

在调试阶段可以使用Shell程序直接调用脚本文件,不要求脚本具有可执行权限,格式是:bash 脚本名

使用Bash的内部命令.脚本文件执行时,将不会开启新的Shell环境。使用这种方式时,脚本文件作为.命令的参数,因此同样不要求具备可执行权限。

五.Shell脚本应用示例

示例1:

每周五17:30清理FTP服务器的公共共享目录

检查 /var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到 /var/log/pubdir.log 日志文件中,然后清空该目录

[root@localhost ~] vi /opt/ftpclean.sh

!/bin/bash

date >> /var/log/pubdir.log

ls -lhR /var/ftp/pub >> /var/log/pubdir.log

rm -rf /var/ftp/pub/*

[root@localhost ~] crontab -e

30 17 * * 5 /opt/ftpclean.sh

Shell脚本应用示例

示例2:

每隔3天对数据库目录做一次完整备份

统计 /usr/local/mysql/var 目录占用的空间大小、查看当前的日期,并记录到临时文件 /tmp/dbinfo.txt 中

将 /tmp/dbinfo.txt 文件、/usr/local/mysql/var 目录进行压缩归档,备份到/opt/dbbak/目录中

备份后的包文件名中要包含当天的日期信息

最后删除临时文件/tmp/dbinfo.txt

[root@localhost ~] vi /opt/dbbak.sh

!/bin/bash

DAY=`date +%Y%m%d`

SIZE=`du -sh /usr/local/mysql/var`

echo “Date: $DAY” >> /tmp/dbinfo.txt

echo “Data Size: $SIZE” >> /tmp/dbinfo.txt

mkdir /opt/dbbak

cd /opt/dbbak

tar -zcPf mysqlbak-${DAY}.tar.gz /usr/local/mysql/var /tmp/dbinfo.txt

rm -f /tmp/dbinfo.txt

[root@localhost ~] crontab -e

55 23 */3 * * /opt/dbbak.sh

更多Python学习资料,欢迎点击进群向群主索要。←戳我

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容