本篇主要是介绍安卓系统上的脚本,百度百科上对shell脚本的介绍是“Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。”我的理解就是,把一堆shell命令写在一个文件里,执行这个文件就等于执行这个文件里的命令,利用脚本,就不用每次都输入一样的一些命令,省心省时间。类似于Windows系统的批处理文件(*.bat)
安卓上脚本的格式(文件后缀名)有两种,一种是rc,一种是sh。rc脚本常见于系统根目录,除此之外我见过的脚本都是sh脚本。我个人是没有发现rc脚本和sh脚本除了后缀以外的其他差别。
编写和执行shell脚本,需要一个可以创建文件的软件(例如ES软件浏览器,rootexplorer等一系列文件管理器,手机自带文件管理器可能没有这种功能),编辑文本文件的软件(这个可选的软件也不少,我个人喜欢ES和rootexplorer),执行shell脚本的软件(据我所知,有这种功能的软件较少,只要是终端模拟器就一定可以,rootexplorer也可以),综上所述,rootexplorer包含了我们需要的功能,但我之前用rootexplorer执行shell脚本的时候发现rootexplor不能执行脚本,在有root权限的其他手机上可以执行脚本。rootexplorer在以下简称re。
首先是创建文件,创建一个空文件,文件名为*.sh,文件名最好是英文名。然后打开文件,首先在开头写上
#!/system/bin/sh
只有写上上面那一段脚本才有效。顺便讲下Linux对路径的表示方法,比如说手机内部存储空间,一般都是在根目录下一个叫storage的文件夹中的emulated的文件夹里面的一个叫0的文件夹(储存在内部存储空间的文件都在这个文件夹里,根目录一个叫sdcard的文件夹,和这个文件夹的内容是一样的,sdcard文件夹其实就是个链接,类似Windows的快捷方式),可能听起来会很绕,但如果是看路径可以很清楚的看懂,/storage/emulated/0(sdcard的路径为/sdcard)。路径的表示方法为第一个斜杠/表示根目录,/后面接上文件名,如果要表示的是文件夹里的文件,需要在文件夹名后面加/,以此类推。如果在一个文件夹里,可以用./来代表当前的路径,就不用多输入一长串路径。我在终端模拟器里省略了./来执行命令,发现没了./命令依然可以正常运行,我以前都是有加上./,发现可以省略后我就没有加上。平时可以尝试省略,不行再加上,我猜测有什么时候就需要加上./,不然加上./反而影响效率。
介绍下几个常用的命令,这些命令在终端模拟器里也能用,在终端模拟器里不需要加上“#!/system/bin/sh”。ls:查询所在目录(文件夹)下的全部文件,也可以在ls加一个空格再写上文件夹的路径,查询该文件夹下的所有文件。rm:删除文件,好像只能删除文件,对文件夹无效,在使用的时候我都是打上“rm -rf 再加上路径”强制删除文件或文件夹。cd:进入一个文件夹,用法是“cd 路径”,然后就进入那个文件夹,比如说我们要操作手机内置存储空间,先进入该文件夹,之后的命令就不需要加上一长串路径。sh:这个可能不是很常用,这个是用来执行脚本,我之前提到re在不root的情况下可能不能执行脚本,用“sh 脚本的路径”就可以执行脚本。touch:创建一个文件,用法是“touch 文件夹名”,这个我打算以后再出一篇专栏,谈一下QQ,到时会用到。cp:复制文件,用法是“cp 你要复制的文件或文件夹的路径 你要复制到的文件的路径”(可能空格会被看漏,所以我强调一下,所有的命令和路径中间都会加上空格)
回归主题,在“#!/system/bin/sh”后面加上换行符(重起一行)写上命令,写完一条命令后另起一行写下一条命令,以此类推。这样说可能理解起来难一些,举个例子,我的手机安装了不少软件,软件总会产生一些文件,我又用不到,就像删了他们,如图,
假设我想删掉那些隐藏的文件夹(文件夹前带.),我们可以写一个脚本,内容如下
#!/system/bin/sh
cd /storage/emulated/0
rm -rf .antutu
rm -rf .cc
rm -rf .com.taobao.dp
rm -rf .BD_SAPI_CACHE
rm -rf .DataStorage
rm -rf .estrongs
写完脚本后在终端里输入“sh 该脚本的路径”
只是举个例子,就没有必要全部写出来。脚本学起来可能枯燥乏味,我自己对此也不是很熟悉,但我觉得以上这些还是不难学的。这篇专栏是我分几次完成的,可能看起来有点乱。
我本来还想写一篇关于用脚本删掉一些文件的专栏,现在觉得没必要了,我打算再写一篇关于QQ的专栏,谈一下QQ产生的一些垃圾的清理和阻止QQ产生部分垃圾的方法,还有阻止QQ加载除系统字体以外的字体等等的方法,有兴趣的可以关注我。