ADB 全称Android Debug Bridge 是一个功能非常强大的工具,它位于Android SDK安装目录的platform-tools 子目录下,ADB工具即可完成模拟器文件与电脑文件的相互复制,也可安装APK应用,甚至可以直接切换到Android系统中执行部分linux命令
1、查看当前运行的模拟器,设备:
adb devices
2、切换adb shell终端为root用户:
adb root
3、链接adb tcp接口或者usb串口:
adb connect 192.168.10.252:5555 (tcp 5555端口)
adb connect 93048d8f
4、启动shell
adb -s 192.168.10.252:5555 shell
如果adb devices 下只有一个设备则只樱型需要:
adb shell 即可
5、安装apk文件
adb -s 192.168.10.252:5555 install [-r] [-s] [-t]<file>
-r 强制安装
-s 标示将APK包安装到SD卡上 默认是将APK安装到内部存储器上
-t 如果 团返 报错 Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI] 可以使用该参数
6、卸载apk
adb uninstall [-k] <package>
-k 标示只删除该应用程序,但保留该程序素有的数据和缓存目录。
7、重新挂载文件系统,用来可以读写system等目录
adb -s 192.168.10.252:5555 remount
or
mount -o remount rw/dev/block/mtdblock0/system /
8、复制文件到手机
adb push a.txt /sdcard/
9、拷贝文件到电脑
adb pull /sdcard/xyz.txt d:/
10、重启设备
adb -s 192.168.10.252:5555 reboot
11、重启设备到bootloader模式
adb -s 192.168.10.252:5555 reboot bootloader
12、启动指定的app的页面
adb -s 192.168.10.252:5555 shell am start -n com.android.settings/.Settings
com.android.settings 应用程序的包名
.Settings 类名(Activity)
13、模拟点击坐标
adb -s 10.0.0.245:5555 shell input tap 250 500
x:250 px Y:500 px
14、滑动触摸事件
adb -s 10.0.0.245:5555 shell input swipe 200 500 400 500
#向右滑塌颂饥动200像素
15、修改屏幕尺寸
adb -s 10.0.0.245:5555 wm size 1080x1920
#修改屏幕尺寸为1080x1920
adb -s 10.0.0.245:5555 wm size
#查看屏幕默认尺寸
❷ ADB常用命令大全
安卓调试桥(Android Debug Bridge),是Android SDK中的一个调试工具, 使用adb可以直接操作管理Android模拟器或Andriod真机设备,在开发测试过程中,起到调试的作用。
adb.exe的存放路径:Android-SDKplatform-tools
adb help //查看帮助
adb version //查看adb版本号
adb devices //查看设备
adb connect IP:port //连接设备
adb disconnect //断开连接的所有设备
adb disconnect IP:port //断开连接指定设备
adb root //获取root权限
adb remount //重新挂载文件系统(默认只读,执行命令后可写)
adb install Package //安装APK
adb install -r Package //强制覆盖安装
adb install -t Package //允许降级覆盖安装
adb install -d Package //允许测试包
adb uninstall PackageName //卸载APK
adb uninstall -k (keep) PackageName //保留用户数据卸载
adb pull //将设备文件文件发送到PC
adb push //将PC文件发送到设备
adb logcat -c //清空日志
adb logcat -v threadtime >D:111.log //抓日志并输出保存D:111.log
adb shell screencap /sdcard/screen.png //屏幕截图(并存放sdcard目录,命名screen.png)
adb shell screenrecord /sdcard/demo.mp4 //录制屏幕(Android4.4以上可用)
adb shell mpsys activity activities //查看activity信息
adb shell mpsys activity |findstr mResumedActivity //获取当前activity信息
adb shell mpsys window windows | findstr “Current” //查看当前app窗口activity
adb shell //进入设备内部
cd //切换目录
pwd //查看当前路径
ping //查看网络连接
rm* //删除目录下的所有文件
cp -r /path/filename /NewPath //拷贝文件
busybox find / -name FileName //查找文件
tcpmp -i any -p -s 0 -w /data/data/1111.pcap //抓取网络包
pm uninstall PackageName //卸载APK
pm path PackageName //查看APK存放位置
pm clear PackageName //清除APK缓存
mpsys package om.android.xxx //查看APK的具体信息
mpsys package om.android.xxx | grep version //查看APK版本
mpsys package com.tencent.mm | findstr versionName //查看APK版本
am start PackageName //拉起APK
am start -n com.android.xxx/.WelcomeActivity //直接拉起APK的指定WelcomeActivity
am start -a android.intent.action.VIEW -d http://www..com //拉起网络
am start -n om.android.xxx/.WelcomeActivity --es actionUrl "http://sns.is.xxxxx.com/CCTV/index.html?action=detail&object=5005153" //指定Activity上拉起H5
am force-stop + 报名 //杀死进程
kill `ps |grep -E "icntv|istv" | busybox awk '{print $2}'` //杀进程
md5 com.android.xxx //查看已安装应用MD5
busybox vi hispreinstall.sh //编辑文件(命令行)
chmod 777 /system/bin/hispreinstall.sh //修改权限
cat /system/build.prop | grep "proct" //查看设备信息
exit //退出shell交互模式
adb shell getprop ro.build.version.release //查看Android系统版本
adb get-serialno //获取手机序列号
adb shell mpsys package //列出所有安装应用的信息
adb shell pm list packages //查看设备中的所有应用的包名
adb shell cat/proc/cpuinfo //获取CPU型号等信息(HardWare后面是CPU型号)
adb shell "ps | grep packageName" //查指定程序pid
adb shell getprop //查看手机信息
adb shell getprop ro.serialno //查看手机序列号
adb shell cat /proc/cpuinfo //查看手机CPU信息
adb shell cat /proc/meminfo //查看手机内存信息
adb reboot recovery //重启手机到recovery刷机模式
adb reboot bootloader //重启手机到bootloader界面
adb shell mpsys battery //获取电池信息
adb shell mpsys battery set status 1 //设置手机进入非充电状态,为2设置充电状态
adb shell mpsys battery set level 100 //设置电量百分比
adb shell mpsys batterystats //获取整个设备的电量消耗信息
adb shell mpsys batterystats | more //综合电量消耗
adb shell mpsys batterystats com.android.xxx //获取某个apk的电量消耗信息
adb shell mpsys batterystats packageName | more //获取指定程序电量消耗信息
adb shell cat /proc/uid_stat/$PID/tcp_snd //发送的数据流量
adb shell cat /proc/uid_stat/$PID/tcp_rcv //接收的数据流量
procrank //查看内存
adb shell top | findstr com.android.xxx //查看指定APK内存
top -n 3 |grep -E "com.android.xxx|android.yyy" //查看内存
adb shell mpsys cpuinfo |findstr com.android.xxx //查看指定APK CPU
mpsys cpuinfo |grep -E "com.android.xxx|android.yyy" //查看CPU
adb shell settings put global http_proxy ip(PC):port(默认8888) //设置代理
adb shell settings get global http_proxy //查看代理
adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db //进入sqlite
delete from global where name in('global_http_proxy_host','global_http_proxy_port','http_proxy'); //移除代理
adb shell stop //关闭设备
adb shell start //开启设备
adb start-server //启动adb服务
adb kill-server //关闭adb服务
adb reboot //重启手机
adb shutdown //关闭手机
1、首次使用USB线连接Android手机,然后打开Terminal输入:adb tcpip 端口号(默认5555)
2、查看手机IP地址:设置->关于手机->状态信息->IP地址
3、通过adb连接ip地址:adb connect IP:port
❸ adb调试常用命令
1,adb服务
2,设备
3,重启
4,查看进程
5,查看系统当前内存使用情况
adb shell cat /proc/meminfo
6,Activity调试
(推荐一个Android Studio插件ADB idea)
1,安装apk
1,将电脑文件复制到设备sd卡上
adb push 电脑文件路径 /sdcard
2,设备文件复制到电脑上
adb pull /sdcard/text.txt 电脑文件路径
3,删除
adb shell rm /sdcard/text.txt
-f 强制删缺孙除文件不需要确认
-r 递归删除文件夹内文件
-i 删虚禅除文件前需要确认
4,创建目录
adb shell mkdir -p /sdcard/temp/test/
指定-p递归创建目录
5,创建文件
adb shell touch /sdcard/text.txt
6,复制文件
adb shell cp /sdcard/text.txt /sdcard/test/
7,移动文件
移动同一目录下的文件相当于重命名文件
adb shell mv /sdcard/1.txt /sdcard/2.txt
1,申请root权限
adb shell su
2,查看手机上所有的包名
adb shell cd data/data ls
3, Linux 多个命令行一起执行可以用 “;” 或者 “&&” 进行分割
cd data/data ; ls
4,adb shell查看文件后退出
exit 或者 Ctrl + D
5,adb shell命令下全盘查找特定名称文件的方法
busybox find -name “filename”
1,修改文件所有者命令
处理指定目录以及其子目录下的所有文件。
chown -R
如果加了-R。说明当前文件夹和子文件夹;
如果不加-R。说明仅仅针对当前文件夹;
chown [所有者][:[组]] 文件差扮尘
举例:chown mail:mail log2012.log
官方连接: https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn
原文连接: https://blog.csdn.net/weixin_35107169/article/details/112139876
❹ 常用的adb命令
在平时的工作中,会经常用到adb命令,在这里稍微整理了一下。
一.概要
1.什么是adb?
adb全称为Android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。
2.adb工作原理
不是很理解?那就来看看它的工作原理吧。
上图是一个简单的adb工作原理图。adb客户端服务器端程序,由上图可以看出它主要三个组件组成:Client,Server,Daemon。
(1)当你启动一个adb Client(客户端),Client首先会选确认是否已有一个adb
Server(服务器)进程在运行,如果没有,则会启动Server进程。此时,adb Server就会绑定本地的TCP端口5037,并监听adb
Client发来的命令。
(2)接着,Server将会扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦Server找到
了adb
daemon(守护程序),它将建立一个到该端口的连接,这样,我们就可以使用adb命令控制和访问模拟器或设备了。在这里,需注意的是任何模拟器或设备实例会取得两个连续的端口:一个偶数端口用来相应控制台的连接,和一个奇数端口用来响应adb连接。
3.adb的作用
借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
二.常用命令
这个部分主要介绍adb的使用方法和一些常用的命令。
设置adb环境:将android sdk工作目录添加到系统环境变量中,则可使用adb命令了。
1. adb devices
查看当前连接的设备(连接计算机的Android设备或者模拟器)。
2.adb install
adb install <apk文件路径>,将指定的apk安装到设备上,安装的apk包会放在/data/app目录下。
几个参数:
-r 强制安装
-d(真机,多个设备中只有一个真机时适用)
-e(模拟器,多个设备中只有一个模拟器时适用)
-s(指定设备,后接序列号)
adb –s 44a188f9 install –r test.apk(其中44a188f9即序列号,通过adb devices可获取)
3.adb uninstall
adb uninstall <apk包名>
adb uninstall –k <apk包名>
-k参数为卸载软件时保留配置和缓存文件
4.adb reboot
重启android设备
5.adb shell
通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。
如果只想执行一条shell命令,就可以采用:adb shell [shell_command]
在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。
6.adb shell su
前提手机已经root。获取adb shell的root权限。
使用su提权,用户命令提示符有$变成#,如果手机没有root,会提示su:permission denied。
7.adb shell ps/top
查看当前终端中的进程信息,如pid等。
8.adb shell am/pm
am全称为activity manager,可使用am命令模拟各种系统的行为,如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。
如:adb shell am start <apk包名>/<activityName>:启动一个activity。
pm全称为package manager,利用pm命令可模拟android行为或查询设备上的应用等。
如:adb shell pm list packages
列出当前设备所有已安装的程序的包名。
说明:
管道符“|”:可以把标准的输入流与标准的输出流进行合并,或者把某个命令的标准输出流作为另一个命令的标准输入流。
exit退出shell。
由于grep为linux命令,运行单条adb shell 时并没有进入linux
shell环境,并不能用grep等其他linux命令,只能用window cmd的命令。在这里可以用findstr来代替grep,使用方法为
findstr/grep [keyword]
更详细的内容可查看 参考文献3 和 参考文献4 。
对于常用的linux命令和常用的windows 控制台命令,以后再作总结。
9.adb pull 和 adb push
adb pull <设备中的文件路径> <本地路径>:从模拟器或设备中复制文件到本地。
adb push <本地文件路径> <设备中的路径>:将本地文件或目录复制到模拟器或设备。
这里还涉及到一个权限的问题,在后续的博文中再作介绍。
10.adb shell mpsys
Android提供的mpsys工具用于查看感兴趣的系统服务信息与状态。
参考下表:
11.adb shell monkey
跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android
app的稳定性。
如下为测试腾讯新闻apk的一个简单实例:
说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。
-p <apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多个包。
--throttle <毫秒数> 指定用户操作(事件)间的时延。
--ignore-crashes 指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。
--ignore-timeouts 当应用程序发生ANR错误时,Monkey依然会发送事件,直到事件计数完成。
第2个-s,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
-v 用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。
最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。
>输出测试结果到D:\monkeylog.txt
更详细的参数可查看 参考文献5 。
部分测试结果如下:
对于测试结果的分析,通过搜索关键词来定位错误,主要包括以下四个方面:
1)ANR(Application Not
Response):程序无响应,一般主线程超过5秒没处理就会出现ANR错误。通过搜索ANR关键词来定位关键的事件信息。除了导出日志外,还可以将/data/anr/目录下的trace.txt文件导出,用来定位分析问题。使用>adb
pull /data/anr/trace.txt d:\ 将trace.txt文件导出到d盘。
2)ForceClosed或其他异常退出信息:通过搜索Fatal关键词来定位。
3)崩溃问题:通过搜索Exception关键词来定位。
4)发生异常后,通过搜索Crash关键词来定位到详细的堆栈信息。
12.kill
kill用来中止一个进程。
比如我们在跑monkey的时候,怎么强制关闭monkey呢,可以用kill <monkey进程PID>
说明:另开启一个cmd,找到monkey的pid号,然后杀掉即可。
参考文献:
1.Android调试桥: http://www.iteye.com/topic/260042
2.Android性能分析工具mpsys的使用: http://www.open-open.com/lib/view/open1405061994872.html
3.adb shell 中的am pm命令: http://www.android100.org/html/201312/09/4957.html
4.adb shell 启动应用程序的方法: http://blog.chinaunix.net/uid-26997997-id-3350449.html
5.Monkey压力测试详解: http://blog.csdn.net/huangbiao86/article/details/8490743
❺ ADB常用命令
Android 调试桥 (adb) ,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端: 用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)
PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"
守护程序 (adbd): 用于在设备上运行命令。守护程序在每个设备上作为后台进程运行
执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep.
adb nodaemon server
服务器(Service): 用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行
adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps -ef | gref adb 可以查看service
一般都是通过这样子的格式 adb [-d|-e|-s <设备序列号>] <子命令>
通常只有一台设备就忽略 [-d|-e|-s ] 这一部分
这里介绍一些常用的命令:
获取设备列表及设备状态
获取设备的状态
注意:设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
结束 adb 服务
启动 adb 服务
注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。
打印 Android 的系统日志
打印 mpsys、mpstate、logcat 的输出,也是用于分析错误输出比较多
打印日志后重定向到一个文件中
安装应用,覆盖安装是使用 -r 选项
注意:有些adb版本无法支持安装中文的apk
查看手机应用包名
查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数
卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名
'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录
将 Android 设备上的文件或者文件夹复制到本地
adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log
推送本地文件至 Android 设备
获取连接到的手机的序列号
获取设备的连接状态
等待设备连接成功
该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。
其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。
Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。
如何在手机中执行Shell命令?
每次都加上adb shell来进行命令的发送与执行
先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。
使一个apk处于禁用状态,相当于卸载了:
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:adb shell su disable com.UCMobile/.main.UCMobile
同时我们在手机上发现,UC浏览器的图标不见了
让一个apk从禁用状态恢复过来
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:
adb shell su enable com.UCMobile/.main.UCMobile
同时我们从手机上发现,UC浏览器的图标又出现了。
查看一个apk所在的路径
adb shell pm path com.UCMobile
查看手机中装的所有的包
屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4
录屏设置时长10s,命名为demo.mp4
注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示
解决方法:
安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕
scrcpy -s device --render-expired-frames -Nr ./demo.pm4
--render-expired-frames:尽可能最大帧率
-N:不在PC端展示
-r:录制mp4/mkv文件
关闭设备请求,开启设备
设备关机以及重启
pm(package manager)可以获取一些安装到Android设备上的app的信息
pm list packages 用法:list packages [ options] filter
获取所有的应用的包名
列出系统应用
列出第三方应用
查看它们的关联文件
adb shell pm list package -f
查看软件包的安装来源
pm mp 包名 很多mp信息
安装应用
apk如果在电脑用 adb install
如果在Android设备上用 adb shell pm install
卸载应用,同adb uninstall ,后跟包名
清除应用数据
am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)
启动一个Activity
获取到package和launch_activity
AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity
这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;
启动华为系统相机
打开音乐播放器
播放指定音乐:
先停止目标应用,再启动
等待应用完成启动
启动网页(android.intent.action.VIEW具体参考Android官网)
结束应用
input
模拟输入,向获得焦点的EditText控件输入内容
返回主界面
发送一个点击操作的指令,参数是<x> <y>坐标
从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200
长按操作,在 100 100 位置长按 1000毫秒
❻ adb命令和linux命令
adb root 获取 root 权限。
adb sideload
adb shell ps 打印进程状态。
adb shell top 展现上层 CPU 进程信息。
adb shell getprop 获取 Android 系统服务属性
adb shell setprop 设置服务属性。
adb shell mpsys 获取系统数据。
adb logcat 打印日志文件
adb shell ip 主要用于显示一些数据
adb shell netstat 主要用于网络统计。
adb shell ping 没啥好说的,和 PC 的 ping 命令一样的。
adb shell netcfg 通过配置文件配置和管理网络连接。
adb shell cp 字面意思,很好理解,复制。
adb shell pwd 定位当前的操作位置
adb shell mv 移动或者更名文件
adb shell mkdir 创建一个文件夹
adb shell rm 删除文件或者目录
adb shell ls 列出目录内容。
adb shell pm clear 清除应用缓存。
adb shell pm path 打印 apk 的路径。
adb usb 设置设备以 USB 形式连接 PC
adb kill-server 终止 adb 进程。
adb forward 端口映射,将 PC 端的某端口数据重定向到手机端的一个端口。
adb devices 主要是用于打印当前连接的所有模拟器或者设备。
shutdown -h now 关闭系统
init 0 关闭系统
telinit 0 关闭系统
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启
reboot 重启
logout 注销
文件和目录
cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls [0-9] 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构
lstree 显示文件和目录由根目录开始的树形结构
mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
cp -r dir1 dir2 复制一个目录及子目录
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l 列出已知的编码