Make iPhone your workstation

    Cydia Apps

    • OpenSSH: 建立 SSH 连接,修改默认 root 密码 ( alphine )
    • APT 0.6 Transitional: apt-get 包管理工具
      • apt-cache search <pkg-name> 查找软件包
      • apt-cache show <pkg-name> 显示软件包信息
      • apt-get remove <pkg-name> 删除已安装的软件包
      • apt-get purge <pkg-name> 删除已安装的软件包及配置文件
      • apt-get autoremove 删除不需要的软件包(通常是由于依赖关系而安装)
      • apt-get autoclean 删除已卸载的软件包的 .deb 档
      • dpkg --get-selections | grep <pkg-name> 搜索已安装的软件包
      • dpkg -s/-L <pkg-name> 查看已安装的包信息/路径
    • Gawk / Vim / open / MobileTerminal
    • Sqlite3: DB 相关操作
      • 将 DB 转储到 ASCII 文本文件:echo .dump | sqlite file.db > file.dump
      • 重新构建数据库:cat file.dump | sqlite3 file_new.db
      • 进入 Sqlite3 后,使查询语句结果打印更直观:.headers on.mode column
    • adv-cmds: ps, finger, last, lsvfs
    • lsof:
      • 列出指定文件/设备/目录下被打开的文件:lsof /var/mobile/
      • 指定 PID,查看该进程打开的文件:lsof -p 1234
      • 查看指定端口有哪些进程在使用:lsof -i:22
      • 列出所有的 TCP/UDP 连接:lsof -i tcp/udp
      • 查看指定用户打开的文件:lsof -u mobile
    • shell-cmds: killall, time, which
      • 重启 Springboard:killall -HUP SpringBoard(或 sbreload
    • Core Utilities: 提供了 dirname, kill, mktemp, su
    • inetutils: ping, ftp 客户端/服务端
    • network-cmds: ifconfig, netstat, arp, route, traceroute
    • readline: 方便命令行移动
      • ctrl+r 搜索
      • ctrl+a/e 移动到行首/尾
      • ctrl+u/k 删除到行首/尾
      • ctrl+l 清屏
    • ipainstaller: 通过命令行安装 ipa 应用
    • plutil ( Erica Utilities ):
      • 支持设备上对 plist 文件进行操作,plutil -show file.plist
    • strings ( Binutils ):
      • 打印某个文件的可打印字符串,如可用来查看浏览器 Cookies 文件内容

    命令示例

    由于 iOS App 运行在沙箱中,找到 App 具体的安装路径:

    cd /var/mobile/Applications
    my_dir=$(dirname `find . -name 'test.app'`)
    cd $my_dir
    

    打印 Info.plist 中的 Bundle Version 字段

    plist="my.app/Info.plist"
    version=$(plutil -show $plist 2>&1 | grep 'CFBundleVersion' | cut -d"\"" -f2)
    

    通过 dpkg-query 打印所有安装的软件包及大小、并排序,最后通过 awk 计算总大小

    dpkg-query -Wf '{$Install-size}\t${Package}\n' | sort -n | awk '{sum += $1; print} END {print sum, "total"}'
    

    参考资料