飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3448|回复: 3

[macOS] Mac的一些Bash操作整理

[复制链接]
  • TA的每日心情
    慵懒
    2023-3-22 10:20
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2018-8-6 15:59:29 | 显示全部楼层 |阅读模式
    本帖最后由 Rayor 于 2018-8-6 16:19 编辑

    第一次发帖,展示格式花了些时间,但还是不够,以后会更规范的哈!
    security
    Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app)。钥匙串实质上就是一个用于存放证书、密钥、密码等安全认证实体的仓库,在计算机中保存为一个.kenchain的文件,解析mobileprovision文件信息cms  编码或解码CMS信息(PKCS#7)

    [Bash shell] 纯文本查看 复制代码
    # 查看当前mobileprovision里面的信息,有teamID BundleId supportDevices
    security cms -D -i xxxx.mobileprovision

    查找认证实体证书(证书+私钥)security find-identitycodesign签名操作先找到需要使用到的签名信息
    [Bash shell] 纯文本查看 复制代码
    security find-identity
    # 1) 21C1F11A2B3875070FA242210FB714138A4790XX "iPhone Developer: xxxx (XXXXXUH6E9)"
    # 2) 7F3DE721EB331F478E55345E3D213E313D14218E "iPhone Developer: Rayor (6CXXXXG523)"
    


    使用codesign进行签名
    [Bash shell] 纯文本查看 复制代码
    codesign -s '21C1F11A2B3875070FA242210FB714138A4790XX' testDemo.app
    # 或
    codesign -s 'iPhone Developer: Rayor (XXXXXUH6E9)'
    


    重签名
    通过重签名来覆盖之前签名信息,可以先将.app中的_CodeSignature文件夹删除, entitlements必须要有,否则会出现加密偏移信息不一
    [Bash shell] 纯文本查看 复制代码
    codesign -fs '21C1F11A2B3875070FA242210FB714138A4790XX' 
    --entitlements entitlements.plist 
    testDemo.app


    查看签名信息
    [Bash shell] 纯文本查看 复制代码
    # -vv verify verbose -d display  详细展示签名的信息
    codesign -vv -d TestDemoTask.app


    压缩成ipa包
    [Bash shell] 纯文本查看 复制代码
    # 会自动生成一个Payload文件夹
    # -r 递归操作 -q静态操作
    zip -r -q YiShou.ipa Payload -v YiShou.app


    ibtool使用
    编译、打印、更新和验证interface Builder文件
    在编译过程中,我们会对storyboard/xib/[.strings]文件进行编译,将其处理成nib文件,然后再进行
    [Bash shell] 纯文本查看 复制代码
    # 将xib编译成nib文件 
    ibtool --compile FMLaundAdView.nib FMLaundAdView.xib       


    defaults
    获取用户默认设置可以查看并编辑用户默认信息
    [Bash shell] 纯文本查看 复制代码
    # 修改默认显示隐藏的文件信息, 执行完成后杀掉文件夹进程
    defaults write com.apple.finder AppleShowAllFiles -bool TRUE; killall Finder

    defaults 一般用于使用修改系统自定义专用,如果单纯只是修改plist还是使用plistBuddy

    nm
    nm 命令被用于显示 用于二进制目标文件的符号表
    [Bash shell] 纯文本查看 复制代码
    nm xxxx
    # -A 行首显示文件名
    # -D 显示动态符号
    # -g 仅显示外部符号
    # -r 反序显示符号表示例
    nm IDFou | more
    
    00000001000020f0 t -[AppDelegate setWindow:]
    00000001000020d0 t -[AppDelegate window]
    0000000100004460 t -[CornerView .cxx_destruct]
    

    nm 显示的信息有三列: 内存地址  符号类型   符号名称
    符号类型
    对于每一个符号来说,如果类型是小写的,则表明符号是local;大写的则表明符号是global的;以下为几个常用的
    A 该符号的值在今后的链接中将不再改变;
    B 该符号放在BSS段中,通常是那些未初始化的全局变量;
    D 该符号放在普通的数据段中,通常是那些已经初始化的全局变量;
    T 该符号放在代码段中,通常是那些全局非静态函数;
    U 该符号未定义过,需要自其他对象文件中链接进来;
    W 未明确指定的弱链接符号;同链接的其他对象文件中有它的定义就用上,否则就用一个系统特别指定的默认值符号查找

    查找arm64架构下的XXXX符号

    [Bash shell] 纯文本查看 复制代码
    nm TestDemo -arch arm64 | grep "XXXX"


    file
    查看文件类型

    [Bash shell] 纯文本查看 复制代码
    file TestDemoTask
    # TestDemoTask: Mach-O 64-bit executable x86_64
    
    # 不显示文件名
    file -b TestDemoTask
    # Mach-O 64-bit executable x86_64

    plutil
    plist 操作工具可以用来打印plist信息
    [Bash shell] 纯文本查看 复制代码
    plutil -p xxx.plistPlistBuddy
    # 使用plistBuddy可以对plist进行编辑操作
    sudo /usr/libexec/PlistBuddy -c "set :CFBundleIdentifier 23423.com.song.haha" Info.plist







    评分

    参与人数 1威望 +20 飘云币 +20 收起 理由
    tree_fly + 20 + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-6 11:41
  • 签到天数: 1827 天

    [LV.Master]伴坛终老

    发表于 2018-8-12 10:36:49 | 显示全部楼层
    小白前来学习关注!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-22 23:57
  • 签到天数: 174 天

    [LV.7]常住居民III

    发表于 2019-2-28 16:56:25 | 显示全部楼层
    感谢楼主分享!学习啦!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表