shell用到ANSI控制码汇总
我们在编写shell脚本时,如果要实现某种特殊功能(只对当前shell起作用),就需要ANSI的控制码。
比如我要让终端下字符颜色改换为绿色的,可以用
root$ echo -e "\033[40;32"
要偷懒,将当前光标移动到第3行第1列的地方,用到
root$ echo -ne "\33[3;1H"
上面这些都是实际的例子,要应用好还要学好ANSI控制码的相关代码,如下:
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[y;xH设置光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
\33[2J 清屏
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
注意:使用不同的shell,也会用到不同的转义的,看下面的例子:
/home/lee#echo "\\033[32mddd"
ddd
/home/lee#
/home/lee#bash
/home/lee#echo "\\033[33maddd"
\033[33maddd
/home/lee#exit
/home/lee#echo "\\033[34maddd"
addd
/home/lee#echo $0
-ksh
/home/lee#
一句话shell
下载连续的文件
for num in `seq -w 1 1 21`; do wget http://thns.tsinghua.edu.cn/thnsebooks/ebook73/$num.pdf; done
在当前目录下(排除0618和Mail目录)查找以a开头的文件或目录
find . \( -path './0618*' -o -path './Mail*' \) -a -prune -o -name "a*" -print
在当前目录的c或h文件中查找字符串
find . "*.[ch]" -exec grep -nH "main" {} \;
Ubuntu下列出system-config-printer-gnome包所安装的文件占的空间
du -cxh $(file `dpkg -L system-config-printer-gnome`|grep -v directory|awk -F: '{print $1}')