一.linux shell 是什么?
>
官方:
Shell是
系统
的
用户界面
,提供了用户与
内核
进行交互操作的一种
接口
。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令
解释器
,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他
应用程序
具有同样的效果。Linux提供了像
Microsoft
Windows
那样的可视的命令输入界面--
X Window
的
图形用户界面
(
GUI
)。它提供了很多
桌面环境
系统,其操作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。现在比较流行的桌面环境系统是
KDE
和
GNOME
。 每个
Linux
系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。 同Linux本身一样,Shell也有多种不同的版本。目前主要有下列版本的Shell: Bourne Shell:是
贝尔实验室
开发的。BASH:是
GNU
的Bourne Again Shell,是GNU
操作系统
上默认的shell。Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。 C Shell:是SUN公司Shell的BSD版本。
>
自己:shell是把很多linux命令写成脚本进行批处理的一个工具
二.linux shell 基本结构是什么?
1.基础 #!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本 # //shell脚本注释符号 2.变量和使用 HOME="/home" //注意赋值不要有空格 a=123 HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量 ehco $HOME //$ 符号是获得变量HOME的值 a=a+1 系统变量: $0 这个程序的执行名字 $n 这个程序的第n个参数值,n=1...9 $* 这个程序的所有参数 $# 这个程序的参数个数 $$ 这个程序的PID $! 执行上一个背景指令的PID $? 上一个指令的返回值 3.if语句 if [ "22" -lt "33" ];then //注意空格 echo "22 less than 33" else echo "no" fi //if语句的结束 4.case语句 echo "enter a number" read ans //读取一个变量read case $ans in 1) echo "you numer is $ans" ;; //注意符号是两个 ; 2) echo "you number is 2" ;; [3-9]) echo "you number is $ans" ;; *) //*通配符 echo "others" esac 5.比较运算符 运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ] -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ] -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ] -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ] -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ] -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ] filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ] filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ] 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法) -z string 如果 string 长度为零,则为真 [ -z "$myvar" ] -n string 如果 string 长度非零,则为真 [ -n "$myvar" ] string1 = string2 如果 string1 与 string2 相同,则为真 [ "$myvar" = "one two three" ] string1 != string2 如果 string1 与 string2 不同,则为真 [ "$myvar" != "one two three" ] 算术比较运算符 num1 -eq num2 等于 [ 3 -eq $mynum ] num1 -ne num2 不等于 [ 3 -ne $mynum ] num1 -lt num2 小于 [ 3 -lt $mynum ] num1 -le num2 小于或等于 [ 3 -le $mynum ] num1 -gt num2 大于 [ 3 -gt $mynum ] num1 -ge num2 大于或等于 [ 3 -ge $mynum ]
6.bash中几种循环 6.1. for name [ in word ] ; do list ; done 6.2. for (( expr1 ; expr2 ; expr3 )) ; do list ; done //注意有2层括号 6.3 while [expr] do list; done 其中list简单说就是一串由操作符(operator ;、&、&&、||) 分各给出一个简单例子: 1.for filename in $(ls) do cat $filename done 2.for((i=0; i<10; i++)) do echo $i done 3. x=1 sum=0 while [ $x -le 10 ] //注意[ ] 两边的空格 do let sum=sum+$x //shell中算术计算使用let let x=x+1 done echo $sum
三.linux shell 元字符、通配符、转义符.
说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例:
从上面这个实例,不知道大家有没有发现问题呢。我们先了解一下,通配符相关知识,再分析下这个实例吧。 1、linux shell通配符(wildcard)
2、shell元字符(特殊字符 Meta)
4、shell解析脚本的过程
|