Linux系统shell.docx_第1页
Linux系统shell.docx_第2页
Linux系统shell.docx_第3页
Linux系统shell.docx_第4页
Linux系统shell.docx_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文档模板01文档副标题文档标题文档模板01Version 1.02015-03-01DEV-07-0018Copyright2015 ZTEsoft Integration Runtime Environment日期编写/修改人版本记录2015-03-01IREVer 1.0创建日期审阅人版本密级状态意见2015-03-05IREVer 1.0内部公开发布无审阅文档控制页面编写/修改 BASH shell编程-飞翔 用户登陆Bash 先执行/etc/profile,在调用/.bash_profile注销Bash调用/.bash_logout环境设置文件.bash_history .bash_logout .bash_profile .bashrc如kde gnome icewm 等桌面管理程序时,执行终端程序或者抖动执行/bin/bash.或者在编辑程序中调用shell,会先执行/etc/profile 在调用/.bashrc我们知道变量设置规范后,后输入的设置值可以取代先输入的值,。那么我们登陆bash的时候,这些设置文件到到底是如何读取的了,他是这样读取的1、 先读取/etc/profile,在根据profile的内容读取其他附加的设置文件,例如/etc/profile.d和/etc/inputrc等设置文件2、 根据不同的用户,到家目录去读取/.bash_profile或者/.bash_login,或者/.profile 等设置文件3、 根据不同的用户,到家目录读取/.bashrc4、 登陆bash后,最终读取的设置文件室/.bashrc全局设置文件在/etc/profile 和/etc/bashrc个人自定义环境变量/.bash_profile登录时/.bashrc 执行新的shell时/.bash_logout 注销时一、Bash内置命令。由于不必在程序中区搜索路径$PATH,中寻找,直接就可以调用就行常见的内置命令Alias,bg,bind,break,continue,builtin,case cd,command,compgen,complete,declare,dirs,disown,echo ,eval,exec ,exit,export 等等Printf的详细参数%s 字符串%q 特殊字符用转义%c 字符%d 整数%f 浮点数%e 显示科学计数法%g 由bash选择使用%f或者%e%i和%d相同%o显示八进制数%x 显示无号十六进制,且是小写字母%X 显示无号十六进制,且是大写字母% 显示百分号例子1:首先建立一个printf.txt文件rootstation20 test# cat printf.txt NameChineseEnglishMathAverageDmtai80609277.33Vbird75558070.00Ken60907073.33常用的转义n 换行r 回行首t水平tabv 垂直tab单引号斜线b 退一位f 跳页0后接八进制:冒号什么都不做,传回真值0:test.txt建立一个空文件.半句点在现行的shell环境执行shell程序.与source 相同作用#alias 设置别名#unalias取消别名#exit 离开shell,并传回1#logout 注销shell或者ctl+d#umask 显示或者设定,文件,目录建立时,文件的权限屏蔽值。#history显示过去岑经执行过的shell指令#fc 列出登陆主机之后,最近执行过的命令#fc ln反向显示#type 判断bash对某一指令如何解释#set 用于设置bash shell的属性,set不加参数,表示会显示所有的shell变量和函数内容显示当前bashshell所有的属性的开关状态开启某一个属性以命令行修改的支持emacs为例子#set o emacs关闭某一个属性的话#set +o emacs开启后就会识别backspace了保护已存在的文件,避免转向输出时被覆盖掉文件内容#set C 或则set o noclobber限制覆盖#set +o noclobber如果变量不存在就显示错误信息#set u如果变量不存在,一线就是换回的错误信息,并传回值1#set v显示bash的每一行,这样有利于排错设定bash shell的行为模式#shopt的用法#shopt 或者shopt p 显示目前个选项的状态#shopt s 选项启用选项#shopt u选项关闭选项#shopt o 选项使用和set o相同的选项来设置#shopt q 选项不显示开关状态,0表示开启,非零表示关闭例子1、打开checksize 使bash在每一项指令执行后,检查窗口的大小,必要时更新行和列#shopt -s checkwinsize例子2、shopt -s extglob progcomp打开extglob 选项,如此一来,比较样式时,可使用比较能力较佳的语法 打开progcomp ,启用可程序化的补齐功能#time 统计real user,cpu3种耗时#time script或者指令#time ps aux #read 由标准输入读取一行数据如果在read后面没有指定接收数据的变量,则默认的变量名称为$REPLY 上述做法可以使用-p来达成-p 选项表示提示信息(echo 123 45 97 101 88) 是一种进程替换法#read也可以提读取文件资料行#read LINE datafile如果行之间的数据段室空格隔开的话就是用#read f1 f2 f3 f4 f5 f6 f7 datafile如果是其他分隔符#IFS=:#read f1 f2 f3 f4 f5 f6 f7 /etc/passwdRead在读取数据时,默认会去掉注意字符。如果想要保留的话-r#read r test#exec 执行指定的而程序,取代原来开的shell,或者是转向操作生效#exec 程序/命令#exec 专项操作#exec PS3 select 选单提示符,默认为#?PS4 追中程序时各行的样式,默认+、PWD 目前工作目录RANDOM 随基函数SECONDS 表示bash shell执行了多长时间25926秒REPLY select和read没有设定变量时,默认为REPLYSHELL shell文件路径SHLVL 表示运行的shell层级TIMEFORMAT 设定time统计运行的时间格式TIMEFORMAT默认格式为$nrealt%31nusert%31nsyst%31TMOUT 等待多少秒后,自动结束UID 用户代码2.4内部变量$1-$n 位置参数$0表示进程名称$* 代表所有得参数$ 代表个位置参数数组组成的串$#位置参数的个数$- bashshell目前使用的功能选项$? 上一个命令执行结束后的传回值,0成功,1失败$ 代表bash的进程编号$! 上一个后台程序的进程编号$_ 执行时,bash绝对路径,上一个命令执行时,最后一个参数,检查邮件时,$_的值为邮件文件名SHELL数学运算数组的用法使用数组时第一个元素为0开始,第n个为N-1欲显示或者取得某一个元素的值。语法为$数组索引值底下显示数组A的第二个元素#echo $A1取出数组所有的元素#echo $B或者适用于#echo $B*取得元素的个数#echo $#数组或者#数组*r若元素是字符串还可以用下面的语法取得长度#echo $#数组索引取消数组或者数组的元素#unset A若只想取消一个元素 #unset A32.5用户变量用户变量一般是用户在编写shell程序时或在命令行中,将经常使用的值,赋给一个用户变量,然后直接调用这个变量即可(变量名是以字母或下划线开头,通常字母是大写母) 。获取变量值 $变量名例:VARhello rhce ;赋值 echo $VAR ;显示变量值 用户可通过“unset ”来撤消某一个变量。2.7函数的用法roottestdb # vim getline.sh 1 #!/bin/bash 2 getline() 3 4 local i=0 本地变量 5 while read line 6 do 7 let +i 让i+1 8 done $file 使用转向, 让read 能由$file读取数据 9 echo $file total $i line 10 11 12 13 file=$1 14 getline 15 echo getline zhi xing wan bi 取消函数unset f functionLet 和declare的用法类似2.8流程控制if条件判断rootredhatlinux test# vim if01.sh#!/bin/bashif grep -q root /etc/passwd;then echo root is in psswdfi简易的if语法:if then elseif thenif 条件测试; then 命令区fi范例:范例:rootredhatlinux test# vim if02.sh #!/bin/bashif (210); thenecho true;fiif 条件测试; then 命令区1else 命令区2fi范例:rootredhatlinux test# vim if03.sh#!/bin/bashif -d /tmp ; then echo /tmp is exist;else echo /tmp is not exist;fiif的完整语法if 条件测试1; then command 1elif 条件测试2; then command 2else command 3fi范例:rootredhatlinux test# vim if04.sh#!/bin/bashdeclare -i a ba=$1; b=$2if (ab); then echo $a gre $belse echo $a eqa $bfi或者rootredhatlinux test# vim if04_1.sh#!/bin/bashdeclare -i a ba=$1; b=$2if let ab; then echo $a gre $belse echo $a equ $bfi也可以改写成为如下方式If 条件测试1then command 1elif 条件测试2then command 2elsecommand 3fi使用bash关键字判断使用内置命令test判断If test “test” “xyz” ;thenrootredhatlinux test# vim if05.sh#!/bin/bashif str xyz ; then echo string gre strelse echo string low strfi使用内置命令判断 与test语法相同可以替换rootredhatlinux test# vim if05.sh#!/bin/bashif test str xyz ; then echo string gre strelse echo string low strfi=右边表示存放的样式= for 循环for var in 串行do command 1donerootredhatlinux test# vim forsum.sh#!/bin/bashdeclare -i i sum for (i=1;i 10); then break;fiecho $sumdoneecho $sumwhile循环while 条件测试docommand done使用while 循环,读取文件内容#!/bin/bashwhile read linedo echo $linedone cvsfile 将cvsfile文件呢容转向输入,交给read读取范例:rootredhatlinux test# vim while01.sh#!/bin/bashdeclare -i i=1declare -i sum=0while (i=10)do let sum+=i; let +i;doneecho $sum#!/bin/bash

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论