PDF文库 - 千万精品文档,你想要的都能搜到,下载即用。

Linux操作系统使用基础.pdf

〤King丶国王范儿175 页 1.095 MB下载文档
Linux操作系统使用基础.pdfLinux操作系统使用基础.pdfLinux操作系统使用基础.pdfLinux操作系统使用基础.pdfLinux操作系统使用基础.pdfLinux操作系统使用基础.pdf
当前文档共175页 2.88
下载后继续阅读

Linux操作系统使用基础.pdf

. Linux操作系统使用基础 . 李会民 hmli@ustc.edu.cn 中国科学技术大学 超级运算中心 2011年10月 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . 1 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . . 2011年10月 . 2 / 175 Linux操作系统简介 Linux以它的高效性和灵活性著称。具有多任务、多用户的能力 Linux实际应该只是内核,绝大多数基于Linux内核的操作系统使用 了大量的GNU软件,包括了一个Shell程序、工具、程序库、编译器 及工具,还有许多其他程序,例如Emacs。因此,GNU(GNU’s not Unix)计划的开创者Richard Matthew Stallma-RMS博士提议将 Linux操作系统改名为GNU/Linux,但多数人仍习惯性地使用Linux Linux之所以受到广大计算机爱好者的喜爱,其主要原因有两个: 它属于自由软件,用户不用支付任何费用就可以它的源代码1 ,并且 可以根据自己的需要对它进行必要的修改 它具有Unix的全部功能,任何使用Unix操作系统或想要学习Unix操 作系统的人都可以从Linux中获益 1 指的是源代码可以免费获取,但有些二进制发布的,如Red Hat Enterprise Linux Server(RHEL)是收费的,但其源代码可以免费获取 . . . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . 2011年10月 . 3 / 175 Linux操作系统起源 Linux是一个诞生于网络、成长于网络且成熟于网络的操作系统 1991年,芬兰大学生Linus Torvalds萌发了开发一个自由的UNIX操 作系统的想法,当年Linux诞生,为了不让这个羽毛未丰的操作系 统夭折,Linus将自已的作品Linux通过Internet发布。从此一大批知 名的、不知名的hack、编程人员加入到开发过程中来,Linux逐渐 成长起来 Linux一开始是要求所有的源码必须公开,并且任何人均不得从 Linux交易中获利。然而这种纯粹的自由软件的理想对于Linux的普 及和发展是不利的,于是Linux开始转向GPL(GNU General Public License),成为GNU阵营中的主要一员 Linux凭借优秀的设计,不凡的性能,加上IBM、INTEL、CA、 ORACLE等国际知名企业的大力支持,市场份额逐步扩大,逐渐成 为主流操作系统之一 Linux只是内核,即操作系统中允许用户软件与硬件通信的部分 Linux产商借网络爱好者升级的内核,通过优化、增加功能出售各个版 本的Linux操作系统 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . 4 / 175 Linux特点 I 开放性:系统遵循世界标准规范,特别是遵循开放系统互连(OSI) 国际标准 多用户:系统资源可以被不同用户使用,每个用户对自己的资源 (例如:文件、设备)有特定的权限,互不影响 多任务:计算机同时执行多个程序,而且各个程序的运行互相独立 良好的用户界面:Linux提供两种界面:用户界面和系统调用。 用户界面 Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联 机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用 户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的 手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序, 这个程序可以单独运行,也可以与其他程序同时运行。 Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动 条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化 界面。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . 5 / 175 Linux特点 II 系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用 系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、 高效率的服务。 设备独立性:是指操作系统把所有外部设备统一当作成文件来看待, 只要安装它们的驱动程序,任何用户都可以象使用文件一样,操 纵、使用这些设备,而不必知道它们的具体存在形式。Linux是具 有设备独立性的操作系统,它的内核具有高度适应能力 提供了丰富的网络功能:完善的内置网络是Linux一大特点 可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写 控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户 环境中的用户提供了必要的安全保障 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . 6 / 175 Linux特点 III 良好的可移植性:是指将操作系统从一个平台转移到另一个平台使 它仍然能按其自身的方式运行的能力。Linux是一种可移植的操作 系统,能够在从微型计算机到大型计算机的任何环境中和任何平台 上运行。比如,诺基亚的Maemo、谷歌的Android和Chrome OS, 以及英特尔的Moblin。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . 7 / 175 Linux的主要组件 Kernel 系统启动时将内核装入内存管理系统各种资源 Shell 用户界面,提供用户与内核交互处理接口,是命令解释器, 提供强大编程环境Bash、Csh、Tcsh、Ksh、Zsh· · · Utility 提供各种管理工具,应用程序 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . 8 / 175 Linux操作系统内核版本 Linux内核版本号码命名约定: 早期版本:第一个版本的内核是0.01。其次是0.02,0.03,0.10,0.11, 0.12(第一GPL版本),0.95,0.96,0.97,0.98,0.99及1.0。 旧计划(1.0和2.6版之间),版本的格式为A.B.C,其中A,B,C代表: A大幅度转变的内核。很少发生变化,只有当代码和核心发生重大变 化时才发生。历史上曾改变两次内核:1994年的1.0及1996年的2.0。 B是指一些重大修改的内核。内核使用了传统的奇数次要版本号码的 软件号码系统(用偶数的次要版本号码来表示稳定版本)。 C是指轻微修订的内核。这个数字当有安全补丁,bug修复,新的功 能或驱动程序,内核便会有变化。 第三次,自2.6.0(2003年12月)发布后,人们认识到,更短的发布周 期将是有益的,版本的格式为A.B.C.D,其中A,B,C,D代表: A和B是无关紧要的 C是内核的版本 D是安全补丁 当前最新稳定版本为2011年12月21日发布的3.1.62 2 Linux-kernel官方站点:http://www.kernel.org/ 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . . 2011年10月 . 9 / 175 Unix/Linux操作系统发行版本 一些主要发行版: Linux:Android, Arch, CentOS, Debian, Fedora, Gentoo, Mandriva, Red Hat Enterprise Linux Server (RHEL), Slackware, SUSE Linux Enterprise Desktop (SLED), SUSE Linux Enterprise Server (SLES), OpenSuSE, Ubuntu, . . . Unix: 学院派BSD:FreeBSD, OpenBSD, NetBSD, . . . 商业Unix:IBM AIX, HP UX, Sun Solaris, OpenSolaris3 , Mac OS X4 , iOS, SGI IRIX, . . . Linux、BSD发布版:http://distrowatch.com/ 3 4 Sun公司按照CDDL授权开源 以FreeBSD源代码和Mach微内核为基础 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 10 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 11 / 175 系统的运行 登录及退出系统 修改密码 Linux的命令结构 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 12 / 175 登录及退出系统 本地登录:文本或X界面 远程登录:SSH或TELNET SSH: Linux系统: s s h�UserName@HostName5 Windows系统:利用putty等支持ssh协议的客户端 TELNET6 : t e l n e t�HostName 退出系统: e x i t 或7 5 HostName指的是要登录系统的域名或IP地址 科大超算中心服务器不支持TELNET方式登录 7 指的是按住ctrl键与d键 6 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 13 / 175 创建或修改密码:passwd与yppasswd 一般系统:在系统提示符下输入passwd 采用NIS8 的集群系统等: 如果在NIS的主服务节点:可使用passwd或yppasswd 如果在NIS的非主服务节点:应使用yppasswd,用passwd修改的无 效 8 网络信息服务,可用于在各节点系统中同步用户信息、系统配置等 . . . 李会民 (中国科大超算中心) Linux操作系统使用基础 . 2011年10月 . . 14 / 175 命令的格式 命令一般具有如下格式,具体各个命令有所不同,需要查看命令的 帮助(man�command) command�o p t i o n s�arguments 命令中 [ ] 之内的表示是可选选项, | 表示是或,几种中选择一种 一些常见正确与错误的例子: 正确 错误 -与选项分离 m a i l�− f�newmail m a i l�−�f�newmail 选项与参数的顺序 m a i l�− f�newmail m a i l�newmail�− f 多选项 who�−m�−u who�−m−u who�−mu who�−m�u . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 15 / 175 键入命令 以下如非特殊说明,将以Bash(> 3.0版本)做为默认Shell说明,其它 Shell也许略有不同 在Shell提示符下输入命令,然后按回车键 Shell区分大小写 如找不到输入的命令,会显示Command not Found 如命令太长,可在此行行尾键入\和按下回车键,在下一行的>后接 着输入 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 16 / 175 键盘的快捷方式 9 :停止命令执行 :结束传输或屏幕输入:临时停止输出:恢复输出:擦除光标以前的:擦除光标以后的:纠正错误:在以前的命令中搜索 9 表示按下ctrl键与c键,其它类似 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 17 / 175 自动补全命令行 自动补全命令行就是在输入命令时不必把命令输全,按时Shell能 判断出所要输入的命令,如果有多个匹配将会列出,比如: l s�/ boot /v:系统将自动补全/boot下以v开头的文件或目 录 pass:系统会显示所有以pass开始的命令,如果只有一个符 合,则自动补全 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 18 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 19 / 175 文件和目录 描述Linux文件系统的结构 描述不同的文件格式 文件的绝对路径和相对路径 创建、删除和列出路径 复制、显示、打印、移动、删除和连接文件 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 20 / 175 文件系统的层次结构 10 10 此图有点老,现在一般还有/lib、/lib64、/lib32或/usr下的对应目录等, 以便与64位或32位库对应。 . . . . . 李会民 (中国科大超算中心) Linux操作系统使用基础 2011年10月 . 21 / 175 Linux中的标准系统目录 目录 用途 / Linux系统根目录,包含所有目录 /bin Binary的缩写,存放用户的可执行程序,如 l s 、cp,也包含其它的Shell如:bash等 /boot 包含vmlinuz、initrd.img等启动文件,随便改动可能无法正常开机 /dev 接口设备文件目录,如你的硬盘:sda /etc passwd等系统设置与管理的文件 /etc/x11 X Windows System的设置目录 /home 一般用户的主目录 /lib 包含执行/bin和/sbin目录的二进制文件时所需的共享函数库library /lib32 在某些64位系统中包含32位的库文件 /lib64 在某些32位系统中包含64位的库文件 /mnt 各项装置的文件系统加载点,如:/mnt/cdrom是光驱的加载点 /opt 提供空间,较大的且固定的应用程序存储文件之用 /proc ps命令查询的信息与这里的相同,都是系统内核与程序执行的信息 /root 管理员的主目录 /sbin 系统启动时所需的二进制程序,一般非普通用户使用 /tmp Temporary,存放暂存盘的目录,此目录下的文件系统重启后将被自动清空 /usr 存放用户使用系统命令和应用程序等信息 /usr/bin 存放用户可执行程序,如grep、mkdir等 /usr/doc 存放各式程序文件的目录 /usr/include 保存提供C语言加载的header文件 /usr/include/X11 保存提供X Windows程序加载的header文件 /usr/info GNU程序文件目录 /usr/lib(/lib64) 函数库 /usr/lib(/lib64)/X11 保存提供X Windows程序的函数库 /usr/local 提供自行安装的应用程序位置 /usr/man 存放在线说明文件目录 /usr/sbin 存放经常使用的程序,一般非普通用户使用 /usr/src 保存系统的源码文件 /usr/X11R6/bin 存放X Windows System的执行程序 . . . . /var Variable,具有变动性质的相关程序目录,如log . Linux操作系统使用基础 李会民 (中国科大超算中心) 2011年10月 . 22 / 175 文件系统的概念 文件系统:磁盘上有特定格式的一片区域 文件:存储数据的一个有名字的对象 目录:包含许多文件项目的一类特殊文件 子目录:被包含在另一个目录中的目录 父目录:包含子目录的目录称为父目录 文件名:用来标识文件的字符串,保存在一个目录文件项中 路径名:由/字符结合在一起的一个或多个文件名的集合,它指定 一个文件在文件系统中的位置 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 23 / 175 文件结构 无论文件是一个程序、文档、数据库、或是目录,操作系统都会赋予它 下面的结构: 索引节点(Inode):在文件系统结构中,包含有关相应文件信息 (文件权限、文件所有者、文件大小等)的一个记录11 数据:文件的实际内容 11 s t a t 命令可以查看 李会民 (中国科大超算中心) . Linux操作系统使用基础 . . . 2011年10月 . . 24 / 175 文件名称 包含大写字母、小写字母、数字、$、@、_、− 一般不包含以下字符12 :*、?、>、<、/、 ; 、$、@、~、 ’ 、” 最好不以+或−开头 最长文件名255字符 可以有扩展名以便于识别和管理,扩展名与实际类型无关,用扩展 名作为文件名的一部分,中间用 . 隔开 区分大小写 访问以−开头的文件,比如删除‘-foo’可以使用以下方法之一: rm�−−�− f o o rm�./ − f o o 注:在使用cp、mv等许多命令时遇到此类文件名可类似处理 12 特殊字符导致难于访问这些文件 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 25 / 175 文件的主要类型 主要有以下文件类型,利用 l s�− l 输出对应文件名的行第一个字符可判断 普通文件: 文本文件:ASCII码形式存储,以-开头,如: −rw−r−−r−− 1 root root 39599 Mar 8 12:15 x.sh 二进制文件:以二进制形式存储在计算机中,不可直接读,要通过相 应的软件读取,以-开头,如: −rw−r−−r−− 1 root root 69599 Mar 8 12:25 x 目录文件:以d开头,如: drwxr−xr−x 2 root root 4096 Aug 2 2006 bin 设备文件: 块设备文件:以b开头,如: brw−rw−−−− 1 root disk 3, 1 Jan 30 2003 /dev/hda1 字符设备文件:以c开头,如: crw−−−−−−− 1 root root 4, 1 Jul 31 13:49 /dev/tty1 链接文件:存放文件系统中通向文件的路径,以l开头,如: lrwxrwxrwx 1 root root 11 Sep 30 2008 c −> /mnt/c 利用 f i l e 命令可查看文件类型 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 26 / 175 普通文件 普通文件也称常规文件,含各种长度的字符串,如:信件、报告和脚本 文本文件:由ASCII字符构成 数据文件:由来自应用程序的数字型和文本型数据构成,如:电子 表格、数据库等 可执行的二进制程序:由机器命令和数据构成 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 27 / 175 目录文件 由成对的“Inode/文件名”构成的列表,利用目录文件可以构成文 件系统的分层树形结构 Inode是检索Inode表的下标,Inode存放所有文件的状态信息 文件名是给一个文件分配的文本形式的字符串,用来标识文件 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 28 / 175 路径的名称 主要分为两种类型: 绝对路径,以/或~开头,如/home/hmli/linux 相对路径,不以/或~开头,如当前目录为/home/hmli,那 么linux既是相对路径 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 29 / 175 目录操作命令 l s :显示目录中的内容 pwd:显示当前工作目录 cd:改变用户工作目录 mkdir:建立用户目录 rmdir:删除目录 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 30 / 175 列出目录内容:ls l s 命令列出一个子目录中的全部文件和目录名,一般格式为: l s�[OPTION ] . . . �[ FILE ] . . . 它有多个命令行参数,参数可组合使用,下面列出它最常用的几个13 : -a:显示所有文件或目录,包括以“.”为名称开头字符的隐藏文 件、现行目录“.”与上层目录“..” -l:使用详细格式列表。将权限标示、硬件接数目、拥有者与群组 名称、文件或目录大小及更改时间一并列出 -R:递归处理,将指定目录下的所有文件及子目录一并处理 -t:按照时间排序 -S:按照大小排序 -r:逆向排序 –color[=WHEN]:对不同类型的文件显示不同的颜色,WHEN默认 为always,可为never和auto 13 其它命令类似 李会民 (中国科大超算中心) . Linux操作系统使用基础 . . . 2011年10月 . . 31 / 175 列出目录内容:ls举例 使用长列表方式列出某个子目录中的全部文件: l s�− l a total 16 drwxr−xr−x drwxr−x−−− drwxr−xr−x drwxr−xr−x 4 root 11 root 2 root 2 root root root root root 4096 Jan 4096 Jan 4096 Jan 4096 Jan 1 11:28 . 1 11:27 . . 1 11:27 dir1 1 11:28 dir2 列出子目录中以字母v打头的全部非隐藏文件: l s�/ boot /v* −rw−r−−r−− 1 root root 2706672 Oct −rw−r−−r−− 1 root root 2496704 Oct 8 05:42 /boot/vmlinuz−3.0.0−2−amd64 9 07:55 /boot/vmlinuz−3.0.0−5−hmli−amd64 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 32 / 175 显示当前工作目录:pwd pwd没有参数,唯一的作用就是显示当前工作目录的绝对路径的名称 pwd /home/ hmli 环境变量PWD存储当前目录名,OLDPWD存储执行cd命令切换到当前 目录之前的目录名,利用echo可以查看,如: echo�$PWD echo�$OLDPWD . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 33 / 175 改变用户工作目录:cd cd命令可让用户在不同目录间切换,一般格式为cd�[ −L| −P ]�[ d i r ] , 几个常用方式: cd�dirname:进入名字为dirname的目录 cd�~username:进入用户username的主目录 cd�~/ dirname:进入当前用户的主目录下的dirname子目录 cd�−:返回进入这个目录之前所在的目录 cd�. . :进入上一级目录 cd� . . / . . :进入上两级目录 cd�. . / s u b d i r / s u b s u b d i r :进入上级目录下的subdir下 的subsubdir目录 cd:不跟任何参数时返回用户根目录 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 34 / 175 建立用户目录:mkdir mkdir可建立目录,一般格式为: mkdir�[OPTION ] . . . �DIRECTORY . . . 主要选项为: -p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层 目录,如mkdir�−p�1/2将建立目录1/2,如果目录1不存在,那么 也会一起建立 -m:建立目录时,同时设置目录的权限。权限的设置法与chmod命 令相同,如mkdir�−m�700�3 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 35 / 175 删除目录:rmdir rmdir命令可删除空目录,若所要删除目录非空,则出错 rmdir�dirname:删除dirname目录 -p:删除指定目录之后,若该目录的上层目录已变成空目录,则将 其一并删除,如rmdir�−p�1/2 rmdir更常用的替代命令为后面所说的rm命令 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 36 / 175 文件操作命令 这里不仅仅指的是普通文件,也包括目录等文件 cp:复制文件或目录 mv:移动文件和文件换名 rm:删除文件或目录 l n :在文件间建立连接 f i n d :查找特定的文件 l o c a t e :查找特定的文件 which:查看命令的路径 touch:改变文件的时间参数 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 37 / 175 复制文件或目录:cp cp命令用来复制文件,在缺省的情况下,工作时不做任何显示,只有在 出现错误情况的时候才显示状态信息,一般格式为: cp�[OPTION ] . . . �SOURCE�DEST 主要选项: -a:复制时尽可能保持文件的结构和属性 -f:不提示直接覆盖存在的目标文件 -i:覆盖现存文件时提示,建议打开此选项,避免误操作覆盖掉源 文件 -p:保持原始文件的所有者、组、许可和时间表属性 -r:递归地复制目录 举例: 复制源文件 srcfile 为 destfile :cp�s r c f i l e�d e s t f i l e 保留文件的结构和属性复制源目录/home/hmli/srcdir到当前目录下 的destdir目录:cp�−a�/home/ hmli / s r c d i r�d e s t d i r . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 38 / 175 移动/重命名文件:mv mv命令用来把文件从一个位置移动到另外一个位置,一般格式为: mv�[OPTION ] . . . �SOURCE�DEST 主要选项: -i:覆盖现存文件时提示,建议打开此选项,避免误操作覆盖掉目 标文件 -f:不提示直接覆盖存在的目标文件 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 39 / 175 删除文件或目录:rm rm命令用来删除文件14 ,一般格式为: rm�[OPTION ] . . . �FILE . . . 主要选项: -f:不提示直接删除指定的目标文件 -i:指定交互模式,在执行删除前提示确认 -r:删除文件列表中的目录 删除文件名以-开头文件,比如‘-foo’可以使用以下方法之一: rm�−−�− f o o rm�./ − f o o 注:在使用cp、mv等许多命令时遇到此类文件名可类似处理 14 删除了后基本不存在恢复的可能,小心 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 40 / 175 在文件间建立连接:ln l n 命令用来建立硬连接和符号连接 硬连接是一个文件的额外的名字,相当于一个同步更新的副本,删 除源文件,硬连接的内容还存在 符号连接相当于快捷方式,当源文件被删除后,符号连接仍然存在, 但链接的内容已经不存在 一般格式为: l n�[ o p t i o n s ]�s o u r c e�[ d e s t ] 主要选项: -d:用于建立目录的硬连接,默认选项 -f:覆盖已存在的目的文件 -i:提示是否覆盖已存在的目的文件。 -s:建立符号连接而不是硬连接 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 41 / 175 查找文件:find f i n d 命令可以根据各种检索条件查找文件,一般格式为: find�[ −H]�[ −L]�[ −P]�[ −D�debugopts ]�[ −Olevel ]�[ path . . . ]�[ expression ] path…:准备寻找文件所在的路径以及它的子路径,也可以是多个 路径 expression:包含要搜索文件的条件,可以包含文件名、拥有者、修 改时间、权限等 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 42 / 175 find主要选项 -atime n:至少n*24小时内没有访问过的文件 -ctime n:至少n*24小时内没有修改过的文件 -amin n:n分钟之内没访问过的文件 -cmin n:n分钟之内没修改过的文件 -empty:文件为空 -name name:指定要寻找的文件或目录的名称,区分大小写 -iname name:指定要寻找的文件或目录的名称,不区分大小写 -type x:以文件的类型作为寻找的条件,若x为: d:表示寻找目录 f:表示寻找普通文件 c:表示寻找字符特殊设备 b:表示寻找特殊块设备 p:表示寻找命名管道 l:表示寻找符号连接 s:表示寻找套接字 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 43 / 175 find举例 查找/home子目录中至少7天没有被访问过的文件: f i n d�/home�−atime�+7�− p r i n t 找出/usr/src子目录中名字为core.*的文件并删除它们: f i n d�/ u s r / s r c�−name�c o r e . *�−e x e c�rm�{}�\ ; 找出/home中以.jpg结尾并且长度超过100KB的文件: f i n d�/home�−name�” * . j p g ”�− s i z e�100 k 找出当前目录下权限不是755的目录并将其权限设置为755: f i n d�.�−type�d�!�−perm�755�−e x e c�chmod�755�{}�\ ; 注意:结合-exec选项时一定要小心,特别是后面跟rm等时 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 44 / 175 查找文件所在目录:locate 从系统保存文件位置信息的数据库中搜索文件: l o c a t e 如查看名字中含有libmkl_intel的库文件: l o c a t e�l i b m k l _ i n t e l warning : l o c a t e : warning : d a t a b a s e / var / l i b / s l o c a t e / s l o c a t e . db ’ i s more than 8 days o l d / opt / i n t e l / Compiler / 1 1 . 0 / 0 8 3 / mkl/ l i b /32/ l i b m k l _ i n t e l . a / opt / i n t e l / Compiler / 1 1 . 0 / 0 8 3 / mkl/ l i b /32/ l i b m k l _ i n t e l . s o / opt / i n t e l / Compiler / 1 1 . 1 / 0 5 9 / mkl/ l i b /32/ l i b m k l _ i n t e l . a / opt / i n t e l / Compiler / 1 1 . 1 / 0 5 9 / mkl/ l i b /32/ l i b m k l _ i n t e l . s o 注意:如果系统的数据库不够新,那么查找的结果将未必正确,比如上面提示 数据库的信息至少已经8天没更新,root可以运行updatedb更新数据库,普通 用户无权更新 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 45 / 175 显示命令的路径:which which查看命令的所在路径,如查看使用的是哪个mpif90: which�mpif90 / opt / openmpi − 1 . 4 . 3 / b i n / mpif90 which实际上是在环境变量PATH中指定的路径中显示第一个搜索到的 命令的路径,利用echo�$PATH可以看到以 : 分隔的命令路径,如: /usr/local/bin :/ usr/bin :/ bin :/opt/openmpi−1.4.3/bin . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 46 / 175 改变文件的时间参数touch touch改变文件访问和修改时间或用指定时间建立新文件,一般格式为: touch�[OPTION ] . . . �FILE . . . 主要选项: 不带参数:将文件的时间改为当前时间 -a:只更改访问时间 -c:若目标文件不存在,不建立空的目标文件 -t [[CC]YY]MMDDhhmm[.ss]:以指定时间修改文件的时间,如下 述命令将文件file1的时间修改为1月20日15点30分: touch�−t�01201530�f i l e 1 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 47 / 175 显示文件内容的命令 c a t :显示和合并文件 p a s t e :横向合并文件,将多个文件对应行合并 more:分屏显示文件 l e s s :分屏显示文件 head:显示文件的前几行 t a i l :显示文件的最后几行 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 48 / 175 显示和合并文件:cat c a t 可以结合多个文件,并将它们的内容输出到标准输出设备或者定向 到某个文件,一般格式为: c a t�[OPTION ] . . . �[ FILE ] . . . 主要选项: -b:列出文件内容时,在所有非空白列开头标上编号,从1开始累加 -E:在每一行的最后标上“$”符号 -n:列出文件内容时,在每一行开头标上编号,从1开始累加 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 49 / 175 cat举例 让 c a t 命令从标准输入设备(如键盘)读取数据,转而输出至标准 输出设备(如显示器): c a t 不加任何参数之后回车,键入文字,按下回车键,系统将回应 一模一样的文字 将屏幕输入定向到 file2 中: c a t�>�f i l e 2 输完后按终止输入,就将屏幕输入的存到文件 file2 中 利用重定向符>将名称为 file1 与 file2 的文件合并成一个文件 file3 : c a t�f i l e 1�f i l e 2�>�f i l e 3 >表示覆盖,若文件 file3 已经存在,则其内容会被覆盖 >>表示追加,若用>>代替>,新的内容就会追加在原有内容之后,而 不会覆盖它 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 50 / 175 横向合并文件:paste p a s t e 横向合并文件,将多个文件对应行合并,一般格式为: p a s t e�[OPTION ] . . . �[ FILE ] . . . 一般选项: -d, –delimiters=LIST:用LIST代替TABs -s, –serial:串行而非并行合并文件 例如: file1 的内容如下: file2的内容如下: 1 2 3 a b c 执行 p a s t e�f i l e 1�f i l e 2 将显示: 1 2 3 a b c 李会民 (中国科大超算中心) . Linux操作系统使用基础 . . . 2011年10月 . . 51 / 175 分屏显示文件:more more可将文件内容显示于屏幕上,每次只显示一页。可以往下翻页,但 无法回退翻页,一般格式为: more�[ − d l f p c s u ]�[ −num ]�[+/ p a t t e r n ]�[+ linenum ]�[ f i l e� . . . ] 主要选项: +/<字符串>:在文件中查找选项中指定的字符串,然后显示字符 串所在该页的内容 +<行数>:从指定的行数开始显示 -n:每次只显示n行 -c:不滚屏,在显示下一屏之前先清屏 more启动后的主要操作: 空格:翻页 /pattern:查找匹配pattern的字符 v:调用编辑器进行编辑 ;刷新屏幕 q:退出 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 52 / 175 more举例 在文件 file1 中查找“123”字符串,然后从该页开始显示内容: more�+/123�f i l e 1 显示文件 file1 的内容,每10行显示一次,且在显示之前先清屏: more�−c�−10�f i l e 1 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 53 / 175 分屏显示文件:less l e s s 类似more,也可以用来浏览超过一页的文件。 l e s s 命令除了可按空格键向下显示文件外,还可利用上下键来卷动 文件。 当要结束浏览时,只要下按q键即可。 显示中按v,也可调用编辑器直接进行编辑。 建议使用功能更强大方便的 l e s s ,man�l e s s 仔细看看用法以及功能 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 54 / 175 显示文件的前几行:head head显示指定文件的开头若干行,默认值是10行,一般格式为: head�[OPTION ] . . . �[ FILE ] . . . -c N:显示前N个字节 -n N:显示前N行 -N:显示前N行,如: head�−20�f i l e . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 55 / 175 显示文件的最后几行:tail t a i l 显示指定文件的末尾若干行,默认值是10行,一般格式为: t a i l�[OPTION ] . . . �[ FILE ] . . . 主要选项: -c N:显示后N个字节 -n N:显示后N行 -N:显示后N行 -f:连续监测需要显示文件的最后,如果文件更新,将自动显示出 更新,常用于监测输出日志,比如: t a i l�− f�myjob . l o g . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 56 / 175 比较文件内容命令:comm与diff comm:比较两个已排过序的文件 d i f f :比较文件的差异 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 57 / 175 显示两个文件共同部分:comm comm用来对两个已排过序的文件进行逐行比较显示其共同部分,一般格 式为: comm�[OPTION ] . . . �FILE1�FILE2 OPTION可以为: -1:不显示只在第一个文件里出现的行 -2:不显示只在第二个文件里出现的行 -3:不显示在第一、二个文件里都出现的行 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 58 / 175 comm举例 file1 的内容如下: file2 的内容如下: main ( { p r i n t f (” Hello !\ n ” ) ; } main ( { p r i n t f ( ” Good ! \ n ” ) ; } 用comm命令对这两个文件进行比较只显示它们共有的行: comm�−12�f i l e 1�f i l e 2 main ( { } . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 59 / 175 显示多个文件不同部分:diff d i f f 可以比较多个文本文件,并显示它们的不同,一般格式为: d i f f�[OPTION ] . . . �FILES 主要选项: -c:输出格式是带上下文的三行格式 -C n:输出格式是带上下文的n行格式 -r:两个文件都是目录时,递归比较找到的各子目录 输出的一般形式如下: n1 a n3,n4 n1,n2 d n3 n1,n2 c n3,n4 a-附加,d-删除,c-修改 a、d、c前面的n1等表示第一个文件的行号,后面的n3等表示第二 个文件的行号 上面的n1 a n3,n4表示两个文件若要变成相同,那么第一个文件的n1行 将附加第二个文件的行号为n3到n4行之间的内容 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 60 / 175 diff举例 file1 的内容如下: 1main () 2{ 3 printf (”Hello !\n”); 4} 5 file2 的内容如下: 1main () 2{ 3 int n,m; 4 n=10; 5printf(”%d\n” ,m=n*10); 6} 输入命令: d i f f�f i l e 1�f i l e 2 将显示: 3,5c 3,6 <3 printf (”Hello !\n”) ; <4 } <5 −−− >3 int n,m; >4 n=10; >5 printf(”%d\n” ,m=n*10); >6} . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 61 / 175 文件权限操作 chmod:改变文件或目录的许可权限 chown:改变文件的所有权 chgrp:改变用户分组 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 62 / 175 文件的保护和权限 l s�− l 显示的文件权限格式 drwxr−xr −x 2 hmli hmli −rw−r −−r −− 1 hmli hmli 4096 月10 19 2 3 : 2 5 example 441611 月10 20 0 9 : 0 1 f i l e . e p s drwxr-xr-x和-rw-r–r–的组成:第一列为文件类型标记,接着的三列为用户权限 位,之后的三列为组权限位,最后三列为组外用户权限位 文件权限: rwx user rwx group rwx others 普通文件: r:可以查看文件内容 w:可以修改文件内容 x:可以执行文件 目录: r:可以查看目录下的文件 w:可以在目录下创建和删除文件 x:可以进入目录或访问目录下的文件 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 63 / 175 权限 权限格式,可以为二进制、八进制或字符形式,如 字符 二进制 八进制 user rwx 111 7(4+2+1) group rw110 6(4+2+0) others r– 100 4(4+0+0) 多数文件的权限为: 文件:−rw−r −−r −− 644 目录:drwxr−xr −x 755 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 64 / 175 改变文件权限:chmod chmod用于改变文件或目录的权限,一般格式为: chmod�[OPTION ] . . . �MODE[ ,MODE ] . . . �FILE . . . MODE模式: u:文件所属帐户 g:文件所属组 o:其余帐户 a:所有帐户 +:添加权限 -:去除权限 =:使得指定文件只具有这些权限 主要选项: -v:详细显示权限改变的信息 -c:类似-v,仅权限改变时显示 -R:对所有某目录下的文件进行递归处理 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 65 / 175 chmod举例 使文件 file 各用户都拥有完全权限: chmod�777�f i l e 允许所有人读 file ,但只有拥有者能改变它: chmod�644�f i l e 给所有人增加写权: chmod�a+w�f i l e 对组级和其他用户除去写权和读权: chmod�o−wr , g−wr�f i l e 建立其他用户的只读权: chmod�o=r�f i l e 注意控制权限,尽量不要给其他用户修改删除文件等权限 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 66 / 175 设置缺省权限:umask 利用umask可以设置新生成的文件和目录的缺省权限,但不影响已经存 在的文件或目录权限,一般格式为: umask�[ −p ]�[ −S ]�[ mode ] mode与chmod的类似,应该设其mode为 l s 看到的权限的异或,简单说 就是777− l s 显示的 如避免其他用户查看自己新建的文件,可用umask�077,将设置缺省权 限为: 文件:−rw−−−−−−− 600 目录:drwx−−−−−− 700 如想要每次登录都起作用,需要加入Shell的启动初始文件,比如bash的 ~/.bashrc . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 67 / 175 改变文件的所有权:chown chown可把一个文件的所有权修改为其他用户的15 ,一般格式为: chown�[OPTION ] . . . �[OWNER] [ : [ GROUP] ]�FILE . . . 主要选项: -v:详细显示所有权的变化 -c:类似-v,仅所有权改变时显示 -R:递归改变目录及其内容的所有权 比如,将所有文件的所有者修改hmli及其所在的组nic: chown�−R�hmli : n i c�dirname 15 只有root用户能够进行这样的操作 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 68 / 175 改变文件的用户组:chgrp chgrp命令可以改变一个文件的用户分组设置情况16 ,一般格式为: chgrp�[OPTION ] . . . �GROUP�FILE . . . 主要选项: -v:详细说明文件所属的用户组的变化 -c:类似-v,仅所有权改变时显示 -r:改变本目录及其所有子目录中的文件所属的用户组 16 只有root才可以执行 李会民 (中国科大超算中心) . Linux操作系统使用基础 . . . 2011年10月 . . 69 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 70 / 175 进程 定义进程 进程监视 调用后台进程 中断进程 nohup 控制进程 定义系统进程 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 71 / 175 进程概念 一个进程就是一个运行的程序,是动态的 为每一个进程分配一个进程标识号(PID)以便指定和跟踪进程 每一个进程有一个父进程(PPID),有些还有多个子进程 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 72 / 175 进程和程序的关系 进程是程序的执行过程 程序是一个静态的命令集,进程是动态的 进程之间是并发执行的,而程序本身没有并发执行 进程是分配资源的单位,在运行过程中使用系统资源 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 73 / 175 父进程和子进程 如ps�axo�ppid , pid , comm的输出为 PPID 0 0 2 2 PID COMMAND 1 init 2 kthreadd 3 k s o f t i r q d /0 6 m i g r a t i o n /0 kthreadd进程的进程号为2,其父进程号为0,其子进程号为3和6 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 74 / 175 查看进程:ps ps查看当前系统中运行的进程的信息,一般格式为:ps�[ o p t i o n s ] 主要选项: -a:显示系统中与tty相关的所有进程的信息 -f:显示所有进程的信息 -r:只显示正在运行的进程 -o format:以指定格式显示 -u:显示面向用户的格式 -x:显示所有终端上的进程信息 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 75 / 175 ps举例 以标准语法显示所有进程: ps�−e ps�− e f ps�−eF ps�− e l y 以BSD语法显示所有进程 ps�ax ps�axu 打印进程树: ps�−ejH ps�a x j f 显示进程信息: ps�−e L f ps�axms . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 76 / 175 ps举例 显示进程安全信息: ps�−eo�e u s e r , r u s e r , s u s e r , f u s e r , f , comm, l a b e l ps�axZ ps�−eM 显示所有root用户运行的进程: ps�−U�r o o t�−u�r o o t�u 按照用户设定格式显示进程: ps�−eo�pid , tid , class , rtprio , ni , pri , psr ,pcpu, stat ,wchan:14 ,comm ps�axo�stat , euid , ruid , tty , tpgid , sess , pgrp , ppid , pid ,pcpu,comm ps�−eopid , tt , user ,fname,tmout, f ,wchan 显示syslogd进程的信息: ps�−C�s y s l o g d�−o�p i d= 显示进程号(PID)为42的进程信息: ps�−p�42�−o�comm= . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 77 / 175 查看进程树:pstree p s t r e e 可以显示进程树,一般格式为: p s t r e e�[ OPTIONS ] 主要选项: -a:显示命令执行时的参数 -h:高亮显示当前进程与其父进程 -n:按照进程号进行排序 -p:显示进程号进行排序 输出实例: init−+−acpi_fakekeyd |−atd |−avahi−daemon−−−avahi−daemon |−console−kit −dae−−−63*[{console−kit −dae}] |−cron |−fail2ban−server −−−4*[{fail2ban−server }] |−gdm−−−gdm−+−Xorg | ’−x−window−manage−+−2*[FvwmAuto] | |−FvwmIconMan | |−FvwmPager | |−FvwmTaskBar | |− firefox −bin−+−mplayer−−−mplayer | | ’−9*[{ firefox −bin}] | ’−ssh−agent . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 78 / 175 终止进程:kill、killall、pkill等命令 k i l l 、 k i l l a l l 、 p k i l l 等可以用于终止进程 前台进程(启动时在后面不含&的): c t r l −c kill killall pkill 后台进程(启动时在后面含有&的): kill killall pkill 普通用户只能杀掉自己的进程,root用户可以杀掉任意用户的进程 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 79 / 175 终止进程 利用下述命令显示出当前进程: ps�− f UID hmli hmli hmli PID 206 209 210 PPID 201 206 206 · · ·TTY · · ·COMMAND ··· 1 · · · bash ··· 1 · · · vim x . t x t ··· 1 · · · vim y . t x t 利用下述命令之一可以终止进程: 利用进程号杀掉进程: k i l l�206 利用发送信号9和进程号杀掉进程: k i l l�−9�206 杀掉所有vim程序: k i l l a l l�vim或 p k i l l�vim 仅杀掉编辑y.txt文件的vim程序: k i l l�−9�210 杀掉所有hmli用户的进程: k i l l a l l�−u�hmli或 p k i l l�−u�hmli . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 80 / 175 后台运行,运行耗时长进程:nohup与& 默认情况下退出终端,当前运行的进程将自动终止,可以利用nohup保 持程序的运行,一般格式为:nohup�COMMAND�[ARG ] . . . nohup�l s�−R�l�>�out�& nohup�l s�−R�l�& 一般在运行命令最后添加&将程序放到后台运行,比如: . / myprog�>myprog . l o g�& . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 81 / 175 暂停、前台与后台运行:、fg与bg 如果程序没有用&指定后台运行,可以在启动此进程的Shell中利用 暂停运行,暂停之后运行bg将其变为后台运行,如果再想变 成前台运行,可以执行 f g 。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 82 / 175 查看进程运行情况:top top可监视系统当前运行的各进程CPU内存等利用情况等,格式为: top�−hv�|�−bcHisS�−d�d e l a y�−n�i t e r a t i o n s�−p�p i d�[ ,�p i d� . . . ] 主要选项: -b:以批处理模式运行,可用于连续监测并将输出存储到文件中 -d delay:两此连续刷新之间的间隔 -n:最大刷新次数 -u|U username:仅查看username用户的进程 -p PID,PID:仅查看特定进程号的进程 非批处理模式进入top后的主要操作: 1:数字1显示隐藏多CPU利用情况 h:显示帮助信息,查看可执行的操作 c:显示进程路径参数等 d|s:设置刷新间隔时间 F|O:设置排序方式 n|#:设置最大显示进程数 M:按照内存/SWAP使用排序显示 q:退出 z:开启关闭颜色显示 注意:IBM AIX系统为Linux操作系统使用基础 topas 李会民 (中国科大超算中心) . . . . 2011年10月 . . 83 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 84 / 175 时间和日历:date和cal 在屏幕上显示或设置系统的时间 d a t e : 显示当前时间: d a t e 按照某种格式显示: d a t e�+%Y−%m−%d\�%H:%M:%S 显示日历 c a l : 显示当前月份日历: c a l 显示2012年全年月份日历: c a l�2012 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 85 / 175 计算程序运行时间:time 使用time命令可以了解单个程序和它的同步子程序的性能特征。 报告实际时间,也就是从程序开始到结束所使用的时间。 也报告由该程序使用的CPU时间量。CPU时间分为user和sys。 user值是由程序自身和它所调用的任何库子例程所使用的时间。 sys值是由程序调用(直接或间接)的系统调用所使用的时间。 user + sys的和是执行程序的总的直接CPU花费。这不包括内核部件 的CPU花费,这些部件可以说是代表程序而运行的,但实际并不在 它的线程上运行。例如,当程序启动时窃取页面帧来代替从自由列表 中取得的页面帧的花费并不作为该程序CPU耗费的一部分来报告。 在一个单处理器上,实际时间和总CPU时间之间的差值,即: real − (user + sys) 在一个多核系统中,可以有如下近似: real ∗ number_of_processors − (user + sys) 比如用四核来运行OpenMP共享内存程序stream: time�. / stream real 0m3.105s user 0m11.001s sys 0m0.261s . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 86 / 175 清屏:clear c l e a r 清除屏幕上的信息。清除后,提示符移到屏幕的左上角 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 87 / 175 重新初始化终端:reset 如果发现终端出现稀奇古怪的字符等,可以利用 r e s e t 重新初始化终端 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 88 / 175 显示变量内容:echo 利用echo可以显示变量内容或字符串到标准输出(即屏幕)上,一般格 式为:echo�[SHORT−OPTION ] . . . �[ STRING ] . . . -n:表示输出字符串后,光标不换行 -e:对\进行转义,比如\n表示回车等 -E:取消对\进行转义,默认选项 几个例子: echo�$LD_LIBRARY_PATH echo�” This�i s�a�����command . ” echo�This�i s�a�����command . echo�−n�” Enter�data −>” echo�−e�”\ e [ 3 5 ; 1mPATH\ e [ 0m”=$PATH . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 89 / 175 查找文件内容:grep g r e p 可用于查找文件中的内容,一般格式为: g r e p�[ OPTIONS ]�[ − e�PATTERN�|�− f�FILE ]�[ FILE . . . ] 如果在搜索模式中包含空格,应用单引号把模式字符串括起来 在文件列表中可以使用通配符 主要选项: –color[=WHEN]:WHEN可为never、always或auto,颜色可利用 环境变量GREP_COLOR设置,默认为红色 -c:不显示匹配行,只显示匹配总数 -e PATTERN:按正则表达式方式匹配 -i:忽略大小写查找 -n:同时显示匹配行号 -v:显示不匹配的行 -l:只显示有匹配的内容的文件名 几个实例: 查找所有进程中含有vim的进程:ps�axu�|�g r e p�vim 不区分大小写查包含subroutine的.f90文件: g r e p�− i�s u b r o u t i n e�* . f 9 0 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 90 / 175 Linux与Windows文本格式转化:dos2unix与unix2dos 对文本文件来说,Windows(DOS)利用回车换行(\ r \n)作为和新行的开始, Unix/Linux用换行(\n)作为新行的开始,因此当文本文件在这两个系统使用 时也许会因此出现问题,可以利用 d o s 2 u n i x | fromdos和 u n i x 2 d o s | t o d o s (实际这四个命令是tofrodos包的一部分)来分别进行转化: f i l e�f i l e n a m e f i l e n a m e : ISO −8859 t e x t 转化成Windows格式: u n i x 2 d o s�f i l e n a m e f i l e�f i l e n a m e f i l e n a m e : ISO −8859 t e x t , with CRLF l i n e t e r m i n a t o r s 转化成Linux格式: d o s 2 u n i x�f i l e n a m e f i l e�f i l e n a m e f i l e n a m e : ISO −8859 t e x t . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 91 / 175 打印文件字数和行数:wc wc可统计文件字数行数等,一般格式为:wc�[OPTION]�f i l e n a m e 主要选项: -c:只显示字节数 -l:只显示行数 -w:只显示字数 查看/etc/passwd的行数: wc�− l�/ e t c / passwd 33 / e t c / passwd wc�− l�<�/ e t c / passwd 33 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 92 / 175 生成序列:seq s e q 可以生成数字序列,并且支持浮点数,可用于循环处理某些操作, 一般格式为: s e q�[OPTION ] . . . �LAST s e q�[OPTION ] . . . �FIRST�LAST s e q�[OPTION ] . . . �FIRST�INCREMENT�LAST 主要选项: -f, –format=FORMAT:指定格式 -s, –separator=STRING:以STRING分割,默认为回车\n -w:等宽显示 对比以下命令: s e q�6�12 s e q�−w�6�12 s e q�6�0 . 5�12 s e q�−s�,�6�12 生成文件名test01.dat-test10.dat的十个文件: f o r�i�i n�$ ( s e q�−w�1�1 0 ) ; do�touch�t e s t − $ i . dat ; done . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 93 / 175 测试网络通断:ping p i n g 用来检测一个系统是否已连接上并在运行,如: p i n g�2 0 2 . 3 8 . 6 4 . 1 PING 202.38.64.1 (202.38.64.1) from 202.38.64.1 : 56(84) bytes of data . 64 bytes from 202.38.64.1: icmp_seq=1 t t l=255 time=0.092 ms 64 bytes from 202.38.64.1: icmp_seq=2 t t l=255 time=0.022 ms 64 bytes from 202.38.64.1: icmp_seq=3 t t l=255 time=0.020 ms 64 bytes from 202.38.64.1: icmp_seq=4 t t l=255 time=0.019 ms −−− 202.38.64.1 ping s t a t i s t i c s −−− 4 packets transmitted , 4 received , 0% loss , time 2997ms rtt min/avg/max/mdev = 0.019/0.038/0.092/0.031 ms 上面显示网络是通的,如果一直没反应,那么说明网络有可能无法到达 对方(也许对方禁止ping) . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 94 / 175 追踪网络路由:traceroute t r a c e r o u t e 可追踪网络路由,并可判断网络在哪里出了问题等,如: t r a c e r o u t e�www. g . cn traceroute : Warning: www. g . cn has multiple addresses ; using 203.208.37.104 traceroute to www. g . cn (203.208.37.104) , 30 hops max, 46 byte packets 1 local −gw (202.38.64.126) 0.241 ms 0.180 ms 0.188 ms 2 wlt (202.38.64.59) 0.165 ms 0.145 ms 0.135 ms 3 210.45.224.251 (210.45.224.251) 1.644 ms 0.768 ms 0.757 ms 4 202.112.53.225 (202.112.53.225) 0.488 ms 0.697 ms 0.644 ms 5 * * * 从上面可以看出网络通路,并得出到202.112.53.225是通的,之后也许断 掉了 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 95 / 175 获取用户信息:finger f i n g e r 获得网络中其他用户的信息。可以查看一个用户最后登陆的时 间、他所使用的Shell类型、主目录的路径等,一般格式为: f i n g e r�[ − lmsp ]�[ u s e r� . . . ] �[ us er @ ho s t� . . . ] 例如: f i n g e r�hmli Login : hmli Name: Li HuiMin Directory : /home/nic/hmli Shell : /bin/bash Office : hmli@ustc .edu. cn On since Wed Dec 16 19:38 (CST) on pts/10 from 202.38.64.91 On since Wed Dec 16 19:39 (CST) on pts/11 from 202.38.95.84 3 seconds idle No mail . No Plan . . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 96 / 175 查看命令手册:man man可以格式化并显示某命令的联机帮助手册,输出的手册页主要包括 以下几个部分: NAME:命令的名称和用法 SYNOPSIS:显示命令的语法格式,列出其所有可用的选用的选项 及参数。一般来说这里 [�] 内的表示可选,不在[]内的为必选, | 表 示或,如:who [OPTION] · · · [ FILE | ARG1 ARG2 ] DESCRIPTION:描述命令的详细用法及每个选项的功能 OPTION:对命令的每一个选项进行详细的说明 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 97 / 175 man主要选项 [ section ]:显示某[section]内的该命令帮助,[section]是man的分 类,一般为: 1:命令 1P:Posix命令 2:系统调用 3:库函数 3P:Posix程序 4:特殊文件 5:文件格式与约定 6:游戏 7:约定与杂项 8:系统管理命令 9:内核进程 -a:显示所有[section]内的帮助 -L:以某种语言显示帮助,比如man�−L�zh_CN .UTF−8�man 环境变量MANPATH设置man的搜索路径 比如:man�p r i n t f 和man�3�p r i n t f 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . . 98 / 175 阅读info帮助:info/pinfo i n f o 和 p i n f o 用于阅读info文档,此种文档相比man文档更友好, p i n f o 比 i n f o 操作更方便,支持颜色加亮等,一般格式为: i n f o�[OPTION ] . . . �[MENU−ITEM . . . ] p i n f o�[ o p t i o n s ]�[ i n f o p a g e ] 将光标移到链接处( p i n f o 支持彩色链接, i n f o 看不出来) ,按回车进 入子章节,按小键盘的左右箭头可以来回跳转 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 99 / 175 显示命令简要说明:–help|-h等 许多命令支持运行时添加如下选项查看简要帮助: -h -help –help -H -? . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 100 / 175 查看目录大小命令:du du总结每个文件的磁盘用量,目录则取总用量,一般格式为: du�[OPTION ] . . . �[ FILE ] . . 主要选项: -h:以人性化方式显示大小 -s:仅显示总大小 du�−h�/home/ hmli / data / 590M 926M 34M 2 . 8M 105M 1 . 1G /home/ hmli / data / s u r f a c e / o l d /home/ hmli / data / s u r f a c e /home/ hmli / data /asem /home/ hmli / data / l i n e / o l d /home/ hmli / data / l i n e /home/ hmli / data / . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 101 / 175 查看分区大小:df d f 显示系统某个文件所在的分区系统的信息,默认是显示所有文件系 统,一般格式为: d f�[OPTION ] . . . �[ FILE ] . . . 主要选项: -B Block-Size:以指定块大小显示 -h:人性化显示,比如直接显示1K、234M、2G等 -H:用1000而不是1024进制计算 -T:显示文件系统类型 -l:仅显示本地文件系统,不显示NFS等网络文件系统 例如: d f�−h Filesystem /dev/sda1 tmpfs udev tmpfs /dev/sda2 /dev/sda4 Size Used Avail Use% Mounted on 19G 17G 790M 96% / 442M 0 442M 0% / l i b/ i n i t /rw 10M 284K 9.8M 3% /dev 442M 0 442M 0% /dev/shm 92M 31M 57M 35% /boot 73G 60G 8.8G 88% /home 各列含义为:文件系统分区、总大小已用、可用、已用百分比、挂载后目录 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 102 / 175 远程会话工具:Screen 你是不是经常需要SSH或telent远程登录到Linux服务器 你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等 通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因 为它们执行的时间太长了。必须等待执行完毕,在此期间可不能关 掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了 不想有以上烦恼,那就使用GNU Screen吧,Screen可以看作是窗口管理 器的命令行界面版本,它提供了统一的管理多个会话的界面和相应的功 能 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 103 / 175 screen功能 会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于 远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经 打开的命令行会话的控制。只要再次登录到主机上执行 s c r e e n�−r 就可 恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach, 在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一 点和图形界面下的VNC很相似。 多窗口 在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、 输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由 的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制 粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗 口还可以被分割和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话 的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权 限的机制,可以对窗口进行密码保护。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 104 / 175 Screen启动方式 不加任何参数的 s c r e e n :启动新的Screen s c r e e n�−r :登录到上次退出的Screen会话,如有多个会有提示登 录到哪个会话,如下: There a r e s c r e e n s on : h e r e a r e s e v e r a l s u i t a b l e s c r e e n s on : 1 0 2 1 9 . pts −7.HM_Li ( 1 2 / 1 5 / 0 9 1 4 : 3 4 : 1 4 ) ( Detach 1 0 1 8 1 . pts −7.HM_Li ( 1 2 / 1 5 / 0 9 1 4 : 3 4 : 1 0 ) ( Detach There i s no s c r e e n t o be resumed . 之后可用 s c r e e n�−r�1 0 1 8 1 . pts −7.HM_Li登 录10181.pts-7.HM_Li会话 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 105 / 175 screen进入后的操作 :退出Screen,Screen内的操作等继续保留,下次可以 用 s c r e e n�−r 重新进入此会话继续查看和运行 :命名会话:显示会话名称:创建一个新的Shell:在Shell间切换:切换到下一个Shell:切换到上一个Shell:切换各个Shell 如果当前Screen是运行Shell,那么直接或 e x i t ,将退出Shell并 退出此screen会话,下次无法恢复此会话中的运行 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 106 / 175 网络上传下载:ftp f t p 可用于客户端和服务器之间上传下载数据,一般用法为: f t p�[ − pinegvd ]�[ h o s t�[ p o r t ] ] 连接服务器: ftp Host ftp User@Host ftp User:Passwd@Host 进入后基本命令: 查看文件列表:ls 单个/多个文件下载:get/mput 单个/多个文件上载:put/mget 建立删除文件夹:mkdir/rmdir 删除文件:delete 二进制传输:bin ASCII传输:ascii 连接新服务器:open 退出:quit或bye 打开关闭交互模式:prompt,mput和mget命令事情前应关闭交互模 式,否则每次都询问是否上载或下载 查看帮助:help,help CMD . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 107 / 175 强大的网络上传下载:lftp l f t p 类似 f t p ,但功能要强大的多,还可处理http协议,一般格式为: l f t p�[ −d ]�[ − e�cmd ]�[ −p�p o r t ]�[ −u�u s e r [ , p a s s ] ]�[ s i t e ] l f t p�− f�s c r i p t _ f i l e l f t p�−c�commands 与 f t p 相比之外的主要特殊命令: 目录镜像下载:mirror 目录镜像上载:mirror -R 查看文件:cat、zcat 运行本地命令:!CMD,比如!ls 下载已知地址文件: l f t p�f t p : / / u r l . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 108 / 175 网络下载上传:wget/curl/axel wget、 c u r l 支持网络上传下载,可以批量下载及镜像网站,并可以模 拟网页点击,进行网络登录后的操作,比如设置网络通等,非常强大 文件续传:wget�−c�h t t p : / / u r l 下载http://vcd.gro.clinux.org/doc/usr_01.html到http:// vcd.gro.clinux.org/doc/usr_15.html: c u r l�−O�h t t p : / / vcd . g r o . c l i n u x . o r g / doc / usr_ [ 0 1 − 1 5 ] . html a x e l 支持并发多线程同时从多个或单个服务器下载,不要太狠,文明使 用,如以两个线程下载: a x e l�−n�2�h t t p : / / s c c . u s t c . edu . cn /sw/ openmpi − 1 . 4 . 4 . t a r . bz2 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 109 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 110 / 175 Shell基础 通配符 输入输出重定向 管道 命令组 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 111 / 175 Shell简介 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解 释执行一条,这种方式称为交互式(Interactive) Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令 执行完,而不必一条一条地敲命令 Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚 本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并 执行这些命令,相当于一个用户把脚本中的命令一行一行敲 到Shell提示符下执行 作为操作系统的交互式命令解释程序,它在用户和操作系统之间提 供了一个面向行的可交互接口 作为一种命令级的程序设计语言,具有变量设置、结构控制、子程 序调用、参数传递、中断处理等 常见Shell有:Csh、Tcsh、Ksh、Bash等,以下主要基于Bash说明 Shell编程部分主要参考:Linux C编程一站式学习之31. Shell脚本(宋劲杉, 北京亚嵌教育研究中心) . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 112 / 175 Bash配置文件 Bash运行时会读取初始配置文件,退出时也会执行相关文件中的命令, 主要包括以下文件: /etc/ profile :系统范围初始文件,当用户登录进时执行,一般用于 系统默认的设置 /etc/bash.bashrc:系统范围初始文件,每个新终端都执行 /etc/bash.bash.logout:系统范围清理文件,每次登录退出时执行 ~/.bash_profile:用户个人的初始化文件,登录的Shell会执行 ~/.bashrc:个人初始化文件,每个新终端都执行 ~/.bash_logout:个人登录退出时的清理文件,每个登录Shell退出 时会执行 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 113 / 175 文件名中的字符代用字 单字符代用字:? 多字符代用字:* 包含代用字:[ ]![ - ] . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 114 / 175 标准输入输出文件 标准输入(0) 标准输出(1) 标准错误输出(2) . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 115 / 175 输入输出重定向:>输入重定向:command�<�f i l e n a m e 输出重定向:command�>�f i l e n a m e 错误重定向:command�2>�f i l e n a m e 正常和错误重定向同一个文件: command�&>f i l e n a m e command�>&f i l e n a m e command�>f i l e n a m e�2>&1 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 116 / 175 管道:| 管道 | 可以使 | 左侧命令的标准输出成为右侧命令的标准输入,利用 管道可以把一堆命令组合起来,合作完成任务,一般格式为: cmd1�|�cmd2 比如,统计多少个进程名含有sh的进程数: ps�axu�|�g r e p�sh�|�wc�− l 将ps�axu命令的输出传递给 g r e p�sh处理后的输出传递给wc�− l 如果能利用好 | 将命令组合起来可以完成非常复杂的操作 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 117 / 175 别名:alias与unalias a l i a s 可以定义某些命令的别名以简化操作等,比 如 a l i a s�p s l =’ ps�aux�|�grep ’ ,运行 p s l�sh就相当于运 行ps�aux�|�g r e p�sh 定义的命令仅仅在当前Shell中有效,为了每次登录都有效,应该放 入下面所说的~/.bashrc之类的文件中 取消别名可以用 u n a l i a s ,比如 u n a l i a s�p s l . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 118 / 175 ~/.bashrc实例  #~/.bashrc: executed by bash(1) for non−login shells. umask 022 alias ls=’ls $LS_OPTIONS’ alias ll=’ls $LS_OPTIONS −l’ alias la=’ls $LS_OPTIONS −lA’ alias l=’ll’ alias cp=’cp −i’ alias mv=’mv −i’ alias rm=’rm −i’ MPIROOT=/opt/openmpi−1.4.3 export PATH=$PATH:$MPIROOT/bin export MANPATH=$MANPATH:$MPIROOT/share/man . /opt/intel/Compiler/11.1/059/bin/ifortvars.sh ia32  其中#后面的做为注释 李会民 (中国科大超算中心) . Linux操作系统使用基础 . .  . 2011年10月 . . 119 / 175 Shell变量 变量是可赋值的名字,其值可以是字符串、数字等 用户变量:由用户创建和赋值的变量 环境变量:由Shell维护,用于配置系统工作环境的一组变量,可以 由用户改变 特殊变量:由Shell设置的,不能改变。例如参数个数,进程号退出 状态。 Shell脚本中的变量除非用 e x p o r t 输出做为环境变量,否则都是本地变 量,仅在本脚本中有效,脚本结束,变量随之消亡 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 120 / 175 环境变量 系统具有许多环境变量,利用env命令可以打印出所有已经设置的环境 变量及其值,以下是一些系统常用的环境变量(其它系统未必一致): C头文件路径:CPATH=/opt/intel/Compiler/11.1/059/mkl/include Fortran头文件路径:FPATH=/opt/intel/Compiler/11.1/059/mkl/include 用户主目录:HOME=/home/hmli 头文件目录:INCLUDE=/opt/intel/Compiler/11.1/059/mkl/include 语言环境:LANG=zh_CN.UTF-8 链接库路径:LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/059/lib/ia32 库路径:LIBRARY_PATH=/opt/intel/Compiler/11.1/059/lib/ia32 登录名:LOGNAME=hmli man文档路径:MANPATH=/opt/intel/Compiler/11.1/059/man:/opt/openmpi-1.4.3/share/man 命令搜索路径: PATH=/opt/intel/Compiler/11.1/059/bin/ia32:/usr/local/bin:/usr/bin:/bin:/opt/openmpi-1.4.3/ bin 当前路径:PWD=/home/hmli/tex/linux Shell路径:SHELL=/bin/bash 终端名:TERM=xterm 用户:USER=hmli 用户名:USERNAME=hmli 对于Bash用户可以在~/.bashrc中设置利用 e x p o r t 命令来设置,如将自 己根目录下的bin目录加入命令搜索路径,以直接运行此目录中的命令可 以在~/.bashrc中添加: e x p o r t�PATH=$HOME/ b i n :$PATH 环境变量影响用户的使用,一定要小心按照变量要求的格式设置 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 121 / 175 用户变量 变量名可以是由字母开头的任意字母、数字组成的序列,变量值以字符 形式存储 声明和管理用户变量: VAR=s t r i n g 取消变量的定义: u n s e t�VAR 连接变量: VAR=$VAR1” xxx ”$VAR2 引用变量的值: 变量前添加$,如$VAR 显示变量的值: echo�$VAR 如果变量值符合数字格式,则可以直接用于计算 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 122 / 175 命令代换:‘或 $() 反引号 ‘ 或$ ( ) 将其内命令执行结果赋值给变量,比如将系统时间赋值给 变量DATE可用下列格式之一: DATE=‘ date ‘ DATE=$ ( d a t e ) . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 123 / 175 算数代换:$(()) $ ( ( ) ) 用于数学计算,比如执行加法: VAR=2 SUM=$ ( (VAR+3)) echo�$SUM . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 124 / 175 转义字符:\ 和C语言类似,\在Shell中被用作转义字符,用于去除紧跟其后的单个字 符的特殊意义(回车除外),即紧跟其后的字符取字面值,如对比: echo�$SHELL echo�\$SHELL . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 125 / 175 单双引号:’与” 和C语言不一样,Shell脚本中的单引号 ’ 和双引号”一样都是字符串的界 定符,而不是字符的界定符 单引号用于保持引号内所有字符的字面值,即使引号内的\和回车 也不例外,但是字符串中不能出现单引号。如果引号没有配对就输 入回车,Shell会给出续行提示符,要求用户把引号配上对 双引号用于保持引号内所有字符的字面值(回车也不例外),但以 下情况除外: \$ 变量名可以取变量的值 反引号‘仍表示命令替换17 \$表示 $ 的字面值 \‘表示‘的字面值 \”表示”的字面值 \\表示\ 的字面值 举例对比: echo�’$SHELL ’ echo�”$SHELL” 17 键盘左上角‘ 李会民 (中国科大超算中心) . Linux操作系统使用基础 . . . 2011年10月 . . 126 / 175 条件测试:test与[ 命令 t e s t 或 [ 可以测试一个条件是否成立,如果测试结果为真,则 该命令的退出状态为0,如果测试结果为假,则命令的退出状态为1 (注意与C语言的逻辑表示正好相反) 虽然看起来很奇怪,但左方括号 [ 确实是一个命令的名字,传给命 令的各参数之间应用空格隔开,如 $VAR、-gt、3、]是 [ 命令的四 个参数,它们之间必须用空格隔开。 t e s t 或 [ 的参数形式是相同的, 只不过 t e s t 命令不需要]参数。 以 [ 命令为例,常见的测试命令如下表所示: [ −d DIR ] [ −f FILE ] [ −z STRING ] [ −n STRING ] [ STRING1 = STRING2 ] [ STRING1 != STRING2 ] 如果DIR存在并且是一个目录则为真 如果FILE存在且是一个普通文件则为真 如果STRING的长度为零则为真 如果STRING的长度非零则为真 如果两个字符串相同则为真 如果字符串不相同则为真 ARG1和ARG2应该是整数或者取值为整数 的变量,OP是-eq(等于)-ne(不等于) [ ARG1 OP ARG2 ] -lt(小于)-le(小于等于)-gt(大于) -ge(大于等于)之中的一个 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 127 / 175 与、或、非的测试命令 和C语言类似,测试条件之间还可以做与、或、非逻辑运算: [ ! EXPR ] [ EXPR1 −a EXPR2 ] [ EXPR1 −o EXPR2 ] EXPR可以是上表中的任意一种测试条件,!表示逻辑反 EXPR1和EXPR2可以是上表中的任意一种测试条件,-a表示逻辑与 EXPR1和EXPR2可以是上表中的任意一种测试条件,-o表示逻辑或 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 128 / 175 if/then/elif/else/fi语句 和C语言类似,在Shell中用 i f 、then、 e l i f 、 e l s e 、 f i 这几条命令实 现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的  #! /bin/sh echo ”Is�it�morning?�Please�answer�yes�or�no.” read YES_OR_NO if [ ”$YES_OR_NO” = ”yes” ]; then echo ”Good�morning!” elif [ ”$YES_OR_NO” = ”no” ]; then echo ”Good�afternoon!” else echo ”Sorry,�$YES_OR_NO�not�recognized.�Enter�yes�or�no.” exit 1 fi exit 0   第一行#!�/bin/sh指名直接采用./脚本名方式运行时使用的SHELL,如果采取外部shell 脚本名,比如bash 脚本名方式运行, . 则使用bash而不是/bin/sh运行 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 129 / 175 case/esac选择语句 c a s e 命令可类比C语言的switch/case语句, e s a c 表示 c a s e 语句块 的结束 C语言的case只能匹配整型或字符型常量表达式,而Shell脚本 的 c a s e 可以匹配字符串和通配符 每个匹配分支可以有若干条命令,末尾必须以 ; ; 结束 执行时找到第一个匹配的分支并执行相应的命令,然后直接跳 到 e s a c 之后,不需要像C语言一样用break跳出  #! /bin/sh echo ”Is�it�morning?�Please�answer�yes�or�no.” read YES_OR_NO case ”$YES_OR_NO” in yes|y|Yes|YES) echo ”Good�Morning!”;; [nN]*) echo ”Good�Afternoon!”;; *) echo ”Sorry,�$YES_OR_NO�not�recognized.�Enter�yes�or�no.” esac  . 李会民 (中国科大超算中心) Linux操作系统使用基础  . . . 2011年10月 . . 130 / 175 for/do/done循环 Shell脚本的 f o r 循环结构和C语言很不一样,它类似于某些编程语言 的foreach循环。例如:  #! /bin/sh for FRUIT in apple banana pear; do echo ”I�like�$FRUIT” done   以下脚本ssh到node1至node100并打印主机名  #! /bin/sh for i in $(seq 1 100) do ssh node$i hostname done   . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 131 / 175 while/do/done循环 w h i l e 的用法和C语言类似。如一个监视进程内存利用情况的脚本:  #!/bin/bash #Program: monitor.sh # Author: HM Li # Date: 09−12−14 #Comment: Monitor CPU and Memory while [ 0 ] do date echo −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− echo ”RUSER������PID�%CPU�COMMAND���������%MEM����SZ” ps −o ”%u�%p�%C�%c” −o ”%mem,size” −U hmli,xiran | sort −nr −k 5 | head −n 10 sleep 10 done   以上脚本是个死循环,只能利用 k i l l 等杀掉 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 132 / 175 位置参数和特殊变量 有很多特殊变量是被Shell自动赋值的: $0 $1、$2. . . $# $@ $* $? $$ 相当于C语言main函数的argv[0] 这些称为位置参数(Positional Parameter), 相当于C语言main函数的argv[1]、argv[2]... 相当于C语言main函数的argc - 1,注意#后面不表示注释 表示参数列表”1” ”2” . . .,例如可用在for循环中的in后面 表示参数列表”1”c”2”c. . .,c为Shell分割符IFS的第一个字符, 如未设置则为空格 上一条命令的Exit Status 当前Shell的进程号 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 133 / 175 位置参数移动shift 位置参数可以用 s h i f t 命令左移。比如 s h i f t�3表示原来的 $4现在变 成 $1,原来的 $5现在变成 $2等,原来的 $1、$2、$3丢弃,$0不移动。 不带参数的 s h i f t 命令相当于 s h i f t�1。例如:  #! /bin/sh echo ”The�program�$0�is�now�running” echo ”The�first�parameter�is�$1” echo ”The�second�parameter�is�$2” echo ”The�parameter�list�is�$@” shift echo ”The�first�parameter�is�$1” echo ”The�second�parameter�is�$2” echo ”The�parameter�list�is�$@”  . 李会民 (中国科大超算中心) Linux操作系统使用基础  . . . 2011年10月 . . 134 / 175 函数 和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也 没有参数列表。例如:  #! /bin/sh foo(){ echo ”Function�foo�is�called”;} echo ”-=start=-” foo echo ”-=end=-”   注意函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一 条命令和右花括号}写在同一行,命令末尾必须有 ; 。 在定义foo()函数时并不执行函数体中的命令,就像定义变量一样,只是给foo这 个名字一个定义,到后面调用foo函数的时候(注意Shell中的函数调用不写括 号)才执行函数体中的命令。Shell脚本中的函数必须先定义后调用,一般把函 数定义都写在脚本的前面,把函数调用和其它命令写在脚本的最后(类似C语 言中的main函数,这才是整个脚本实际开始执行命令的地方) 。 Shell函数没有参数列表并不表示不能传参数,事实上,函数就像是迷你脚本, 调用函数时可以传任意个参数,在函数内同样是用$0、$1、$2等变量来提取 参数,函数中的位置参数相当于函数的局部变量,改变这些变量并不会影响函 数外面的$0、$1、$2等变量。函数中可以用 r e t u r n 命令返回,如 r e t u r n 后面跟一个数字则表示函数的退出状态。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 135 / 175 函数举例 下面这个脚本可以一次创建多个目录,各目录名通过命令行参数传入, 脚本逐个测试各目录是否存在,如果目录不存在,首先打印信息然后试 着创建该目录。  #! /bin/sh is_directory() { DIR_NAME=$1 if [ ! −d $DIR_NAME ]; then return 1 else return 0 fi } for DIR in ”$@”; do if is_directory ”$DIR”; then : else echo ”$DIR�doesn’t�exist.�Creating�it�now...” mkdir $DIR > /dev/null 2>&1 if [ $? −ne 0 ]; then echo ”Cannot�create�directory�$DIR” exit 1 fi fi done  李会民 (中国科大超算中心) Linux操作系统使用基础 . . . . 2011年10月 . .  136 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 137 / 175 高效编辑:两大编辑器VIM与Emacs 有人说:世界上的程序员分三种,一种使用Emacs,一种使用VIM(VI的 改良版),剩余的是其它(完全无视其他编辑器的存在……) VIM号称编辑器的神,Emacs号称神的编辑器,用户群都非常广 由于区分了模式,导致VI的命令非常简洁,而无模式编辑器比如Emacs, 所有的命令都需要加上控制键Ctrl或Alt,所以有个笑话说Emacser们最希 望计算机备一个脚踏板,这样就可以用脚踩Ctrl和Alt键了(编辑器圣战 ——在VI和Emacs之间有很多口水战,自然也引出非常多的幽默) VI继承了ed的理念,VI追求的是快捷——启动程序迅速,编辑文本高效, 功能专注 Emacs追求的是功能的丰富强大以及集成带来的方便,在Emacs里头可以 发邮件,上新闻组,听mp3,浏览网页,玩游戏,几乎可以 login->Emacs->logout了:-) VI和Emacs都是程序员的编辑器,相比而言,Emacs更是提供了一种程序 员的生活氛围 建议看看VIM作者Bram Moolenaar写的Seven Habits of Effective Text Editing,可从以下地址下载: http://scc.qibebt.cas.cn/docs/doc-main.php?dir=linux . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 138 / 175 有趣图片 Emacs:太重量级了 VIM:太奇怪了 notepad+:太累了 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 139 / 175 VI/VIM编辑器简介 Bram Moolenaar 80年代末从一个开源的VI复制Stevie开始,开发了 VIM的1.0版本。最初的目标只是完全复制VI的功能,那个时候 的VIM是Vi IMitation(模拟)的简称。1992年1.22版本的VIM被移 植到了UNIX和MS-DOS上。从那个时候开始,VIM的全名就变 成Vi IMproved(改良)了。 VIM加入了非常多新功能:多视窗编辑模式(分割视窗),同一屏 幕显示的编辑文件数可以不止一个;图形界面(GUI) ;highlight (语法高亮);代码折叠、插件、多国语言支持、垂直分割视窗;拼 字检查、上下文相关补全,标签页编辑;脚本的浮点数支持。 目前,VIM是按照GPL协议发布的开源软件。它的协议中包含一些 慈善条款,建议用户向荷兰ICCF捐款,用于帮助乌干达的艾滋病患 者。VIM启动时会显示Help poor children in Uganda!的字样,在中 文版本中则是帮助乌干达的可怜儿童! . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 140 / 175 VI/VIM模式 VI/VIM大体可以分为两种模式: 命令模式:从键盘上输入的任何字符都被作为编辑命令来解释, 按进入此模式。 输入模式:从键盘上输入的所有字符都被插入到正在编辑的缓冲区 中,被当作正文,按a、i、c、o等进入此模式。 实际VIM具有6种基本模式和5种派生模式。以下介绍基于VIM,VI仅支 持部分以下功能 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 141 / 175 VIM基本模式 普通模式 在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是VIM启动后的默认模式。这正好 和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。 VIM强大的编辑能力中很大部分是来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命 令”dd”删除当前行,但是第一个”d”的后面可以跟另外的移动命令来代替第二个”d”,比如用移动到下一行的”j”键就可以 删除当前行和下一行。另外还可以指定命令重复次数,”2dd”(重复”dd”两次) ,和”dj”的效果是一样的。用户学习了各 种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑 器更加高效的进行文本编辑。 在普通模式中,有很多方法可进入插入模式。比较普通的方式是按”a”(append/追加)或者”i”(insert/插入)键。 插入模式 在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。 在插入模式中,可以按键回到普通模式。 可视模式 这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行 一个非移动命令时,命令会被执行到这块高亮的区域上。VIM的”文本对象”也能和移动命令一样用在这个模式中。 选择模式 这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选 择文本,不过输入任何字符的话,VIM会用这个字符替换选择的高亮文本块,并且自动进入插入模式。 命令行模式 在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(”:”键),搜索(”/”和”?”键)或者过滤命令 (”!”键)。在命令执行之后,VIM返回到命令行模式之前的模式,通常是普通模式。 Ex模式 这和命令行模式比较相似,在使用”:visual”命令离开Ex模式前,可以一次执行多条命令。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 142 / 175 VIM派生模式 操作符等待模式 此派生模式指普通模式中,执行一个操作命令后VIM等待一个”动作”来完 成这个命令。VIM也支持在操作符等待模式中使用”文本对象”作为动作, 包括”aw”一个单词(a word)、”as”一个句子(a sentence)、”ap”一个段落(a paragraph)等。如,在普通模式下”d2as”删除当前和下一个句子。在可视 模式下”apU”把当前段落所有字母大写。 插入普通模式 这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普 通模式,执行完一个命令之后,VIM返回插入模式 插入可视模式 这个模式是在插入模式下按下ctrl-o键并且开始一个可视选择的时候开始。 在可视区域选择取消的时候,VIM返回插入模式。 插入选择模式 通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域 取消的时候,VIM返回插入模式。 替换模式 这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作, 但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下 按”R”键进入。 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 143 / 175 进入/退出VIM 进入VIM vim�f i l e 退出VIM :q :退出未被编辑或已保存的文件 :q! :强行退出VIM,放弃未保存的修改 :x :存盘退出VIM :wq :存盘退出VIM . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 144 / 175 查询帮助 在命令模式下 : h e l p 或 h e l p�keyword可以进入在线帮助 移动光标到对应主题(用 | | 括起部分)按,进入此主题 按返回上一级 按q退出帮助 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 145 / 175 文本输入 以下操作在命令模式下 插入命令: i :插在当前光标之前 I :插在当前行的最开始 附加命令: a :插在当前光标之后 A :插在当前行的最后 新行命令: o :在当前行的下一行另开新空白行开始输入 O :在当前行的上一行另开新空白行开始输入 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 146 / 175 移动光标 以下操作在命令模式下 建议用 h j k l 移动光标,以保证手不离开键盘的主输入区输入更快 -上移一行,+下移一行 - k ← Backspace h → Space l + j ↓ . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 147 / 175 行列移动光标 以下操作在命令模式下 移至行首:ˆ、0(数字零) 移至行尾:$ 移至指定行::[行号]回车或[行号]G 移至指定百分比的行:[百分比]% 移至指定列:[列号]| . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 148 / 175 上下翻屏 以下操作在命令模式下 滚屏命令:,分别向上和向下滚动半个窗口 分页命令:,分别向前和向后分页 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 149 / 175 文本删除 以下操作在命令模式下 删除字符 x或nx:从光标所在的位置删除一个或n个字符 X或nX:删除光标前的一个或n个字符 删除文本对象 dd:删除光标所在的行 D:删除从光标位置开始至行尾 dw:删除从光标位置至该词末的所有字符 d0:删除从光标位置开始至行首 d5G:将光标所在行至第5行删除 dG:将光标所在行到文件末尾删除 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 150 / 175 修改命令 以下操作在命令模式下 r:替换一个字符 R:替换本行光标出字符以后的 c:替换掉光标处字符并添加 C:修改光标后的到行尾 ∼:大小写转换: guu:本行全部转化为小写 gUU:本行全部转化为大写 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 151 / 175 搜索和替换命令 以下操作在命令模式下 搜索:/所要搜索的内容 替换::[range]s/所要被替换的内容/替换成的内容/[flags],如果 [range]为%,则对每一行都执行替换,如果[flag]为g,则对同一行内 所有匹配的都执行替换,否则只对第一次匹配的替换。支持正则表 达式,如把2009-01-31或2009-1-3格式的日期全部替换为01/31/2009 和1/3/2009格式: %s \v ( \ d {4}) −(\ d { 1 , 2 }) − ( \ d { 1 , 2 } ) \ 2 / \ 3 / \ 1 g . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 152 / 175 复原和重复命令 以下操作在命令模式下 u:若插入后用此命令,就删除刚插入的正文;若删除后用它,则 插入刚删除的正文 U:把当前行恢复成它被编辑之前的状态 .:重复实现刚才的插入命令或删除命令 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 153 / 175 可视模式 在命令模式下输入进入可视模式,可以移动光标选择行列块, 并对此块内的内容进行处理 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 154 / 175 文件比较:vimdiff vim�−d多个文件或 v i m d i f f 多个文件,可以对多个文件进行比较编辑 在差异行处,利用对应命令可以消除文件对应部分的差异 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 155 / 175 要遵守的一般步骤提要 进入VIM 到输入模式 输入文本 到命令模式 保存缓冲区到文件 退出VIM 键入vim并按回车 按a或i 将文本键入缓冲区 按 键入:w file并按回车 键入:q并按回车 gvim或vim�−g将启动图形界面的VIM,并支持鼠标操作 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 156 / 175 键盘映射 :map可以查看当前键盘映射,也可以设置键盘映射,如本人利用 LaTEX 和beamer写幻灯片时为了简化操作的映射: map��: set�pasteo\begin{frame}{<+frametitle+>}<++>\end{frame}2k那么在命令模式下,按后将自动输入以下内容,并将光标以插入模 式定位到{<+ f r a m e t i t l e +>}中,以方便输入内容: \ b e g i n { frame}{<+ f r a m e t i t l e +>}<++> \ end { frame } . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 157 / 175 VIM插件 VIM支持插件,可以针对不同的类型的文件自动完成某种操作或键盘映 射,以方便操作 比如,利用C语言的一个插件,运行vim�myprog . c将自动在myprog.c 中添加以下内容,还支持函数补全等 /* * ================================================================== * * Filename : myprog. c * * Description : * * Version : 1.0 * Created : 2009年12月16日 21时00分15秒 * Revision : none * Compiler : gcc * * Author: YOURNAME () , * Company: * * ================================================================= */ . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 158 / 175 VIM设置 用户可以在自己的/.vimrc中配置需要的VIM选项,”后的为注释 syntax on ” 打开语法高亮 set hlsearch ”搜索时高亮显示匹配的字符 filetype plugin on ”自动判断文件类型,比如判断C、Fortran源文件等 filetype indent on ”根据文件类型自动缩进 set nocompatible ”不使用兼容模式,功能强 set backspace=indent , eol , start ”设置backspace可以回退删除字符 set autoindent ”设置自动缩进 set textwidth=0 ”设置行宽,0,表示不自动换行 set backup ” 设置使用备份 set bdir=/tmp/vim ”设置备份目录,如果不设置,将自动对编辑的文件以在原文件名后添加的˜ 文件做为备份文件 set viminfo=’20,\”50 ”设置启动时读取历史信息的长度 set history=50 ”设置命令历史长度 set ruler ”设置显示当前光标位置 set ts=4 ”tabstop:设置tab长度 set sw=4 ”shiftwidth:设置自动使用每层缩进的空格数 ” The following are commented out as they cause vim to behave a lot ” different from regular vi . They are highly recommended though . set showcmd ”显示命令 set showmatch ”显示匹配 set ignorecase ”忽略大小写 set incsearch ”输入搜索命令时,显示目前输入的模式的匹配位置 set autowrite ”执行外部命令时自动保存 set encoding=2byte−cp936 ”设置使用中文2byte-cp936编码 l e t fortran_have_tabs=1 ”设置不要高亮Fortran 77源文件中的tab . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 159 / 175 VIM入门教程命令:vimtutor 在终端中输入 v i m t u t o r 可以调出自带的《VIM教程》,直接按照所说的 在启动的说明文件中进行操作即可,无需另打开其它文件进行学习。 VIM是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程 当中就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而 掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使 用了。 完成本教程的内容大约需要25-30分钟,取决于您训练的时间。 每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副 本上进行训练(如果您是通过”vimtutor”来启动教程的,那么本文就已经是 副本了)。 切记一点∶本教程的设计思路是在使用中进行学习的。也就是说,您需要 通过执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那 么您可能会很快遗忘这些命令的! . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 160 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 161 / 175 awk简介 awk名称得于它的创始人Alfred Aho、Peter Weinberger和Brian Kernighan姓氏的首字母 awk是Unix/Linux环境中现有的功能最强大的数据处理引擎之一 awk设计思想来源于SNOBOL4、sed、Marc Rochkind设计的有效性语言、 语言工具yacc和lex,还从C语言中获取了一些优秀的思想 awk具有完全属于其本身的语法,在很多方面类似Unix Shell编程语言 awk提供了极其强大的功能:可以进行正则表达式的匹配,样式装入、流 控制、数学运算符、进程控制语句甚至于内置的变量和函数 awk的目的是用于文本处理,只要在输入数据中有模式匹配,就执行一系 列指令,扫描文件中的每一行,查找与命令行中所给定内容相匹配的模 式,如发现匹配内容,则进行下一个编程步骤,如果找不到匹配内容,则 继续处理下一行 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 162 / 175 awk语法 awk命令的语法基本是:  awk ’{pattern + action}’ {filenames}   pattern表示awk在数据中查找的内容,支持正则表达式 action是在找到匹配内容时所执行的一系列命令 花括号({})不需要在程序中始终出现,但它们用于根据特定的模 式对一系列指令进行分组 pattern和action整体之外需用 ’ ’ 括起来 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 163 / 175 第一个awk  awk −F: ’{ print $1 }’ /etc/passwd   执行此awk命令时,它依次对输入文件/etc/passwd文件中的每一行 执行 p r i n t 命令,所有输出都发送到标准输出(stdout) 花括号用于将几块代码组合到一起,类似于C语言 p r i n t�$1命令,打印当前行的第一个字段 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 164 / 175 sed简介 在UNIX/Linux世界中有很多文本编辑器,如VI、VIM、Emacs等, 尽管其交互式特性可以成为强项,但也有其不足之处,如需对一组 文件执行类似更改的情形,使用者也许会本能地运行自己所喜爱的 编辑器,然后手工执行一组烦琐、重复和耗时的编辑任务,非常繁 琐。 如可使编辑文件的过程自动化,以便用“批处理”方式编辑文件, 甚至编写可以对现有文件进行复杂更改的脚本,那将太好了,有一 种更好的方法sed(stream editor for filtering and transforming text)。 sed是几乎包括在所有UNIX/Linux平台的轻量级流编辑器: 相当小巧,通常要比其它脚本语言小很多倍 sed是流编辑器,它可对从如管道这样的标准输入接收的数据进行编 辑,无需将要编辑的数据存储在磁盘上的文件中 可以轻易将数据管道输出到sed,所以将sed用作强大的shell脚本中长 而复杂的管道很容易 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 165 / 175 GNU sed 对Linux用户来说最好的sed版本之一恰好是GNU sed 每一个Linux发行版都有(或至少应该有)GNU sed GNU sed之所以流行不仅因为可以自由分发其源代码,还因为它恰 巧有许多对POSIX sed标准便利、省时的扩展 GNU sed没有sed早期专门版本的很多限制,如行长度限制,可处理 任意长度的行 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 166 / 175 sed处理方式 通过对输入数据执行任意数量指定的编辑操作(“命令”)来工作 基于行,因此按顺序对每一行执行命令 默认将其结果写入标准输出(stdout) ,不修改任何输入文件 如果添加-i参数则直接修改输入文件 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 167 / 175 sed与Unix/Linux命令等价代码 Unix/Linux命令 cat cat -s tac grep grep -v head head -1 tail tail -1 tail -f cut -c 10 cut -d: -f4 tr A-Z a-z tr a-z A-Z tr -s ’ ’ tr -d ’\012’ wc -l uniq rev basename dirname xargs paste -sd: cat -n grep -n cp orig new sed等价代码 sed ’:’ sed ’/./,/^$/!d’ sed ’1!G;h;$!d’ sed ’/patt/!d’ sed ’/patt/d’ sed ’10q’ sed ’q’ sed −e ’:a’ −e ’$q;N;11,$D;ba’ sed ’$!d’ sed −u ’/./!d’ sed ’s/(.){10}.*/1/’ sed ’s/(([^:]*):){4}.*/2/’ sed ’y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/’ sed ’y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/’ sed ’s/ +/ /g’ sed ’H;$!d;g;s/\n//g’ sed −n ’$=’ sed ’N;/^(.*)n1$/!P;D’ sed ’/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//’ sed ’s,.*/,,’ sed ’s,[^/]*$,,’ sed −e ’:a’ −e ’$!N;s/\n/ /;ta’ sed −e ’:a’ −e ’$!N;s/\n/:/;ta’ sed ’=’ | sed ’$!N;s/\n/ /’ sed −n ’/patt/{=;p;}’ | sed ’$!N;s/\n/:/’ sed ’w new’ orig[/code:1:739eb4cef5] . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 168 / 175 科学可视化:gnuplot Gnuplot是一种免费分发的绘图工具,可以移植到各种主流平台。 它可以下列两种模式之一进行操作:当需要调整和修饰图表使其正 常显示时,通过在gnuplot提示符中发出命令,可以在交互模式下操 作该工具。或者,gnuplot可以从文件中读取命令,以批处理模式生 成图表。例如,如果您正在运行一系列的实验,需要每次运行后都 查看结果图表;或者当您在图表最初生成很久以后需要返回图表修 改某些内容时,批处理模式能力会特别有用。当在WYSIWIG编辑 器中很难捕获用于修饰图表的鼠标单击事件时,您可以很容易地 将gnuplot命令保存在文件中,六个月后将其加载到交互式会话中重 新执行。 Gnuplot是在1986年由Colin Kelley和Thomas Williams最初开发的。 许多参与者都在为不同的“终端”创建变种方面做出了贡献。 在1989和1990年,这些变种被合并到gnuplot 2.0中。最新版本 为2011年3月发布的4.4.3。 http://www.ibm.com/developerworks/cn/linux/l-gnuplot/ http://www.gnuplot.info/ . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 169 / 175 简单实例 取自http://gnuplot.sourceforge.net/demo_4.2/surface2.9.gnu: # set terminal png transparent nocrop enhanced font arial 8 size 420,320 # set output ’ surface2 . 9 .png’ set dummy u, v set key bmargin center horizontal Right noreverse enhanced autotitles nobox set parametric set view 50, 30, 1 , 1 set isosamples 50, 20 set hidden3d o f f s e t 1 trianglepattern 3 undefined 1 altdiagonal bentover set t i c s l e v e l 0 set t i t l e Interlocking Tori ’ ’ set urange [ −3.14159 : 3.14159 ] noreverse nowriteback set vrange [ −3.14159 : 3.14159 ] noreverse nowriteback set zrange [ * : * ] noreverse nowriteback # ( currently [ −3.00000:1.50000] ) splot cos(u)+.5*cos(u)*cos(v) , sin (u)+.5*sin (u)*cos(v) ,.5* sin (v) with lines ,\ 1+cos(u)+.5*cos(u)*cos(v) ,.5* sin (v) , sin (u)+.5*sin (u)*cos(v) with lines 运行: g n u p l o t�s u r f a c e 2 . 9 . dem . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 170 / 175 科学可视化:GDL-GNU Data Language 开源的IDL (Interactive Data Language)兼容编译器,与IDL 7.1语法兼 容,含部分IDL 8特性。一个简单例子,利用 g d l 启动GDL,后输入以 下命令: d e v i c e , decomposed=1 p l o t , s i n ( f i n d g e n ( 3 6 0 ) * ! d t o r ) , c o l o r =’ f f 0 0 f f ’ xl , $ t i t l e =’ S i n ( x ) ’ , x t i t l e =’x ’ , y t i t l e =’ s i n ( x ) ’ , l i n e s t y l e =2 简单说明: device,decomposed=1设置显示设备使用颜色分解 sin:正弦函数 findgen(360):产生一个从0递增到359浮点序列 !dtor:系统变量,角度变弧度 color:设置也颜色 title:设置标题 xtitle:设置X轴标题 ytitle:设置Y轴标题 linestyle:设置曲线类型 主页:http://gnudatalanguage.sourceforge.net/ . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 171 / 175 另外一些推荐软件 C/C++、Fortran编译器:GCC 开源的matlab替代品:octave 元素周期表:gelemental与gperiodic 具有画图等功能强大的科学计算器:Qalculate! 强大的命令行计算器:wcale 数据图像比(如曲线)取数据:g3data . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 172 / 175 附录网络文档 常用论坛: 科大BBS Linux系统: http://bbs.ustc.edu.cn/cgi/bbsdoc?board=Linux 清华水木社区 Linux系统与应用: http://www.newsmth.net/bbsdoc.php?board=LinuxApp 清华水木社区 Linux开发与高级讨论: http://www.newsmth.net/bbsdoc.php?board=LinuxDev LinuxSir:http://www.linuxsir.org/ ChinaUnix:http://www.chinaunix.net/ Linux常用软件推荐集合汇总: http://www.linuxsir.org/bbs/showthread.php?t=199479 Linux指令大全: http://www.linuxsir.org/bbs/showthread.php?t=204304 . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 173 / 175 1. Linux操作系统简介 2. 系统的运行 3. 文件和目录 4. 进程 5. Linux工具 6. Shell基础 7. VI/VIM编辑器的使用 8. 一些推荐软件 9. 李会民 (中国科大超算中心) 联系信息 . Linux操作系统使用基础 . . . 2011年10月 . . 174 / 175 联系信息 李会民: 办公室:科大东区新科研楼A座网络信息中心二楼205室 办公电话:0551-3602248 电子信箱:hmli@ustc.edu.cn 个人主页:http://hmli.ustc.edu.cn 中国科大超算平台:http://scc.ustc.edu.cn . 李会民 (中国科大超算中心) Linux操作系统使用基础 . . . 2011年10月 . . 175 / 175

相关文章