终端控制码表by沨鸾
建议先用printf/echo -e测试下。更改光标风格,仅在Termux有效:
123"\e[2 q""\e[6 q""\e[4 q"
输出RGB颜色,TTY下无效:
12"\033[38;2;<R>;<G>;<B>m" #前景"\033[48;2;<R>;<G>;<B>m" #背景
256色:
12"\033[38;5;<num>m" #前景"\033[48;5;<num>m" #背景
常见:
12345678910111213141516"\n" #换行"\b" #光标退格"\a" #响铃(手机是震动)"\033c" #清屏"\033[?25l" #隐藏光标& ...
Re:从零开始的容器安全——ruri开发笔记
前言:ruriv2.0刚发了rc1(现在是3.1-rc1了都),之前一直咕咕咕着的开发笔记差不多也该写写了喵~笔记主要讲容器及安全原理,使用C语言实现。头图是项目最早的版本,真是怀念呢喵,那时候咱连数组都不会用,现在ruri代码都突破4k行了。
容器基本原理:Linux挂载点/设备文件:众嗦粥汁,Linux下的/proc,/sys与/dev均在开机时由init或其子服务创建,部分系统同时会将/tmp挂载为tmpfs,它们都需要被手动挂载到容器才可保证容器中程序正常运行。其中,/proc为procfs,/sys为sysfs,/dev为tmpfs。你还需要在容器中创建/dev下的设备节点文件。部分文章在创建chroot/unshare容器时都会直接映射宿主机的/dev目录,这是十分危险的,正确的做法是参照docker容器默认创建的设备文件列表去手动创建这些节点。当然了,docker也会将/sys下部分目录挂载为只读,ruri借鉴了其挂载点,详情可以去看ruri ...
开源项目规范化指北
前言:又是迟来的更新喵~说实话咱自ruri开始开发以来就一直在想规范化问题了,虽然大概率不会有人帮咱写代码,(termux-container拆成三个项目结果都是咱自己维护可真寂寞),不过一个规范的项目自己看着也会心情愉悦嘛喵~话不多说咱还是开始今天的正文。(虽然可能会很水)
项目使用方法规范化:尤其对于只有命令行的项目,一个易懂的命令格式/调用方法十分重要。曾有人问过,如果有人对Qemu说:“你不觉得自己的使用方法很难吗?”,Qemu会如何回答?博主:“我又没让你用”。可那只是因为它是Qemu,要是咱写的东西需要这么复杂的命令行,估计这辈子都没人用了喵呜~所以,建议还是Keep it simple&stupid吧(可不是像archlinux一样直接拒绝萌新使用啊喵!!!)
文档规范化:如果是在Gayhub这种国际社区发布,墙裂建议默认Readme为英文文档(机翻就算了,老外自己有谷歌翻译的说)。当然国内社区的话随意。但文档内容一定要说明重点,如项目介绍,使用方法,使用的外部项目等。
选择合适的许可证:自己写的代码的话随意,如果有 ...
在Linux下优雅的调试C语言
最近在开发ruri时遇到不少问题,咱也是第一次写C,早知道头顶这么发凉就去用某邪教了呜喵~至于学习C语言的心得嘛,
123456789陷入无法察觉的overflow沦落于oom-killer之下的死尸就连无法看懂的魔数也错以为是莫名能跑的奇迹被泄漏的内存所填满内核惶恐逐渐失去的可维护性终于咕咕而终「bug还在↗↘↗↘↗↘↗➔➔↘↘」
(高速退学)好了好了,C语言还是有许多优点的,只是可能入门成本高些罢了,如果善用测试工具的话还是没有那么糟糕的,话不多说我们开始今天的正文。
首要前提:代码没bug的就不要调试了,编程第一法则不就是能跑的代码不要动嘛喵~过早的优化是万恶之源,测试时不要开-O2,且尽量使用-O0 -fno-omit-frame-pointer -z norelro -z execstack -no-pie -fno-stack-protector -Wall -Wextra -pedantic -Wconversion来测试。至于O3。。。除非编码特别规范否则几乎是炸屎。那如果有bug呢?首先得能过编译器,编译器都报error的代 ...
浅谈android设备sysfs接口硬件调用之手电筒,马达,呼吸灯
这篇文章我们来介绍下几个sysfs接口的调用。事实上,驱动接口一般有两种方式调用:ioctl()和read()/write()。前一种要么能读懂内核源码,要么照抄strace用户空间驱动得到的调用,因此不做研究。需要注意的是,由于安卓内核碎片化过于严重,各个厂商之间的代码差异过大,因此直接和内核交互来调用驱动并不是一个通用思路。但是对于某些特定设备的驱动调用却是个简单可行的方法,比如nothing phone的灯带。
手电筒:一般是个led类设备,小米10ultra的手电筒被注册到了/sys/class/leds/flashlight/下,当然也有部分设备叫led0或者其他,nothing的手电筒驱动咱还没找到,咱好笨喵呜~目录中有两个文件对我们有用:brightness和max_brightnessmax_brightness的内容是个固定值,定义了灯的最大亮度。brightness的内容是个无符号整形数值,定义了灯的亮度,向其写入一个不大于max_brightness的合法数值,灯会亮,数越大灯越亮,写入0关闭手电筒。什么 ...
为你的手机内核开启docker支持
注意:文章所述方法仅适用于非GKI或qgki的设备,新设备咱也不会搞。文章内所述手机为arm64架构,上古时期的32位架构请自行修改。注:pixel系列设备请换用repo工具以及官方构建工具并使用ThinLTO(在内存小于32G的设备上)。好了让我们开始吧喵!
首要前提:
手机能够解锁bl并获取root权限
手机内核开源,尽量是有大佬维护源码的
拥有一定Linux基础
如果设备或个人不满足以上条件者请自行退出喵!
前期准备:你可能需要准备如下内容:
Linux系统环境(理论上手机电脑均可,电脑最佳)
熟练使用搜索工具
git和make以及代码编辑工具的使用
基本了解cpu架构差异
这些内容咱是不会教你的,毕竟这不是文章重点喵唔……当然最好有个脑子,可惜咱没有呜QAQ………
正式操作:0x0001 root手机,不必多说0x0002 获取手机代号和cpu代号这一步请通过搜索工具进行。如小米10ultra代号cas,cpu代号SM8250。
0x0003 查找内核源码可以去官 ...
termux配置文件分享
termux版本:这里咱比较喜欢termux-monet,带有monet取色支持和背景自定义。链接:HardcodedCat/termux-monet
欢迎信息:原版:Generator/termux-motd修改版:Moe-hacker/termux-motd修改内容不介绍了,效果见仓库。
123git clone https://github.com/Moe-hacker/termux-motd ~/.motdecho ~/.motd/init.sh >> ~/.bashrcecho ~/.motd/init.sh >> ~/.zshrc
如果手机“恰好”有docker支持:
1mv ~/.motd/26-docker.disabled ~/.motd/26-docker
自启动docker并显示信息。
配色修改:贴出咱的配色:
12345678910111213141516171819background: #1E1E2Eforeground: #CDD6F4cursor: #A6E3A1col ...
hexo博客配置教程
咱自己的博客配置教程喵~
前期准备:本博客在linux环境下搭建,部分内容于windows下稍有不同。你需要:git,ssh,nodejs,npm,github-cli。你可能还需要:一个脑子。可惜咱是没有脑子的喵呜………去github账号设置=>开发者设置=>令牌中获取一个token。在你的github账户下创建 用户名.github.io这个仓库。注:github-cli的token为明文存储,请勿在不受您本人信任的设备上用这种方式登录。然后:
123gh auth logingit config --global user.email "你的电子邮件地址"git config --global user.name "你的github用户名"
hexo部署:1234567cd ~mkdir hexonpm config set registry https://registry.npmmirror.com/npm install -g hexocd hexohexo initnpm install hexo-t ...
沨鸾的Shell小技巧
跟着沨鸾学shell,学到最后只会喵喵喵。
正经部分:语法规范:变量要加{}括起来。函数最好加个function关键字。头部一定要有释伴(shebang)。记得写注释,要不然也就上帝能看懂你写的什么了。退出时要有返回状态。能用[[]]就别用[]。尽量用printf代替echo使用以提供更好的兼容性。没用的输出记得丢弃。> /dev/null丢不掉就2>&1 > /dev/null。不要定义太复杂的架构,比如函数互相调用。当然咱基本没怎么遵守过。
三元表达式:比如你想要这样一段的功能:
12345if [[ $x == 1 ]];then echo testelse echo failfi
你可以这么写:
1([[ $x == 1 ]]&&echo test)||echo fail
测试一下:
1234x=0([[ $x == 1 ]]&&echo test)||echo failx=1([[ $x == 1 ]]&&echo test)||echo fail
等下语法 ...