编程语言系列(六)--shell语言基础知识点总结



从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作
Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了                          
由于易用和免费,Bash(Bourne Again Shell)在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell              
在一般情况下,人们并不区分 Bourne Shell和Bourne Again Shell,所以在一般的shell脚本文件开头,

#!/bin/sh 也可以改为#!/bin/bash    ????两者的差别和共同点 ??           
 
shell命令显示的文件类型:如: ps ,ls等显示的情况:
七种文件类型 :d 目录 , l 符号链接,s 套接字文件 ,b 块设备文件,c 字符设备文件,p 命名管道文件,- 普通文件

shell脚本中函数没有必要声明,但函数体的定义必须放在函数被执行语句的前面。


sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),
接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出
sed [options] 'command' file(s) 或者 sed [options] -f scriptfile file(s)

s/re/string  :s命令的使用模式,表示用string替换正则表达式re。
例如 :sed 's/My/You/g' datafile
#命令末端的g表示在行内进行全局替换,也就是说如果某行出现多个My,所有的My都被替换为You。

-i 参数 :直接在原文件上进行操作。如果不加-i参数,源文件不改变
  如:sed -i “s/My/You/” file.c  ,意思是将file.c文件里第一个匹配My替换为you。
my.* 表示my后面跟任意的字符(除换行符外)
^.*my 表示my前面跟任意字符(除换行符外)
  如:sed -i 's/bin\/gldcDaemon.*/bin\/gldcDaemon 2160 2160 1 0/g' init.rtd299xboard.rc
          bin/gldcDaemon 2160 2160 1 0 替换原来的bin/gldcDaemon开头的字符串
      sed -i 's/^.*EURASIA_3D_1080P.*/#EURASIA_3D_1080P=y/g' config.develop.android.jb.rtd299x.tv030.emmc.old


if [ -d /data/local/tmp ]; then        其中-d代表后面跟的是文件/data/local/tmp
   chown 2000:2000 /data/local/tmp
fi

if [ -e /data/realtek/noandroidrun ]; then  ,-e 文件存在  具体的if参数可以参考《shell经典教程》


command 1>./filename.txt 2>&1    执行command命令产生的所以log信息都会输出到文件filename.txt里面。 1代表标准输出stdout,2代表输出的警告或者错误信息stderr
2>&1表示输出的2信息会叠加到信息1中,不会覆盖(其中1系统默认)。如下:
make 1>./info.txt 2>&1  或者 make >./info.txt 2>&1

make >/dev/null 2>&1 这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃
1. > :代表重定向到哪里,例如:echo “test ” > /home/test.txt
2. /dev/null :代表空设备文件
3. 2> :表示stderr标准错误
4. & :表示等同于的意思,2>&1,表示2的输出重定向等同于1
5. 1 :表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于 “1>/dev/null”


shell脚本中的命令,一行一行的形式,相当于手动输入一行一行命令
每一行命令直接的变量值不能共享。要一行执行多条命令,可用 分号;分开,或者用&&,||等符号

形式:命令1 && 命令2
&&左边的命令(命令1)返回真(即返回0,成功被执行)后,右边的命令(命令2)才能够被执行


参考教程:shell经典教程  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值