Linux终端输出颜色控制

格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m"
例如: echo "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的颜色
那些ascii code 是对颜色调用的始末.
\033[ ; m …… \033[0m
字背景颜色范围:40----49
40:黑
41:深红
42:绿

43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字颜色:30-----------39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

===========ANSI控制码的说明=============
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

我写的一个例程:
#include "stdio.h"

int main(void)
{
int color;
for (color = 0; color < 20; color++)
{
printf("\x1b[1;4;%dmThe color of this line is %d, %s!\x1b[0m\n", 30+color, 30+color, "ha ha");
}
}

Readmore »»

Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的
.bashrc或.bash_profile里增加下面的内容:
(注意:等号前面不要加空格,否则可能出现 command not found)

#在PATH中找到可执行文件程序的路径。
export PATH =$PATH:$HOME/bin

#gcc找到头文件的路径
C_INCLUDE_PATH=/usr/include/libxml2:/MyLib
export C_INCLUDE_PATH

#g++找到头文件的路径
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib
export CPLUS_INCLUDE_PATH

#找到动态链接库的路径
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
export LD_LIBRARY_PATH

#找到静态库的路径
LIBRARY_PATH=$LIBRARY_PATH:/MyLib
export LIBRARY_PATH


库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:

在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。

在 /etc/ld.so.conf 文件中添加库的搜索路径。

将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择

添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:

/usr/X11R6/lib

/usr/local/lib

/opt/lib

需要注意的是:第二种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库) 的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率, 所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig 命令要以 root 权限执行)。因此,为了保证程序执行时对库的定位,在 /etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。ldconfig ,简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用。因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下 /sbin/ldconfig使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用 的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。

在程序连接时,对于库文件(静态库和共享库)的搜索路径,除了上面的设置方式之外,还可以通过 -L 参数显式指定。因为用 -L 设置的路径将被优先搜索,所以在连接的时候通常都会以这种方式直接指定要连接的库的路径。

前面已经说明过了,库搜索路径的设置有两种方式:在环境变量 LD_LIBRARY_PATH 中设置以及在 /etc/ld.so.conf 文件中设置。其中,第二种设置方式需要 root 权限,以改变 /etc/ld.so.conf 文件并执行 /sbin/ldconfig 命令。而且,当系统重新启动后,所有的基于 GTK2 的程序在运行时都将使用新安装的 GTK+ 库。不幸的是,由于 GTK+ 版本的改变,这有时会给应用程序带来兼容性的问题,造成某些程序运行不正常。为了避免出现上面的这些情况,在 GTK+ 及其依赖库的安装过程中对于库的搜索路径的设置将采用第一种方式进行。这种设置方式不需要 root 权限,设置也简单:

$ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

可以用下面的命令查看 LD_LIBRAY_PATH 的设置内容:

$ echo $LD_LIBRARY_PATH

至此,库的两种设置就完成了。


Readmore »»

bash 的启动方式


  • /etc/profile

  • 全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
  • /ect/bashrc

  • Ubuntu没有此文件,与之对应的是/ect/bash.bashrc,它也是全局(公有)的,bash执行时,不管是何种方式,都会读取此文件。
  • ~/.profile

  • 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。




另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login。
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

  • ~/.bash_profile

  • Unbutu默认没有此文件,可新建。
    只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。
  • ~/.bashrc

  • 当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。
  • ~/.bash_logout

  • 注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。


下面是在本机的几个例子:

  1. 图形模式登录时,顺序读取:/etc/profile和~/.profile

  2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc

  3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile


  4. 从其它用户su到该用户,则分两种情况:


    1. 如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~/.bash_profile。

    2. 如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc




  5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout

  6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。

  7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。



Readmore »»

使用here文档

一个简单的例子使用here文档:
#!/bin/sh
cat <<!FUNKY!
hello
this is a here
document
!FUNKY!
这个脚本的输出如下:
hello
this is a here
document
here脚本最常用的就是从脚本程序中输出大量的文本。可以避免使用echo来一行行的输出文本。

Readmore »»

linux 后台调用matlab的 .m程序

测试环境:slackware12.1, matlab7.0
命令:我所使用的是一个叫做Decomp.m的matlab程序,具体的命令如下:
matlab -nodisplay -r "Decomp('image.bmp', 'image-result1.bmp', 'image-result2.bmp');exit"
-nodisplay:启用matlab但不使用gui界面
-r command: 在这里一定要注意的是command的内容一定要用双引号括起来。
";exit":的作用是执行完后退出matlab。

Readmore »»

Start Matlab from console under Unix/Linx

quote from:http://blog.4message.net/2008/10/03/start-matlab-from-console-under-unixlinx.html

Under Unix/Linux, you can run matlab without GUI,which always is so usefully for me.

For me, I run Matlab programs for long time in a remote server. If a Matlab GUI is opened ,I can’t disconnect the remote server. But when I run Matlab without GUI, I can do it with screen command.

Here is a example:

cunzhang@node31:~$ screen -S a

Then enter a visual terminal

cunzhang@node31:~$matlab -nodisplay -r myprogram

Now you can disconnect your remote server.If you want to see whether your program is done, just run command

cunzhang@node31:~$ screen -r a

For more information, please see:

1. GNU screen’s homepage

2. http://gentoo-wiki.com/TIP_Using_screen

3. http://sunsite.ualberta.ca/Documentation/Gnu/screen-3.9.4/html_chapter/screen_toc.html

4. matlab function reference

more details about matlab : matlab -h


Readmore »»

bit 与 byte

Bit 意为“位”或“比特”,是电脑运算的基础;Byte 意为“字节”,是电脑文件大小的基本计算单位。
Bit 和 Byte 同译为"比特",都是数据量度单位,bit=“比特”或“位”。
Byte=“字节”即 1 byte=8 bits,两者换算是 1:8 的关系。
我们所说的硬盘容量如:40GB、80GB、100GB,这里的 B 指是的 Byte 也就是“字节”。
  • 1 KB = 1024 bytes
  • 1 MB = 1024 KB
  • 1 GB = 1024 MB

Readmore »»