Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2012年1月18日星期三

Ubuntu 系统环境变量配置文件介绍

在Ubuntu Linux系统中,有几个文件可以设置系统运行的环境变量,这几个文件分别是 /etc/environment,/etc/profile,~/.profile,/etc/bash.bashrc和~/.bashrc。以下简单介绍一下这几个文件。

/etc/environment:系统登录时读取的第一个文件,该文件为所有进程设置基本环境变量值。
/etc/profile:系统登录时读取的第二个文件,该文件设定针对全系统所有用户的环境变量。
~/.profile:系统登录时读取的第三个文件,该文件定制当前用户的工作环境。
/etc/bash.bashrc:针对所有用户的bash初始化文件,此文件中设定的环境变量对所有用户有效,并且在每次打开bash的时候都会执行一次。
~/.bashrc:当前用户的bash初始化文件,当前用户每次打开shell时都会执行一次。

综上,在$HOME目录下的两个隐藏文件是针对当前用户的,其它三个文件都是全局有效的。以上五个文件的执行顺序为environment>profile>.profile>bash.bashrc>.bashrc

Linux 环境变量

1. 什么是环境变量
Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的系统环境。通常情况下,每个用户默认的系统环境都是一样的(由/etc/profile、/etc/bash.bashrc文件定制),这些默认环境就是由一些列的环境变量所确定。用户也可以对自己的用户环境进行定制(下面会有介绍)。因此,一个特定用户的环境是由系统默认环境+自己定制环境决定。

2. 常用的环境变量及其作用
PATH:决定了SHELL将到哪些目录下寻找命令或程序(下面会有详述)。
HOME:当前用户的主目录。
SHELL:当前用户使用的是那种shell。
HISTSIZE:保存历史命令记录的条数。
此外还有HOSTNAME,LANG,PS1, PS2等环境变量。

3. 环境变量的设置
环境变量的定义和设置有两种基本方法。
方法一:name=value; export name
方法二:export name=value (ksh和bash支持此种方法)
那么上述定义或添加环境变量的语句应该加在何处呢?具体有什么区别呢?
方法一:直接在终端添加上述语句。
此方法添加的环境变量只在当前的shell中起作用。只适用于临时更改环境变量,如果希望设置的环境变量能够持久有效,需要在linux环境变量配置文件中添加上述语句。关于linux环境变量的配置文件可以参考博客中的其它帖子。
方法二:在.bashrc或.profile文件中添加上述语句
添加完上述语句后,注销再重启机器,更改的环境变量即可生效,但只对当前用户有效。
方法三:在profile文件中添加上述语句
该方法更改的环境变量对所有用户有效,重启系统后起作用。

4. 环境变量命令介绍
echo $PATH: 显示环境变量值;
name=value;export $name: 定义新的环境变量name;
env: 显示所有环境变量;
set: 显示本地定义的shell变量;
unset: 清除环境变量,如unset $name;
readonly: 设置只读环境变量,如:name=value;export $name;readonly $name.

5. PATH环境变量
a) PATH变量的作用:
PATH简单说来就是一个字符串变量,当输入命令时系统会根据PATH里面记录的路径去查找这些命令。如在~目录下输入ls,输入ls命令后,系统会根据PATH中记录的路径去查找这个命令。通常这些命令都保存在.../bin目录下,所以PATH值恰恰就是/bin:/sbin:/usr/bin等。其中:使目录与目录之间隔开。
b) 新增自定义论经
假设新安装了一个命令在/usr/lib/gmt/bin目录下,又想在任何地方都能使用这个命令,就需要在环境变量PATH后增加该目录了。使用如下命令即可:
export PATH="$PATH:/usr/lib/gmt/bin"
如果上述命令添加在.bashrc文件中,注销重启后该环境变量即可生效。

查看安装软件的信息

利用sudo apt自动安装的软件之后,如何知道软件的安装目录呢?
可以利用dpkg命令
例1:dpkg -L GMT
例2:dpkg -S GMT

GMT 环境变量设置

在安装完GMT后,如果不做环境变量的设置,是不能直接使用GMT命令的。

添加GMT环境变量的步骤:
1. 在主目录~下找到.bashrc文件,vim .bashrc
2. 添加环境变量 export PATH="$PATH:/usr/lib/gmt/bin"
3. 运行.bashrc文件 source .bashrc

关于如何更改或添加环境变量,且在哪个文件中添加,将在其它博客介绍。
其中GMT的安装目录可以通过dpkg -L GMT查看,其中lib下的bin目录就是需要添加到环境变量的目录。

2012年1月11日星期三

linux ln命令

ln 命令是为某个文件在另一个不同的位置建立一个同步的链接。建立该链接通常分为两种,一种称为软链接(加参数 -s),一种称为硬链接(不加参数)。所谓软链接,是在选定的位置上生成一个文件的镜像,不额外占用磁盘空间;硬链接,在选定的位置上生成一个和源文件大小相同的文件,即拷贝。
应用:当需要在不同的目录用到相同的文件时,不许要在每一个目录下都放一个相同的文件,只需要在某个固定的目录放上该文件,然后在其他的目录下ln链接它即可,不重复占用资源。
例如: ln -s /bin/less /usr/local/bin/less
注意: ln命令会保持每一步链接文件的同步性,不论改动了哪一处,其他文件会发生相同的变化;

GNOME 常用快捷键


Alt + F2 类似Windows下的Win + R组合键,在GNOME中运行应用程序
Ctrl + Alt + L 类似Windows下的Win + L 组合键,锁定桌面,不同在于同时启动屏幕保护程序
Ctrl + Alt + D组合键,显示桌面
Ctrl + Alt + → / ← 在不同工作台间切换
Ctrl + Alt + Shift + → / ← 移动当前窗口到不同工作台


PrintScreen 全屏抓图
Alt + PrintScreen 当前窗口抓图
Ctrl+ Alt+ F1-F6 进入全 屏终端
Ctrl+ Alt+ F7 返回图形界面
<--Ctrl+Alt+Shift+F8 未知(终端或模拟终端)
Ctrl+Alt+Shift+Fn 终端N或模拟终端N(n和N为数字1-6) -->

Shift + 中键 拖拽文件图标,移动菜单
Alt + 左键 拖拽移动窗口
Alt + Shift + 左键 拖拽移动窗口并且可以使窗口停留在边缘位置
Alt + 右键 弹出窗口管理器菜单
Alt + 中键 拖拽改变窗口大小

Alt + ESC 在不同程序窗口间切换
Alt + Tab 为了兼容Windows下的Alt + Tab组合键习惯,提供的第二个“在不同程序窗口间切换”
Alt + F4 关闭窗口
Alt + F5 取消最大化窗口 (恢复窗口原来的大小)
Alt + F7 移动窗口 (注: 在窗口最大化的状态下无效)
Alt + F8 改变窗口大小 (注: 在窗口最大化的状态下无效)
Alt + F9 最小化窗口
Alt + F10 最大化窗口
Alt + Space 打开窗口的控制菜单 (点击窗口左上角图标出现的菜单)

ubuntu 终端

利用ctrl+alt+F1~F7可以打开ubuntu的终端(tty),我们常用的终端对应的是ctrl+alt+F7

查看信息可以用who 或者who am i命令

几种终端类型:
tty               终端设备的统称
pty              虚拟终端,当远程到服务器上时,在本机上同样需要一个终端,此终端称为pty
pts/ptmx      两者结合使用,实现pty。pts(pseudo-terminal slave) 伪终端,是pty的实现方法
    
几个常用终端查看命令
tty               查看当前tty
ls /dev/pt*   查看当前系统中运行的终端数
ps -ax          查看进程与哪个控制终端相连


几个终端快捷方式
CTRL+C             终止当前命令
CTRL+A             光标移到命令开始处
CTRL+E              光标移到命令结束处
CTRL+U             删除行首到光标处的字符
CTRL+Z              当前进程挂载到后台处理

2012年1月4日星期三

ubuntu 打开terminal的快捷方式

CTRL+ALT+T            打开一个新的terminal
CTRL+SHIFT+N        打开一个与当前活动状态的terminal路径相同的terminal
CTRL+SHIFT+T        在当前terminal下再打开一个terminal,类似vim的file buffer

2012年1月3日星期二

ubuntu 必备软件(持续更新)

1. gpartied partition editor
 类似于windows下的磁盘管理工具,可用来查看磁盘信息以及分区

2. Terminator
 一个窗口下可以打开多个terminator

3. stardict
 辞典,集成了google翻译功能

4. synapse
 快速打开电脑中的软件,文件等(非常好用)

5. vim
 首选编辑器

6. chromium browser
 浏览器,取决于个人喜好

7. smplayer
 音乐播放器

8. Thunderbird Mail
 邮件管理

9. Shutter
 截屏工具

10. Filezilla
 linux下的ftp

11. Synaptic package manager
 新立得软件包,安装了这个包后,很多软件可以直接sudo apt-get install

12. Gfortran
 fortran编译器

13. GMT
 GMT画图软件  

14. gv
 .ps, .pdf文件查看工具  

15. gnuplot
绘图软件包

16. octave
类似matlab(语句相同)的科学计算工具,可进行科学计算,也可绘图(实际用的是gnuplot)

17. Scilab
科学计算软件,与matlab相似

18. texlive
排版工具

19. ifort
Fortran编译器

20. krusader
窗口管理器

21. Jabref
文献管理软件

22. texmaker
latex编辑器

23. GIMP
类似与PS类的软件。可编辑图片,图片格式转换等。

fortran 编写动态库 linux系统

基于linux系统,编写fortran库函数过程如下:
以aa.f90,  bb.f90, main.f90三个文件为例
1. 生成.o文件
    gfortran -c aa.f90 bb.f90        将aa.f90和bb.f90文件生成.o文件
2. 生成动态库文件
    gfortran -shared -fPIC -o libtest.so *.o     基于.o文件生成动态库文件(.so文件)
3. 将动态库文件移动到/usr/lib目录下
    sudo mv libtest.so /usr/lib
4. 调用动态库文件
    gfortran -c main.f90                    将main.f90文件生成.o文件
    gfortran -o main main.o -ltest     生成可执行文件main,其中-ltest为调用库文件libtest.so

Fortran 库函数(持续更新中)

1. FORTRAN调用shell函数
   I=SYSTEM(‘command’)
   例:I=SYSTEM(‘ls *.txt > filelist’)将当前目录下.txt文件名保存到filelist


2. FORTRAN取整函数
   AINT(x[,kind]) 对x取整,并转换为实数
   ANINT(x[,kind]) 对x四舍五入取整,并转换为实数
   CEILING(x) 求大于等于x的最小整数
   FLOOR(x) 求小于等于x的最大整数
   IFIX(x) 将x转换为整数
   INT(x) 将x转换为整型
   例:          a=1.56 b=-2.5
   AINT对应值    1.000  -2.000
   ANINT对应值   2.000  -3.000
   CEILING对应值 2      -2
   FLOOR对应值   1      -3
   IFIX对应值    1      -2
   INT对应值     1      -2

3. 计算时间统计
   call CPU_TIME(t1) 放在开始计算前
   call CPU_TIME(t2) 放在计算结束后
   t=t2-t1


4. 统计函数
   (1) 计算最大值,最小值
       MAX(v1,v2,...)找出v1,v2...中的最大值,此函数没法判断一个数组的最大值
       MAXVAL(A,dim) 根据dim值找出一个数组中每一维的最大值
       MAXVAL(A) 返回整个数组的最大值
       MAXLOC(A,dim) 根据dim值找出一个数组中每一维最大值的位置
       同理:MINVAL,MINLOC相应的范围数组的最小值和最小值的位置
       例: 数组A(5,2),值为/1.2,3.5,4.6,8.7,9.6
                               2.3,63,3.9,6.8,1.6/   
       MAXVAL(A)           结果为63
       MAXVAL(A,1)         结果为9.6 63
       MAXLOC(A,1)         结果为5  2
   (2) 求和函数
       SUM(A,dim)根据dim求出每一dim数组元素的和
       例: 数组A(5,2),值为/2.3,3.6,4.7,5.8,6.9
                               1.0,1.3,3.6,7.3,4.5/   
       SUM(A)           结果为41.00
       SUM(A,2)         结果为3.3 4.9 8.3 13.1 11.4
       SUM(A,1)         结果为23.3 17.7

ubuntu 开启中文输入法

killall ibus-daemon          关闭输入法
ibus-daemon -d                重启输入法
CTRL SPACE                 启用中文输入法

shell 读文件

#! /bin/bash

count=1
while read a b c d
      do
         gpst[$count]=$a
         x[$count]=$b
         y[$count]=$c
         z[$count]=$d
         count=$count+1
      done < test.txt
注:其中a,b,c,d为四个临时变量,每次读一行,如果文件有4个域,即可以用4个临时变量;
    count是计数器,上述语句即可将文件保存到相应的变脸数组中

2012年1月2日星期一

matlab 画图技巧总结(持续更新中)

1. 坐标轴刻度设置
set(gca, ’XTick’, [0 1 2]) X坐标轴刻度数据点位置,在值为0,1,2的地方显示刻度
set(gca,'XTickLabel',{'a','b','c'}) X坐标轴刻度处显示的字符
因此,set(gca,'xtick',[100 200 300],'xticklabel',[1 2 3]) X轴在值为100,200,300的地方显示刻度1,2,3
例1:y_tick = {'1.00e-004','1.01e-002','2.01e-002','3.01e-002','4.01e-002',...
          '5.01e-002','6.01e-002','7.01e-002','8.01e-002','9.01e-002'}
          set(gca, 'YtickLabel',y_tick);

例2:set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick')));
例1中,当tick值较复杂时,可将tick的值提前赋值到一个变量中,随后利用变量即可;
例2中,在坐标轴刻度的显示过程中可以用sprintf函数,这样即可根据用户的需要显示坐标刻度;注:"|"不可省略


set(gca,'xtick',[]) 不显示x轴的坐标刻度
set(gca,'FontName','Times New Roman','FontSize',14)设置坐标轴刻度字体名称,大小
‘FontWeight’,’bold’ 加粗 ‘FontAngle’,’italic’ 斜体
对字体的设置也可以用在title, xlabel, ylabel等中


2. 坐标轴范围设置
axis(gca,[xmin xmax ymin ymax]) 设置坐标轴范围
axis auto 根据数据自动设置坐标轴范围
axis off  关闭坐标轴
set(gca,'xlim',[-20 20],'ylim',[-20 20]);设置当前图像的坐标轴范围,等同于axis(gca,[xmin xmax ymin ymax])语句
xlim(gca,[-20 20]);设置当前图像的x坐标轴范围
ylim(gca,[-20 20]);设置当前图像的y坐标轴范围

3. 坐标轴网格
set(gca,'xgrid','on');开启x轴网格
grid on;开启坐标轴网格