标签归档:shell

shell中注入常用工具

开发中经常会用到一些转换,例如时间戳与格式时间,ip字符串和ip整形,大小端等。最早都是跑到相应的工具网站上去进行转换,甚是不便,于是有了…

【第一阶段】
将这几个工具集成到了一个chrome的插件 – devtool。自己用着很方便,但好景不长,新版本chrome禁掉了第三方插件,虽然搞来搞去还是给搞出来了可以用,不过心里已经有了一块疙瘩。

【第二阶段】
linux终端下开发,何不就在终端下的封装一套工具。于是有了一系列的xxxxxx

【第三阶段】
第二阶段用了一段时间,经常忘了命令每次使用又要去查,也有点不便,于是,何不模仿类似的函数种到shell环境里。将工具封装成函数放到shell中,取名尽量用python,c++里面最常见的名字,例如inet_aton/inet_ntoa,htonl/ntohl等,同时用前缀模拟名字空间。

 

linux终端字符画工具

曾经在某运维的电脑上看到用可打印字符组成的终端字符画,觉得很潮。试用了几个比较实用的,吐血推荐!!!

1. banner (https://github.com/uffejakobsen/sysvbanner)
这个是最简单的,就一种样式,用#字符来画出你输入的字符组合。
banner [text]
banner

 

 

 

2.figlet (http://www.figlet.org/)
figlet也提供了n中样式,不过是靠字体文件来区分样式的,默认是标准字体
figlet -f [font name] [text]
figlet

 

 

 

 

3. boxes (http://boxes.thomasjensen.com/)
提供了n种样式,例如各种动物等,然后你输入的字符就放在这些图案的内部空白处
boxes -l 列出所有的样式
echo [text] | boxes -d [style name] 用dog这个样式来显示
boxes

[参考链接]
http://blog.csdn.net/eastcoke/article/details/6427158
http://mewbies.com/acute_terminal_fun_01_get_ascii-fied_on_the_terminal.htm
http://my.oschina.net/leejun2005/blog/81869

 

把C代码当shell脚本来执行

C这种编译型语言要运行必然是需要编译的,但是做点手脚亦可从表明上改变这种认知。下面给出两种把C代码当shell脚本来执行的案例。

1. tcc的脚本模式
tcc是C的编译器,脚本模式会直接编译该代码并运行。

2. shell与C代码共存
脚本语言是解释执行的,充分利用#if条件语句来隔离shell和c编译器,达到可以直接运行的效果。

 

替换rm

从用linux起就一直深受rm的困扰,稍有不慎就删掉了不该删的东东。
1.早年受回收站的启发,将rm隐藏掉替换成自己的脚本,每次rm都将文件移动到每个分区的一个隐藏文件夹中,超过配额才真正的删除,同时辅以恢复脚本即可方便的处理。
2.但第一种方法通常过于复杂且多占用空间,最近有一次误删文件夹使我越来越细化rm的问题,仔细的思考后认识到其实我想要的只是避免某些文件或文件夹被误删除,因此梳理了一下写了下面的代码。

1).这个rm函数直接放到bashrc中加载到shell环境,shell内部函数优先于外部命令加载,达到隐藏rm命令的目的
2).prevent_dir为shell数组用于存储需要保护的目录和文件,这样删除时就会给出提示,同时不会调用/bin/rm
3).getopt过滤掉所有rm的参数,得到待删除的文件
4).readlink -f用法屏蔽掉所有相对路径.,..,~等特殊用法,得到全路径

基于shell的程序安装文件制作

玩linux的人对驱动安装文件应该不会陌生吧,以前就很好奇:安装文件居然是一个可执行的 shell,参考:http://biancheng.dnbcw.info/shell/239690.html才明白这个文件的结构。基本道理是生成 一个大的文件,由一段sh脚本加上一个tar包组成。sh脚本负责把tar包解开并完成一些必要操作,实现安装的拷贝和设置。这样一个大的文件加上执行权 限就可以当安装程序使用。

小米插件aria2亦是如此:

下面提供一个example下载:
linux安装文件制作示例