shell编程的介绍和简单命令的使用

讲述了shell的基础知识,好好了解一下吧。我都说累了。。哈哈j_0003.gif



shell 编程


shell 基础

什么是shell ?

shell是一个命令行的解释器 kerne作用是l内存调度和资源调配

linux都支持什么shell

[root@xu /]# vim /etc/shells


bash的好处

内建命令比较多 兼容性比较好 支持的特性比较多

内建命令 是 系统自身带的

外建命令是 后来安装的


快捷键

history 之保存最新的1000条

!ser 调用之前用过的命令 文件在 ~/.bash_history

history -c 把当前终端上的历史命令清楚

history -w 把当前命令覆盖进文件里 要不然等重启以后才会保存进去


[root@xu /]# vim /etc/profile 系统级的环境变量

[root@xu /]# vim /etc/bashrc


cd /home/test/

ls -a

.bash_profile 用户级环境变量

.bashrc


这四个的顺序是

1 vim /etc/bashrc

2 vim /etc/profile

3 .bashrc

4 .bash_profile


修改 历史保存数量

[root@xu /]# vim /etc/profile

39 HISTSIZE=1000 修改


支持别名 配置文件

[root@xu test]# vim /root/.bashrc


; 代表 不管前面是否成功 后面都执行 顺序执行命令

&& 前面成功以后 后面才执行

|| 前面不成功 后面才会执行

` ` 优先执行 ` ` 里面的命令

2> 标准错误覆盖

2>>标准错误追加

&> 不管是正确错误都进去


--------------------------------------

shell 变量

变量 是 用固定的字符 存放变化的字符



变量类型 有


1 系统环境变量 2poi65z2qa

系统启动的时候自动生成的,我们不要修改

查看

[root@xu ~]# env 只能显示系统环境变量 自定义变量不能显示

[root@xu ~]# set 可以显示自定义变量




2 预定义变量

预定义变量 存放的值也 是固定不变的


[root@xu ~]# echo $# 位置变量的个数

[root@xu ~]# echo $* 位置变量的内容

[root@xu ~]# echo $$ 后台进程的pid号 是bash的后台进程的

[root@xu ~]# echo $? 上一条命令执行结果的状态 如果是0说明执行正确 非0执行错误

[root@xu ~]# echo $0 当前进程的名字 或脚本的名字

[root@xu ~]# echo $!



1 #!/bin/bash

2 #脚本的说明信息

3 echo $1 位置变量

4 echo $# 位置变量的个数

5 echo $* 内容

6 echo $0 名字



执行脚本方式

sh a.sh

bash a.sh

chmod +x a.sh

./a.sh

/root/a.sh



3 位置变量

$1.........$9 就是位置变量


自定义变量

a=1

根据需求定义自己的变量

注意

1 =两边不能有空格

2 区分大小写

3 在脚本里 变量名相同时 ,后定义的值生效

4 变量名 不能以数字开头

不能算的时候统统归为字符 在运算的时候会变成数值形


5 不要用特殊字符和关键字定义变量名




使用变量

echo $a


撤销变量

unset a


变量值的累加


[root@read ~]# xing=xu

[root@read ~]# ming=yang

[root@read ~]# name=$xing$ming

[root@read ~]# edcho $name

[root@read ~]# echo $name

xuyang


------------------------------------------

条件判断 (为流程控制作准备)

test 选项 目的对象

[ 选项 目的对象 ]


文件状态测试 (man test)

-e 文件是否存在 存在为真

-d 否不存在且是一个目录

-f 是不是一个文件

-r 可读的

-w 可写的

-x 可执行


0 代表真

1 代表假



数字比较

-eq 等于 =

-lt 小于 <

-gt 大于 >

-ne 不等于

-le 小于等于 <=

-ge 大于等于 >=




$? 查看结果



字符比较


= 赋予值

== 比较 左边的和右边的作比较

!= 不等于 空

-z 判断字符串是否为空



符号

" " 双引 里面的解释变量

' ' 单引 取消变量的含义


[root@read Server]# name=xu

[root@read Server]# echo "my is $name"

my is xu

[root@read Server]# echo 'my is $name'

my is $name


设置变量时间

[root@read Server]# date "+%F"

2013-03-03

[root@read Server]# daytime=`date "+%F"`

[root@read Server]# echo $daytime

2013-03-03


截取出 /的 一用容量

[root@read Server]# df -H

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda2 204G 54G 140G 28% /

/dev/sda1 104M 38M 61M 39% /boot

tmpfs 1.1G 0 1.1G 0% /dev/shm

/rhel5u.iso 3.6G 3.6G 0 100% /mnt



[root@read Server]# df -H | grep "/dev/sda2" | awk '{print $5}' | awk -F"%" '{print $1}'

[root@read Server]# rootdata=`df -H | grep "/dev/sda2" | awk '{print $5}' | awk -F"%" '{print $1}'`

[root@read Server]# echo $rootdata

28


[root@read Server]# [ $rootdata -gt 20 ] && mail -s "aaa" root@localhost < /etc/a.txt





输入名字的脚本


1 #!/bin/bash

等待输入的时间

read -t 15 -p “pleass your name” name

read -t 15 -p “pleass your name” age

[ -z $name ] && echo "name is null"



逻辑比较

两个或者两个以上的条件的时候会用到


&& -a

|| -o

! 取反

!-z 非空


[root@read Server]# [ 10 -eq 10 ] || [ 5 -gt 6 ]

[root@read Server]# echo $?

0


[root@read Server]# [ 10 -eq 10 -o 5 -gt 6 ]

[root@read Server]# echo $?

0










python 语言

安装包

rpm -ivh python-2.4.3-46.el5.i386.rpm




变量的范围

当前shell 当前shell的子shell都有用


自定全局变量

name=xu

export name=xu



脚本中的变量 只在脚本里有效

在外面没有用


你可能感兴趣的:(linux,用户,资源,基础知识,解释器)