1、linuxlinux环境高级编程基础知识环境高级编程基础知识Linux介绍Linux文件结构Linux常用命令Linux是类是类Unix操作系统,具有操作系统,具有Unix的许多特点,能运的许多特点,能运行主要的行主要的UNIX工具软件、应用程序和网络协议。工具软件、应用程序和网络协议。Linux是一个支持多用户、多进程、多线程、实时性较是一个支持多用户、多进程、多线程、实时性较好、功能强大而稳定的操作系统。好、功能强大而稳定的操作系统。Linux可以免费使用,遵循可以免费使用,遵循GPL(the GNU General Public License)声明,可以自由修改和传播。)声明,可以自由
2、修改和传播。Linux是目前运行硬件平台最多的操作系统,它可以运是目前运行硬件平台最多的操作系统,它可以运行在行在x86 PC、Sun Sparc、Digital Alpha、680 x0、PowerPC、MIPS等平台上。等平台上。Linux是完全符合是完全符合POSIX(The Portable Operating System Interface)标准的操作系统。标准的操作系统。真正的多用户、多任务操作系统;是符合POSIX标准的系统;提供shell命令解释程序和编程语言;提供强大的管理功能,包括远程管理功能;(SSH)具有内核的编程接口;具有图形用户接口;(KDE/Gnome)具有大量
3、有用的实用程序和通信、联网工具;Linux系统组成部分的源代码是开放的,任何人都能修改和重新发布它;Linux系统不仅可以运行自由发布的应用软件,还可以运行许多商业化的应用软件;它可以运行在几乎所有硬件平台上。19841984年,年,GNUGNU项目开始,旨在开发一个类似项目开始,旨在开发一个类似UnixUnix、并且是自由软件的完整操、并且是自由软件的完整操作系统作系统GNUGNU系统。(系统。(GNU GNU 是是“GNU is Not Unix”GNU is Not Unix”的递归缩写)。的递归缩写)。19911991年,年,GNUGNU计划已经开发出了许多工具软件,最受期盼的计划已经
4、开发出了许多工具软件,最受期盼的GNU CGNU C编译器已经编译器已经出现,出现,GNUGNU的操作系统核心的操作系统核心HURDHURD一直处于实验阶段,没有任何可用性,实质一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的上也没能开发出完整的GNUGNU操作系统,但是操作系统,但是GNUGNU奠定了奠定了LinuxLinux用户基础和开发用户基础和开发环境。环境。19911991年初,林纳斯年初,林纳斯托瓦兹开始在一台托瓦兹开始在一台386sx386sx兼容微机上学习兼容微机上学习minixminix操作系统。操作系统。19911991年年4 4月,林纳斯月,林纳斯托瓦兹开始酝酿
5、并着手编制自己的操作系统。托瓦兹开始酝酿并着手编制自己的操作系统。19911991年的年的1010月月5 5日,林纳斯日,林纳斯托瓦兹在托瓦兹在comp.os.minixcomp.os.minix新闻组上发布消息,正新闻组上发布消息,正式向外宣布式向外宣布LinuxLinux内核的诞生(内核的诞生(Freeminix-likeFreeminix-likekernel sources for 386-kernel sources for 386-ATAT)。)。19941994年年3 3月,月,Linux1.0Linux1.0发布,代码量发布,代码量1717万行,当时是按照完全自由免费的协万行,
6、当时是按照完全自由免费的协议发布,随后正式采用议发布,随后正式采用GPLGPL协议。协议。LinuxLinux与的结合后,吸引了众多的开发人员,并将项目下的与的结合后,吸引了众多的开发人员,并将项目下的库、库、EmacsEmacs、bashbash等移植到等移植到linuxlinux内核中。内核中。理查德马修斯托曼(Richard Matthew Stallman,RMS,生于1953年),自由软件运动的精神领袖、GNU计划以及自由软件基金会(Free Software Foundation)的创立者、著名黑客。他的主要成就包括Emacs及后来的GNU Emacs,GNU C 编译器及GNU
7、调试器。他于1989年与一群律师起草了广为使用的GNU通用公共协议证书(GNU General Public License,GNU GPL),创造性地提出了“反版权”(或“版权属左”,或“开权”,copyleft)的概念。李纳斯托沃兹,linux之父,全名Linus Benedic Torvalds,芬兰人,出生于1969.12.28。从1991年4月份起,LinusTorvalds开始酝酿并着手编制自己的操作系统。刚开始,他的目的很简单,只是为了学习Intel 386体系结构保护模式运行方式下的编程技术。但后来Linux的发展却完全改变了初衷。开源软件(open source softwa
8、re)自由软件(free software)免费软件特点特点WindowsLinux安全性能一般好稳定性好很好软件支持很好好硬件支持好一般源代码保密开放系统可调节性基于界面的规范性,更易于调节具有极大的可调节性使用方便性非常方便方便版权限制和费用有无技术支持好基于社团形式的Linux和和Windows两个操作系统各有优缺点,两者也在两个操作系统各有优缺点,两者也在很多情况下在互相借鉴,互相融合很多情况下在互相借鉴,互相融合。p 在易用性方面,在易用性方面,Windows仍然处于优势仍然处于优势p 在灵活性方面,在灵活性方面,Linux则占据上风则占据上风 p 在安全性方面,在安全性方面,Lin
9、ux系统比系统比Windows系统好系统好 p 在软件支持方面,一直是在软件支持方面,一直是 Windows 的强项的强项p Linux的真正优势是服务器操作系统的真正优势是服务器操作系统LinuxLinux操作系统源代码公开和免费的特点,使它迅速发展操作系统源代码公开和免费的特点,使它迅速发展壮大,赢得了许多大型软件公司的支持。壮大,赢得了许多大型软件公司的支持。LinuxLinux的应用领域:的应用领域:LinuxLinux服务器服务器 (中低端的应用服务器)(中低端的应用服务器)嵌入式嵌入式LinuxLinux系统系统 (信息家电、智能仪表)(信息家电、智能仪表)桌面市场(办公软件、电子
10、政务)桌面市场(办公软件、电子政务)Linux只是一个内核。为了安装方便,将只是一个内核。为了安装方便,将linux内核,系内核,系统软件,应用软件打包在一起发行,称作发行版本。统软件,应用软件打包在一起发行,称作发行版本。Linux的版本分为发行版本和内核版本,而内核版本又的版本分为发行版本和内核版本,而内核版本又分为开发版本和稳定版本,开发版本和稳定版本是相互分为开发版本和稳定版本,开发版本和稳定版本是相互关联的关联的。Linux的内核版本的内核版本号有三个数字组成:号有三个数字组成:r.x.yr:目前发布的:目前发布的Kernel版本版本x:偶数:稳定版本,奇数:开发中版本:偶数:稳定版
11、本,奇数:开发中版本y:错误修补的次数:错误修补的次数.范例:范例:kernel 2.0.38;kernel 2.6.13-17linux内核网站:内核网站:http:/www.kernel.org/查看内核版本命令:查看内核版本命令:uname acat/proc/versionLinux 发行套件(发行套件(Distribution):以:以Linux Kernel为核为核心,搭配各种应用程序和工具。心,搭配各种应用程序和工具。许多个人、组织和企业,开发了基于许多个人、组织和企业,开发了基于GNU/Linux的的Linux发行版。发行版。目前有目前有200余种余种Linux Distrib
12、ution Linux发行版大体可以分为两类:商业公司维护发行版大体可以分为两类:商业公司维护和社区社区组织维护。前者以著名的组织维护。前者以著名的Redhat(RHEL)为代表,后)为代表,后者以者以Debian为代表。为代表。查看发行版本命令:查看发行版本命令:cat/etc/issue cat/etc/issue cat/etc/redhat-releasecat/etc/redhat-release 比较流行的比较流行的Linux发行版本:发行版本:Red Hat:http:/Mandrake:http:/www.linux- Enterprise Linux 5完全安装大概需要占用完
13、全安装大概需要占用5G左左右的磁盘空间,最小安装也在右的磁盘空间,最小安装也在1G以上;系统的最小内存以上;系统的最小内存为为512M,推荐配置在,推荐配置在1G以上。以上。三种安装方式:三种安装方式:光盘安装光盘安装 硬盘安装硬盘安装 网络安装网络安装Linux 操作系统里,一切皆文件操作系统里,一切皆文件普通文件普通文件 文本文件文本文件 二进制文件二进制文件 可执行程序,声音,图像文件可执行程序,声音,图像文件 硬链接:硬链接:软链接:软链接:Linux文件类型文件类型/dev/ttys1dev/ttys1:标准终端标准终端/dev/hdadev/hda:第一块第一块IDEIDE硬盘硬盘
14、 例:用户使用例:用户使用lplp打印一个文件时,打印一个文件时,lplp建立打印建立打印进程并向一个管道发送信息进程并向一个管道发送信息Linux文件类型文件类型用颜色代表不同文件:蓝色:目录绿色:可执行文件红色:压缩文件浅蓝色:链接文件灰色:其他文件Linux文件类型文件类型Linux文件属性文件属性Linux文件属性文件属性/etc是etcetera的缩写。存放系统配置文件和子目录,它是系统中最重要的目录之一,用户要用到的网络配置文件、文件系统、X-Windows系统配置文件、设备配置信息、设置用户信息等都在这个目录下。/var 主要存放一些系统运行时要改变的数据。比如spool目录(m
15、ail、news、打印机等用的),log文件、formatted manual pages和暂存文件。/usr用户所有程序几乎都安装在这里,Linux系统中占用空间最大的目录。/usr/share/man,/usr/local/man:这两个目录为放置各类套件说明档的地方,例如你如果执行 man man,则系统会自动去找这两个目录下的所有说明文件/bin,/sbin,/usr/bin,/usr/sbin:放置系统预设的可执行文件,其中,/bin,/usr/bin 是给系统使用者使用的指令,而/sbin,/usr/sbin 则是给系统管理员使用的指令Linux Linux 系统区分英文字符的大小
16、写。命名目录和命名文件的规则是相同系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。在的。在LinuxLinux下以下以.开头的文件是属于隐藏文件。开头的文件是属于隐藏文件。Linux Linux 系统下的文件名长度最多可到系统下的文件名长度最多可到256256个字符。通常情况下,文件名的个字符。通常情况下,文件名的字符包括:字母、数字、字符包括:字母、数字、“.”(.”(点点)、“_”(_”(下划线下划线)和和“-”(-”(连字符连字符)。和和DOSDOS一样,一样,“.”.”和和“.”.”分别用来表示分别用来表示“当前目录当前目录”和和“父目录父目录”,因此它们也不能单独作为文件
17、名。因此它们也不能单独作为文件名。“/”/”既可代表目录树的根也可作为路径名中的分隔符(类似既可代表目录树的根也可作为路径名中的分隔符(类似DOSDOS下的下的“”),因此),因此“/”/”不能出现在文件名中。不能出现在文件名中。文件名中可以有文件名中可以有(空格空格),但建议用户用,但建议用户用_(_(下划线下划线)来替代。来替代。有些转意字符在有些转意字符在shellshell中有特殊的含义,在文件名中应尽量避免使用这些中有特殊的含义,在文件名中应尽量避免使用这些字符。这样的转意字符有:字符。这样的转意字符有:?(?(问号问号),),*(星号星号),(),(空格空格),$(),$(货货币符
18、币符),&,),&,扩号等等。扩号等等。Linux文件文件命名规则命名规则 Linux常用命令常用命令区分大小写区分大小写command为命令的名称为命令的名称(系统命令一般都是小写)(系统命令一般都是小写)中括号不存在,只是表示可选,进行参数设定时,通常中括号不存在,只是表示可选,进行参数设定时,通常为为“-”,若为完整参数名称,则输入,若为完整参数名称,则输入“-”符号符号command options arguments这几项之间以空格隔开,空格无这几项之间以空格隔开,空格无论多少,都视为论多少,都视为1个个指令太长时,可以使用指令太长时,可以使用“”继续到下一行继续到下一行命令提示符表
19、示命令输入的状态命令提示符表示命令输入的状态 管理员管理员rootroot用户的提示符用户的提示符“#”rootlocalhost#普通用户提示符普通用户提示符“$”teacherlocalhost$相对路径是以相对路径是以“.”或或“.”开始的目录路径表示形开始的目录路径表示形式式 cd./testls./bin绝对路径是以绝对路径是以“/”开始的路径表示形式开始的路径表示形式 ls/cd/home/表示用户主目录;表示用户主目录;“-”-”表示进入此工作目录表示进入此工作目录前所在的目录前所在的目录././表示当前目录;表示当前目录;././表示父级目录表示父级目录 helphelp命令命
20、令$help pwd$help pwd“-help”“-help”命令选项命令选项$touch-help$touch-help使用使用manman命令阅读手册页命令阅读手册页$man ls$man ls使用使用infoinfo命令阅读信息页命令阅读信息页$info ls$info ls目录操作命令目录操作命令 ls pwd cd mkdir rmdir文件操作命令文件操作命令 touch cp rm mv find 文本文件查看命令文本文件查看命令 cat more less head tail命令命令功能功能ls显示指定目录和文件的信息显示指定目录和文件的信息pwd显示当前目录名称显示当前目
21、录名称cd进入指定的目录进入指定的目录mkdir创建指定名称的目录创建指定名称的目录rmdir删除指定名称的目录删除指定名称的目录列目录列目录$ls$ls-l显示当前目录名称显示当前目录名称$pwd更改当前目录更改当前目录$cd/etc$cd./bin建立和删除目录建立和删除目录$mkdir mydir$rmdir mydir命令命令功能功能touch建立指定名称的文件或更新文件建立指定名称的文件或更新文件时间时间cp复制文件或目录复制文件或目录rm删除文件或目录删除文件或目录mv移动文件或目录,文件或目录重移动文件或目录,文件或目录重命名命名find在指定目录查找符合条件的文件在指定目录查找
22、符合条件的文件建立空文件建立空文件$touch tfile文件查找文件查找 按文件名进行查找按文件名进行查找$find.-name file*按文件属主进行查找按文件属主进行查找$find.-user teacherv 复制和删除文件复制和删除文件$cp filea fileb$rm fileav 文件移动与重命名文件移动与重命名$mv filea fileb$mv filea dira/命令命令功能功能cat显示文本文件内容显示文本文件内容more分页显示文本文件内容分页显示文本文件内容less分页显示文本文件内容,并可方分页显示文本文件内容,并可方便反复浏览便反复浏览head显示文件首部内
23、容显示文件首部内容tail显示文件尾部内容显示文件尾部内容显示文本显示文本$cat/etc/passwd$cat/etc/passwd 分页显示文本分页显示文本$more/etc/passwd$more/etc/passwd分页文本浏览分页文本浏览$less/etc/passwd$less/etc/passwd显示文件首显示文件首$head-5/etc/passwd$head-5/etc/passwd显示文件尾显示文件尾$tail-5/etc/passwd$tail-5/etc/passwd命令命令功能功能su用于将普通用户身份转变为超级用于将普通用户身份转变为超级用户用户 ps显示当前系统中
24、由该用户运行的显示当前系统中由该用户运行的进程列表进程列表 kill删除执行中的程序或工作删除执行中的程序或工作 top实时显示系统当前进程运行状态实时显示系统当前进程运行状态变更用户身份变更用户身份$su root$su root 显示所有终端机下执行的程序显示所有终端机下执行的程序$ps-af$ps-af强制杀死进程强制杀死进程$kill-9 1101$kill-9 1101命令命令功能功能ifconfig网络信息查看网络信息查看ping测试和远程计算机的联网状态测试和远程计算机的联网状态 netstat查看网络状态查看网络状态显示网络设备信息显示网络设备信息$ifconfigifconf
25、ig配置配置eth1eth1网卡地址为网卡地址为192.168.1.6192.168.1.6,子网掩码,子网掩码255.255.255.0255.255.255.0$ifconfig ethifconfig eth0 0 192.168.1.6 netmask 255.255.255.0 192.168.1.6 netmask 255.255.255.0对文件和目录进行归档$tar cf myfiles.tar files/对文件和目录进行压缩归档$tar czf myfiles.tar.gz files/命令名命令选项c表示建立归档z表示对归档进行压缩f用于指定建立的归档文件名命令参数,归档
26、文件名命令参数,需要进行归档的文件或目录名查看归档文件中的目录列表$tar tf myfiles.tar查看压缩归档文件中的目录列表$tar tzf myfiles.tar.gz 命令名命令选项t表示查看归档z表示归档文件是压缩格式f用于指定归档文件名命令参数,需要查看的归档文件名恢复归档文件$tar xf myfiles.tar恢复压缩的归档文件$tar xzf myfiles.tar.gz恢复归档文件到指定目录$tar xzf myfiles.tar.gz-C restore/命令命令功能功能adduser添加用户帐号添加用户帐号passwd设置(更改)用户口令设置(更改)用户口令user
27、del删除用户帐号(及宿主目删除用户帐号(及宿主目录)录)建立用户帐号建立用户帐号#adduser st01设置用户口令设置用户口令#passwd st01删除用户帐号删除用户帐号#userdel-r st01命令命令功能功能groupadd添加指定名称的用户组帐添加指定名称的用户组帐号号groupdel删除指定名称的用户组帐删除指定名称的用户组帐号号添加用户组添加用户组#groupadd class1 在建立用户时指定用户组在建立用户时指定用户组#adduser-g class1 st03删除用户组删除用户组#groupdel class1读写执行读写执行读写执行字符表示(r)(w)(x)(
28、r)(w)(x)(r)(w)(x)数字表示421421421权限分配文件所有者文件所属组用户其他用户文件权限(文件权限(-rw-r-r-)#ls-linstall.log-rw-r-r-1rootroot26195Dec1710:42install.log权限表示权限表示chmodchmod命令用于更改文件对于某类用户的操作权限命令用于更改文件对于某类用户的操作权限 chmod ugoa.+-=rwx FILE.设置权限的设置权限的对象,可以是对象,可以是用户、组、其用户、组、其他人或所有人他人或所有人属性操作符属性操作符+增加权限增加权限-减少权限减少权限=设置权限为设置权限为权限内容,可以
29、权限内容,可以是读、写、执行是读、写、执行权限的组合权限的组合被设置属性被设置属性的文件或目录的文件或目录用户和组:用户和组:u-文件拥有者;文件拥有者;g-文件所属组;文件所属组;o-其它用户其它用户权限:权限:r-读权限;读权限;w写权限;写权限;x执行权限执行权限(对于目录来说,表示切换到该目录对于目录来说,表示切换到该目录)权限数字代号:权限数字代号:r:读取权限,数字代号为:读取权限,数字代号为“4”。w:写入权限,数字代号为:写入权限,数字代号为“2”。x:执行或切换权限,数字代号为:执行或切换权限,数字代号为1。-:不具任何权限,数字代号为:不具任何权限,数字代号为0。使用使用c
30、hmodchmod命令设置文件权限命令设置文件权限 查看文件权限查看文件权限$ls-l afile-rw-rw-r-1 st01 class1 0 Apr 3 16:52 afile 增加文件属主增加文件属主st01st01的执行权限(的执行权限(x x)$chmod u+x afile 去除文件属组去除文件属组class1class1的写权限(的写权限(w w)$chmod g-w afile 设置其他用户的文件权限为可执行设置其他用户的文件权限为可执行$chmod u=rw,g=rw,o=r afile$chmod u=rw,g=rw,o=r afile 等价于等价于chmod 664 a
31、file chmod 664 afile chownchown命令用于设置文件的属主和属组命令用于设置文件的属主和属组 命令格式命令格式chown OWNER:GROUP FILE.设置文件设置文件afileafile的属主为用户的属主为用户st01st01#chown st01 afile 设置文件设置文件afileafile的属组为用户组的属组为用户组class1class1#chown:class1 afile 设置文件设置文件afile的属主为的属主为st03st03,并设置文件的属组为,并设置文件的属组为class2class2#chown st03:class2 afile shu
32、tdown-h now shutdown-h now 关闭系统关闭系统(1)(1)shutdown-h hours:minutes&shutdown-h hours:minutes&按预定时间关闭系统按预定时间关闭系统 shutdown-c shutdown-c 取消按预定时间关闭系统取消按预定时间关闭系统 shutdown-r now shutdown-r now 重启重启(1)(1)init 0 init 0 关闭系统关闭系统(2)(2)telinit 0 telinit 0 关闭系统关闭系统(3)(3)reboot reboot 重启重启(2)(2)logout logout 注销注销