1、Shell基础编程培训(一) 陈睿2012.8,培训主题,1.1什么是Shell?,Shell是核心程序(kernel)之外的指令解析器,是一个程序,同时是一种命令和程序设计语言。 Shell的类型ash、bash、ksh、csh、tcsh、sh /etc/shells echo $SHELL 程序在Shell中运行 Shell中可运行子Shell,1.1什么是Shell?,本小节涉及的LINUX基础命令如下: ls 查询文件及目录 信息,并打印 echo $SHELL 显示 SHELL标准变量 cat /etc/shells 将/etc/shells文件全部打印 exit 退出当前用户或退出
2、SHELL程序 history 追踪当前用户所使用过的操作日志(默认记录1000条信息),1.2存取权限与安全,文件和目录的权限(-rwxr-r-) chmod ugo file chown和chgrp(chown user file /chgrp group file) umask(umask nnn) 符号链接(ln -s source_path target_path) useradd username passwd username groupadd groupname,1.2存取权限与安全,本小节涉及的LINUX基础命令如下: chmod whooperatorpermission
3、filename 改变文件或目录访问权限 chown 和chgrp chown改变文件或目录的属主或属主和属组权限 chgrp改变文件或目录的属组权限 ln -s source_path target_path 硬链接,占空间 软链接,不占空间,相当windows快捷方式 umask配置环境文件及目录权限初始等级“/etc/profile”,系统默认umask 022 useradd 建立系统用户,”删除用户(userdel)” groupadd 建立用户组,”删除用户组(groupdel)”,umask等级表,2.1使用Shell脚本的原因,功能强大 节约时间,2.2shell脚本基本元素,
4、#!/bin/bash 第一行 # 表示注释 变量 流程控制结构,2.3Shell脚本运行方式,例子:helloworld.sh vi helloworld.sh #!/bin/bash #这是一个打印“helloworld”的shell脚本 echo “hello world!”chmod u+x hellworld.sh ./hellworld.sh,2.4Shell特性,别名 管道 命令替换 重定向 后台处理 模式匹配 特殊字符 变量,2.4.1别名,alias 查看当前用户所使用的别名 alias ls=ls -color=auto 添加ls别名 unalias ls 去除ls别名,2
5、.4.2管道,把一个命令的输出连接到另一个命令的输入(“|”) ls |sort 查询当前目录 及文件并进行排序 ls -al |grep - 查询当前目录下的文件,2.4.3命令替换,ls cat myfile -al 显示myfile文件并赋于给ls命令的输出。dirname cat wlh.txt |grep “.java“ 显示wlh.txt输出.java文件的路径,2.4.4重定向,cat myfile test.txt myfile文件内容重定向到test.txt文件中 sort myfile myfile文件内容重定向赋给sort命令,2.4.5后台处理,什么是后台? 一个终端可
6、以同时运行多个程序 nohup command &nohup tar -cvf opt.tar.gz opt/ & 后台处理Bank目录进行打包,包名是Bank.tar.gz jobs 通过jobs命令进行查询后台运行的程序 ps -aux |grep “opt.tar.gz” ps查看与opt.tar.gz相关的所有进程(aux参数:a是显示所有进程,并输出所有命令路径) kill -9 command 强制终止进程 killall command 强制终止所有指定进程,2.4.6模式匹配,查找扩展名为txt的文件 例: ls *.txt查找当前目录下所有*.sh的文件 find . nam
7、e “*.sh”,2.4.7特殊字符,双引号(“):用来使Shell无法认出空格、制表符和其它大多数字符 单引号():用来使Shell无法认出所有特殊字符 反引号():用来替换命令 反斜杆():用来使Shell无法认出的特殊字符,使其后失去了特殊的含义,如David Medinetstouch David Medinetsls David Medinets,2.4.7特殊字符(续),分号(;):允许在一行上执行多个命令 &:命令后台执行 大括号:创建命令块 坚杆(|):管道表示符 :表示重定向 *?!:表示模式匹配 $:变量名的开头 #:表示注释 空格,制表符(t),换行符(n):当作空白,3
8、、Shell简单脚本,实例1:给当前目录下*.sh文件赋与”用户”读+写+执行权限,”用户组”读+执行权限,”其它用户”读权限 ,并“查询”当前目录下*.sh文件,显示出来详细的文件信息。 实例2:“查找”目录下的*.txt文件,显示其*.txt文件路径,并将*.txt文件内容显示出来。 实例3:“显示”“hello world”字符,并将字符内容重定向到“aa.txt”文件中 实例4:建立“test用户”,显示“myfile”文件全部内容,将myfile里记录的文件赋于给test用户。,3、Shell简单脚本,实例1: #!/bin/bash #在当前目录下给*.sh赋权限,并查询*.sh详
9、细的文件信息 chmod 754 ./*.sh;ls -al ./*.sh实例2: #!/bin/bash #查找目录下*.txt文件,并将文件内容显示出来。 find . -name “*.txt“ -exec cat ;,实例3: #!/bin/bash #显示“hello world”,并将字符内容重定向到“test.txt”文件中 echo “hello world“ aa.txt实例4: #!/bin/bash #建立test用户,显示“myfile”文件内容,将myfile里记录的文件赋于给test用户 useradd test;chown test cat myfile,培训结束 谢谢!,