Android手机Shell

Android手机Shell (2013-03-13 12:22:38)
标签: android shell linux 分类: 安卓手机
linux下的shell是功能非常强大的脚本语言,正像windows上的bat一样,可以简化很多繁重的重复性工作。而Android手机是基于linux系统下的操作系统,幸运的是它继承了linux的shell,因此我们也可以在Android的shell来做很多工作,不过前提是必须得安装busybox,至于命令的话可以在终端模拟器中直接执行,也可以写成以sh为后缀的脚本文件放在手机内存中用re文件管理器打开执行。
 
在Android中的shell第一行必须是#!/system/bin/sh
#在shell中是注释的意思,编译器不会处理。
 
svc wifi enable/disable #表示关闭wifi,开启的话是svc wifi enable/enable。
svc data enable/disable #表示关闭GPRS。
 
reboot命令是重启,用之前需要用su命令获取root权限。
reboot -p 关机
reboot recovery 重启进入recovery模式。
 
变量:
shell中的变量是弱类型的,用之前不用声明,但引用的变量值时候要加$,例如计算a+1要这样写:a=$a+1;
 
read命令:
shell中也可以让用户输入一个数据,在计算。用read来让用户输入数据。如:
read a;echo $a #表示输入一个数给变量a,在输出a的值。
read也可以输入一个数组,例如:
read a
for i in $a
do
    echo $i
done
 
数学计算:
在shell中可以用let命令来进行数学计算,如:let "a=$a+1"就相当于C语言中的a=a+1.
let "var=$var1+var2"表示两个变量相加。
此外也可以用expr来进行计算,expr $[$var1+$var2]表示两个变量相加,效果与上面相同。
 
for:
Android中的shell也可以使用for循环语句,如:
for ((i=1;i<10;i++))
do
#代码#
done
表示从一到十
for name in `ls`
表示获取当前文件夹中的所有文件名,把文件名传递给name变量。注意ls表示获取当前文件夹下的文件名列表,ls本身就是一个命令,所以要加`,`是tab键上方的那个键,加了`表示ls的执行结果。
shell中的for语句非常灵活,还有很多种用法,不再列举。
 
此外,还有while循环,例如计算从一加到十:
while((a<10))
 do
    let "a=$a+1"
    echo $a
done
 
|通道命令:
|为通道,就是把前面命令的执行结果传递给后面的命令,后面的命令在此结果的执行基础上再执行。
例如:ls | grep music表示查询当前目录下是否有music文件或文件夹,如果有的话显示music,如果没有的话没有显示。
 
mount -o remount /dev/block/mtdblockX /system
它的意思是把手机上的system文件夹挂载为只读,代码中的mtdblockX中的X是一个数,表示system在哪个块。例如我的手机就是mount -o remount /dev/block/mtdblock3 /system。你可以用mount | grep system来查看你的手机system文件夹的挂载情况。而且也能查看system文件夹的挂载位置,即在哪个块。如果后面为ro即是只读,如果为rw即为读写。mount | grep system代码的意思就是用mount是查看手机的个文件夹的挂载情况,然后把结果传递给grep命令,grep命令再在结果中查询出含有system关键字的项,然后显示出来。
要想挂载为读写,可以这样写:
mount -o remount,ro /dev/block/mtdblockX /system
 
字符串处理:
Android的busybox中还有一些强大的字符串处理工具如sed,awk等。如:
var1=`echo $var | sed /s/apk/odex/`
echo $var1    #表示把字符串$var中的apk替换为odex,注意:等号后面和末尾要加`.
 
var1=`echo $var | awk -F . '{print $1,$2}'`
echo $var1  #作用同上
 
光看教程是没有用的,还得多做一些实际操作,这样才能对各个命令有跟深的了解。
##################################################################################################
#!/system/bin/sh
#
cd /sdcard/apk
for name in `ls` #获取APK文件名
do
odex=`echo $name | sed s/.apk/.odex/`  #获取odex文件名
dexopt-wrapper $name /system/app/$odex  #制作odex文件
cp /sdcard/apk/$name /system/app/$name  #复制APK文件到系统目录
chmod 644 /system/app/$name  #修改APK文件权限
chmod 644 /system/app/$odex  #修改odex文件的权限
done
这段代码是批量在手机上生成odex文件。odex是从apk中提取出来的可运行文件,从apk中提取出odex文件可以加快启动速度,减少对RAM的占用,因为没有odex的话,系统也要从apk包中提取dex再运行。
用的时候,现在sdcard上建立一个名为APK的文件夹,把要制作odex的.apk文件放在这个文件夹下。当然也可以修改代码,制作适合自己的。
复制把以上代码(由于windows与linux编码不一样,最好在手机上操作),存为一个后缀为.sh的文件中,把该文件放在手机内存上(不能放卡上)。
打开re文件管理器,然后设置为可读写,找到这个文件,点击运行就可以了。也可以用其他软件打开,如终端模拟器,但必须有高级权限。
此教程只适用于G8手机的2.3.7系统,如果没有dexopt-wrapper 文件的自己去论坛上下。
 
##################################################################################################
#!/system/bin/sh
a=0
b=0
c=0
d=0
cd /sdcard/DCIM/
for i in `ls`
do
 name=`echo $i|awk -F . '{print $2}'`
 mv $i $a$b$c$d"."$name
 let "d=$d+1"
 let "d=$d"
 if [ $d = 0 ];then
  let "c=$c+1"
  let "c=$c"
  if [ $c = 0 ];then
   let "b=$b+1"
   let "b=$b"
   if [ $b = 0 ];then 
    let "a=$a+1"
    let "a=$a"
   fi
  fi
 fi
done
这段代码是修改某文件夹下的文件名为00000,00001,00002......形式的,便于管理。
用法:把代码复制下来存为sh文件(注意编码格式),然后用re管理器或终端打开即可。可以自己修改代码来决定重命名的文件。

### 回答1: Android ADB ShellAndroid Debug Bridge的缩写,旨在提供与Android设备之间的连接和调试,是Android开发的重要工具之一。使用ADB Shell可以直接在手机上执行Linux命令,而无需连接到PC上进行操作。 常用的ADB Shell命令有: 1. adb shell ls:列出当前目录下所有文件和文件夹; 2. adb shell ps:查看当前正在运行的进程; 3. adb shell cd:进入指定目录; 4. adb shell pwd:显示当前所在的目录; 5. adb shell rm:删除指定文件或目录; 6. adb shell mkdir:创建目录; 7. adb shell mv:移动或重命名文件或目录; 8. adb shell top:查看系统状态和资源情况。 此外,ADB Shell还可以用于发送广播、启动Activity、查看日志等操作,具有丰富的功能。需要注意的是,使用ADB Shell需要先将Android设备连接到PC并开启USB调试模式,否则无法正常执行命令。 总之,ADB ShellAndroid开发和调试必须要掌握的工具之一,对于改善开发体验和提高开发效率会起到至关重要的作用。 ### 回答2: Android adb shell指令是在Android开发中非常常用的一种工具。它可以连接到Android设备并对设备进行控制和管理。在使用这些指令前,需要先保证已经安装了Android SDK,并且将其添加到了系统的PATH中。 其中,adb shell命令是进入设备命令控制台的主要指令,可以通过这个命令进入设备的内部命令行环境,从而实现一些需要在命令行环境中操作的任务。比如: 1. 查看设备的文件系统:可以通过adb shell命令进入设备的内部命令行环境,并使用ls命令、cat命令、cd命令等来查看、打印、切换设备的文件系统。 2. 安装和卸载应用程序:可以通过adb install命令来将apk包安装到设备上,并使用adb uninstall命令卸载应用程序。 3. 查看设备的IP地址:可以通过adb shell ip命令来查看设备的IP地址和MAC地址。 4. 启动Activity:可以通过adb shell am命令启动Activity,从而实现模拟用户点击和操作的功能。 5. 清除应用数据:可以使用adb shell pm命令清除应用程序的数据,来实现数据清除的功能。 此外,还有一些其他的adb shell指令,比如adb shell dumpsys命令可以获取设备的系统信息、adb shell screencap命令可以截取设备的屏幕、adb shell input命令可以模拟用户操作输入等等。这些指令都能够提高开发效率,让开发者更方便地管理和调试Android设备。 ### 回答3: Android的开发者工具软件包中,有一个重要的组件——adb(Android Debug Bridge),它被设计为一种模拟器上的调试工具,同时它也能够工作在真实的Android设备上。 adb是一个命令行工具,可以提供许多实用的功能,包括文件上传下载、设备状态监测、安装和卸载应用、执行Shell命令等等。 其中,adb shell指令是adb中最强大的一项指令,它可以帮助我们直接在设备上执行命令,操作设备上的文件、目录和进程等等。以下是几个常用的adb shell指令: 1. ls ls指令用来列出当前目录下的文件和文件夹,常用参数有: ls -a :列出目录下所有文件和文件夹,包括隐藏文件 ls -l :以详细的形式列出目录下的所有文件和文件夹,包括文件的属性和权限 2. cd cd指令用来进入指定的目录,可以使用绝对路径或相对路径: cd /sdcard :进入sdcard目录 cd .. :返回上一级目录 3. mkdir mkdir指令用来创建文件夹,使用方式: mkdir FolderName :创建名为FolderName的文件夹 4. rm rm指令用来删除文件或文件夹,使用方式: rm FileName :删除指定的文件 rm -r Folder :删除整个文件夹及其内容 5. ps ps指令用来列出设备上正在运行的进程,使用方式: ps :列出所有进程 ps | grep Keyword :列出包含关键字“Keyword”的进程 以上只是adb shell指令的部分功能,还有许多高级操作需要深入研究和学习。总之,adb shell指令在Android开发和调试中非常实用,可以提高效率和便捷性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值