shell编程:
1.Shell的作用
命令解释器,“翻译官”。介于操作系统内核与用户之间,负责解释命令行。
shell功能非常强大,除负责解释名另外,还可以将多个命令组合起来,完成复杂的任务,这就是SEHLL编程。
CentOS7之前(Linux核心3.0之前)的各版本都是通过shell程序进行服务控制的。
1.编译器
将系统外围使用高级语言(如:JAVA、C#等)编写的程序翻译成系统内核及硬件能够识别的低级程序或机器语言程序的工具,称为编译器
编译器其实也是一个程序,不同操作系统的编译器也不同。
shell是另外一种程序的执行方式,解释执行。
shell有很多的版本,如:sh、ksh、csh、bash等,RHEL(redhat、CentOS)常用的是bash
2.可以执行的命令(linux系统中)
二进制程序
shell程序
函数
别名
别名
命令别名
功能:给一个复杂的、较长的命令起一个简化的代用命令
alias jinWang="cd /etc/sysconfig/network-scripts"
alias---查看系统中所有命令别名
unalias jinWang---取消别名
传统的shell有3种:
Born SHELL-------------------sh
Korn SHELL ------------------ksh
C SHELL -------------------csh
linux系统支持多种shell。但常用的是bash -- Born Again Shell。Linux系统中的/etc/shells文件记录了系统支持的有效登录Shell。
每一种shell都支持如:
重定向
管道
作业控制jobs fg bg &等功能,这些功能可用于shell程序控制,即shell编程。
3.切换shell环境
Linux支持的shell都可以使用。可以随时切换
临时切换:
直接执行其他Shell程序,示例ksh、zsh等
永久更改:
更改用户登录Shell:
需修改/etc/passwd文件中用户记录的最后一个字段
或执行:
usermod -s Shell程序路径 用户名
最简单的shell编程就是shell命令的罗列:
my_prog
date
pwd
ls -l
abc
whoami
echo "My test messages"
脚本基本编写:
以"#"开头的行shell不执行,都是注释,但第一行是"#!"例外。
#!/bin/bash---指定脚本的shell
4.脚本的执行:
1.方式一:通过shell,调用脚本
bash /shell/my_prog
特点:脚本可以没有执行权限
2.方式二:有执行权限,缺省的shell或指定的shell("#!")
/shell/my_prog---输入脚本的绝对路径,执行脚本,前提要求:脚本必须有执行权限
cd /shell--进入脚本所在目录
./my_prog--- . 表示当前路径
说明:
系统中的shell是一个程序,为了实现多任务处理,shell在执行命令时,并不是自己执行,而是再调用另一个shell去执行,被调用的shell称为子shell。而调用用子shell的shell称为子shell的父shell。输入exit,可以退出shell。
3.方式三:不开启子shell,在当前shell中运行脚本
source /shell/my_prog--- source 表示当前shell
或. /shell/my_prog
cd /shell
. ./my_prog--- .前后有空格,表示当前shell,等同于source ; .后紧跟/,如: ./ 表示当前目录
观察子shell
ps -ejH
pstree
输入输出数据流:
标准输入stdin
标准输出stdout
错误输出stderr
文件描述符0 1 2
2.shell变量
shell变量是用来代表某个值的符号名,变量是shell传递数据的一种方法。
为灵活管理,Linux系统提供特定参数,<