《Linux环境高级编程基础知识》由会员分享,可在线阅读,更多相关《Linux环境高级编程基础知识(57页珍藏版)》请在金锄头文库上搜索。
1、Linux环境高级编程基础知识主要内容Linux介绍Linux文件结构Linux常用命令Linux是什么?Linux是类是类Unix操作系统,具有操作系统,具有Unix的许多特点,能运的许多特点,能运行主要的行主要的UNIX工具软件、应用程序和网络协议。工具软件、应用程序和网络协议。Linux是一个支持多用户、多进程、多线程、实时性较是一个支持多用户、多进程、多线程、实时性较好、功能强大而稳定的操作系统。好、功能强大而稳定的操作系统。Linux可以免费使用,遵循可以免费使用,遵循GPL(theGNUGeneral Public License )声明,可以自由修改和传播。)声明,可以自由修改和
2、传播。Linux是目前运行硬件平台最多的操作系统,它可以运是目前运行硬件平台最多的操作系统,它可以运行在行在x86PC、SunSparc、DigitalAlpha、680x0、PowerPC、MIPS等平台上。等平台上。Linux是完全符合是完全符合POSIX(ThePortableOperatingSystemInterface)标准的操作系统。标准的操作系统。Linux的特点 真正的多用户、多任务操作系统; 是符合POSIX标准的系统; 提供shell命令解释程序和编程语言; 提供强大的管理功能,包括远程管理功能;(SSH) 具有内核的编程接口; 具有图形用户接口;(KDE/Gnome)
3、具有大量有用的实用程序和通信、联网工具; Linux系统组成部分的源代码是开放的,任何人都能修改和重新发布它; Linux系统不仅可以运行自由发布的应用软件,还可以运行许多商业化的应用软件; 它可以运行在几乎所有硬件平台上。1984年,年, GNU项目开始,旨在开发一个类似项目开始,旨在开发一个类似Unix、并且是自由软件的完整、并且是自由软件的完整操作系统操作系统GNU系统。(系统。(GNU是是“GNUisNotUnix”的递归缩写)。的递归缩写)。1991年,年,GNU计划已经开发出了许多工具软件,最受期盼的计划已经开发出了许多工具软件,最受期盼的GNUC编译器编译器已经出现,已经出现,G
4、NU的操作系统核心的操作系统核心HURD一直处于实验阶段,没有任何可用性,一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的实质上也没能开发出完整的GNU操作系统,但是操作系统,但是GNU奠定了奠定了Linux用户基础用户基础和开发环境。和开发环境。1991年初,林纳斯年初,林纳斯托瓦兹开始在一台托瓦兹开始在一台386sx兼容微机上学习兼容微机上学习minix操作系统。操作系统。1991年年4月,林纳斯月,林纳斯托瓦兹开始酝酿并着手编制自己的操作系统。托瓦兹开始酝酿并着手编制自己的操作系统。 1991年的年的10月月5日,林纳斯日,林纳斯托瓦兹在托瓦兹在comp.os.minix新闻组
5、上发布消息,正新闻组上发布消息,正式向外宣布式向外宣布Linux内核的诞生(内核的诞生(Freeminix-likekernelsourcesfor386-AT)。)。 1994年年3月,月,Linux1.0发布,代码量发布,代码量17万行,当时是按照完全自由免费的协万行,当时是按照完全自由免费的协议发布,随后正式采用议发布,随后正式采用GPL协议。协议。Linux与的结合后,吸引了众多的开发人员,并将项目下的与的结合后,吸引了众多的开发人员,并将项目下的库、库、Emacs、bash等移植到等移植到linux内核中。内核中。Linux简史理查德马修斯托曼(RichardMatthewStall
6、man,RMS,生于1953年),自由软件运动的精神领袖、GNU计划以及自由软件基金会(FreeSoftwareFoundation)的创立者、著名黑客。他的主要成就包括Emacs及后来的GNUEmacs,GNUC编译器及GNU调试器。他于1989年与一群律师起草了广为使用的GNU通用公共协议证书(GNUGeneralPublicLicense,GNUGPL),创造性地提出了“反版权”(或“版权属左”,或“开权”,copyleft)的概念。GNU/LinuxGNU/Linux李纳斯托沃兹, linux之父,全名Linus Benedic Torvalds ,芬兰人,出生于1969.12.28。
7、从1991年4月份起,LinusTorvalds开始酝酿并着手编制自己的操作系统。刚开始,他的目的很简单,只是为了学习Intel 386体系结构保护模式运行方式下的编程技术。但后来Linux的发展却完全改变了初衷。 开源软件(open source software)自由软件(free software)免费软件开源软件vs自由软件Linux和Windows比较特点特点WindowsLinux安全性能一般好稳定性好很好软件支持很好好硬件支持好一般源代码保密开放系统可调节性基于界面的规范性, 更易于调节具有极大的可调节性使用方便性非常方便方便版权限制和费用有无技术支持好基于社团形式的Linux和
8、Windows比较Linux和和Windows两个操作系统各有优缺点,两者也在两个操作系统各有优缺点,两者也在很多情况下在互相借鉴,互相融合很多情况下在互相借鉴,互相融合。p在易用性方面,在易用性方面,Windows仍然处于优势仍然处于优势p在灵活性方面,在灵活性方面,Linux则占据上风则占据上风p在安全性方面,在安全性方面,Linux系统比系统比Windows系统好系统好 p在软件支持方面,一直是在软件支持方面,一直是Windows的强项的强项pLinux的真正优势是服务器操作系统的真正优势是服务器操作系统Linux操作系统源代码公开和免费的特点,使它迅速发展操作系统源代码公开和免费的特点
9、,使它迅速发展壮大,赢得了许多大型软件公司的支持。壮大,赢得了许多大型软件公司的支持。Linux的应用领域:的应用领域:Linux服务器服务器 (中低端的应用服务器)(中低端的应用服务器)嵌入式嵌入式Linux系统系统 (信息家电、智能仪表)(信息家电、智能仪表)桌面市场(办公软件、电子政务)桌面市场(办公软件、电子政务) Linux的应用领域Linux的版本Linux只是一个内核。为了安装方便,将只是一个内核。为了安装方便,将linux内核,系内核,系统软件,应用软件打包在一起发行,称作发行版本。统软件,应用软件打包在一起发行,称作发行版本。Linux的版本分为发行版本和内核版本,而内核版本
10、又的版本分为发行版本和内核版本,而内核版本又分为开发版本和稳定版本,开发版本和稳定版本是相互分为开发版本和稳定版本,开发版本和稳定版本是相互关联的关联的。Linux的内核版本Linux的内核版本的内核版本号有三个数字组成:号有三个数字组成:r.x.yr:目前发布的:目前发布的Kernel版本版本x:偶数:稳定版本,奇数:开发中版本:偶数:稳定版本,奇数:开发中版本y:错误修补的次数:错误修补的次数.范例:范例:kernel2.0.38;kernel2.6.13-17linux内核网站:内核网站:http:/www.kernel.org/Linux的内核版本查看内核版本命令:查看内核版本命令:u
11、nameacat/proc/versionLinux的发行版本Linux发行套件(发行套件(Distribution):以:以LinuxKernel为核为核心,搭配各种应用程序和工具。心,搭配各种应用程序和工具。许多个人、组织和企业,开发了基于许多个人、组织和企业,开发了基于GNU/Linux的的Linux发行版。发行版。目前有目前有200余种余种LinuxDistribution Linux发行版大体可以分为两类:商业公司维护发行版大体可以分为两类:商业公司维护和社区社区组织维护。前者以著名的组织维护。前者以著名的Redhat(RHEL)为代表,后)为代表,后者以者以Debian为代表。为代
12、表。查看发行版本命令:查看发行版本命令:cat/etc/issuecat/etc/redhat-releaseLinux的发行版本Linux的发行版本比较流行的比较流行的Linux发行版本:发行版本:RedHat:http:/Mandrake:http:/www.linux- Linux的安装Linux硬件要求:硬件要求:Linux内核运行对硬件的要求很低;内核运行对硬件的要求很低;在嵌入式系统中使用的在嵌入式系统中使用的Linux内核大多不到内核大多不到100K;Linux服务器版或者桌面版相对比较庞大,例如:服务器版或者桌面版相对比较庞大,例如:RedHatEnterpriseLinux5
13、完全安装大概需要占用完全安装大概需要占用5G左左右的磁盘空间,最小安装也在右的磁盘空间,最小安装也在1G以上;系统的最小内存以上;系统的最小内存为为512M,推荐配置在,推荐配置在1G以上。以上。Linux的安装三种安装方式:三种安装方式: 光盘安装光盘安装 硬盘安装硬盘安装 网络安装网络安装Linux文件结构Linux操作系统里,一切皆文件操作系统里,一切皆文件普通文件普通文件文本文件文本文件二进制文件二进制文件 可执行程序,声音,图像文件可执行程序,声音,图像文件 目录文件目录文件目录文件目录文件 链接文件链接文件链接文件链接文件硬链接:硬链接:相当于一个文件的两个副本,指向同一数相当于一
14、个文件的两个副本,指向同一数据存储区据存储区软链接:软链接:相当于一个文件的快捷方式相当于一个文件的快捷方式Linux文件类型文件类型 设备文件设备文件设备文件设备文件/ /dev/ttys1:标准终端标准终端/ /dev/hda:第一块第一块IDE硬盘硬盘 管道文件管道文件管道文件管道文件例:用户使用例:用户使用lp打印一个文件时,打印一个文件时,lp建立打印进建立打印进程并向一个管道发送信息程并向一个管道发送信息Linux文件类型文件类型用颜色代表不同文件:蓝色:目录绿色:可执行文件红色:压缩文件浅蓝色:链接文件灰色:其他文件Linux文件类型文件类型Linux文件属性文件属性Linux文
15、件属性文件属性Linux文件结构/etc是etcetera的缩写。存放系统配置文件和子目录,它是系统中最重要的目录之一,用户要用到的网络配置文件、文件系统、X-Windows系统配置文件、设备配置信息、设置用户信息等都在这个目录下。/var主要存放一些系统运行时要改变的数据。比如spool目录(mail、news、打印机等用的),log文件、formattedmanualpages和暂存文件。/usr用户所有程序几乎都安装在这里,Linux系统中占用空间最大的目录。/usr/share/man,/usr/local/man:这两个目录为放置各类套件说明档的地方,例如你如果执行 manman,则
16、系统会自动去找这两个目录下的所有说明文件 /bin,/sbin,/usr/bin,/usr/sbin:放置系统预设的可执行文件,其中, /bin,/usr/bin是给系统使用者使用的指令,而 /sbin,/usr/sbin则是给系统管理员使用的指令几个重要的目录Linux系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。在在Linux下以下以.开头的文件是属于隐藏文件。开头的文件是属于隐藏文件。Linux系统下的文件名长度最多可到系统下的文件名长度最多可到256个字符。通常情况下,文件名的个字符。通常情况下,文件名的字符包括
17、:字母、数字、字符包括:字母、数字、“.”(点点)、“_”(下划线下划线)和和“-”(连字符连字符)。 和和DOS一样,一样,“.”和和 “ “.”分别用来表示分别用来表示“当前目录当前目录”和和“父目录父目录”,因此它们也不能单独作为文件名。因此它们也不能单独作为文件名。 “/”既可代表目录树的根也可作为路径名中的分隔符(类似既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的下的“”),因此),因此“/”不能出现在文件名中。不能出现在文件名中。文件名中可以有文件名中可以有(空格空格),但建议用户用,但建议用户用_(下划线下划线)来替代。来替代。 有些转意字符在有些转意字符在shell
18、中有特殊的含义,在文件名中应尽量避免使用这些中有特殊的含义,在文件名中应尽量避免使用这些字符。这样的转意字符有:字符。这样的转意字符有:?(问号问号),*(星号星号),(空格空格),$(货币符货币符),&,扩号等等。扩号等等。 Linux文件文件命名规则命名规则 Linux常用命令常用命令区分大小写区分大小写command为命令的名称为命令的名称(系统命令一般都是小写)(系统命令一般都是小写)中括号不存在,只是表示可选,进行参数设定时,通常中括号不存在,只是表示可选,进行参数设定时,通常为为“-”,若为完整参数名称,则输入,若为完整参数名称,则输入“-”符号符号commandoptionsar
19、guments这几项之间以空格隔开,空格无这几项之间以空格隔开,空格无论多少,都视为论多少,都视为1个个指令太长时,可以使用指令太长时,可以使用“”继续到下一行继续到下一行command-optionsargumentscommand-optionsarguments执行的命令执行的命令执行的命令执行的命令命令的选项,命令的选项,命令的选项,命令的选项,说明对命令说明对命令说明对命令说明对命令的要求的要求的要求的要求命令的参数,命令的参数,命令的参数,命令的参数,描述命令作用描述命令作用描述命令作用描述命令作用的对象的对象的对象的对象表示选项或参数可有可无,即参数并非必须表示选项或参数可有可无
20、,即参数并非必须表示选项或参数可有可无,即参数并非必须表示选项或参数可有可无,即参数并非必须命令提示符表示命令输入的状态命令提示符表示命令输入的状态管理员管理员root用户的提示符用户的提示符“#”rootlocalhost #普通用户提示符普通用户提示符“$”teacherlocalhost $Linux常用命令相对路径是以相对路径是以“.”或或“.”开始的目录路径表示开始的目录路径表示形式形式 cd ./testls ./bin绝对路径是以绝对路径是以“/”开始的路径表示形式开始的路径表示形式 ls /cd /home/表示用户主目录;表示用户主目录; “ “-”表示进入此工作目录前表示进
21、入此工作目录前所在的目录所在的目录./表示当前目录;表示当前目录;./表示父级目录表示父级目录 Linux常用命令help命令命令$helppwd“-help”命令选项命令选项$touch-help使用使用man命令阅读手册页命令阅读手册页$manls使用使用info命令阅读信息页命令阅读信息页$infols获得命令帮助文件、目录操作命令文件、目录操作命令目录操作命令目录操作命令ls pwd cd mkdir rmdir文件操作命令文件操作命令touch cp rm mv find 文本文件查看命令文本文件查看命令cat more lesshead tail目录操作命令目录操作命令命令命令功能
22、功能ls显示指定目录和文件的信息显示指定目录和文件的信息pwd显示当前目录名称显示当前目录名称cd进入指定的目录进入指定的目录mkdir创建指定名称的目录创建指定名称的目录rmdir删除指定名称的目录删除指定名称的目录目录操作命令实例目录操作命令实例列目录列目录$ ls$ ls -l显示当前目录名称显示当前目录名称$ pwd更改当前目录更改当前目录$ cd /etc$ cd ./bin建立和删除目录建立和删除目录$ mkdir mydir$ rmdir mydir文件操作命令文件操作命令命令命令功能功能touch建立指定名称的文件或更新文件建立指定名称的文件或更新文件时间时间cp复制文件或目录
23、复制文件或目录rm删除文件或目录删除文件或目录mv移动文件或目录,文件或目录重移动文件或目录,文件或目录重命名命名find在指定目录查找符合条件的文件在指定目录查找符合条件的文件文件操作命令实例文件操作命令实例建立空文件建立空文件$ touch tfile文件查找文件查找按文件名进行查找按文件名进行查找$ find . -name file*按文件属主进行查找按文件属主进行查找$ find . -user teacherv复制和删除文件复制和删除文件$ cp filea fileb$ rm fileav文件移动与重命名文件移动与重命名$ mv filea fileb$ mv filea dir
24、a/文本文件查看命令文本文件查看命令命令命令功能功能cat显示文本文件内容显示文本文件内容more分页显示文本文件内容分页显示文本文件内容less分页显示文本文件内容,并可方分页显示文本文件内容,并可方便反复浏览便反复浏览head显示文件首部内容显示文件首部内容tail显示文件尾部内容显示文件尾部内容文本文件查看命令实例文本文件查看命令实例显示文本显示文本$ cat /etc/passwd $ cat /etc/passwd 分页显示文本分页显示文本$ more /etc/passwd$ more /etc/passwd分页文本浏览分页文本浏览$ less /etc/passwd$ less
25、/etc/passwd显示文件首显示文件首$ head -5 /etc/passwd$ head -5 /etc/passwd显示文件尾显示文件尾$ tail -5 /etc/passwd$ tail -5 /etc/passwd用户系统命令用户系统命令命令命令功能功能su用于将普通用户身份转变为超级用于将普通用户身份转变为超级用户用户ps显示当前系统中由该用户运行的显示当前系统中由该用户运行的进程列表进程列表kill删除执行中的程序或工作删除执行中的程序或工作top实时显示系统当前进程运行状态实时显示系统当前进程运行状态用户系统命令命令实例用户系统命令命令实例变更用户身份变更用户身份 $ s
26、u root $ su root 显示所有终端机下执行的程序显示所有终端机下执行的程序 $ ps -af$ ps -af强制杀死进程强制杀死进程$ kill -9 1101$ kill -9 1101网络相关命令网络相关命令命令命令功能功能ifconfig网络信息查看网络信息查看ping测试和远程计算机的联网状态测试和远程计算机的联网状态netstat查看网络状态查看网络状态网络相关命令实例网络相关命令实例显示网络设备信息显示网络设备信息 $ $ ifconfigifconfig配置配置eth1网卡地址网卡地址为为192.168.1.6,子网掩,子网掩码码255.255.255.0 $ $ i
27、fconfig 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/tar命令建立归档命令名命令选项c表示建立归档z表示对归档进行压缩f用于指定建立的归档文件名命令参数,归档文件名命令参数,需要进行归档的文件或目录名查看归档文件中的目录列表 $ tar tf myfiles.tar查看压缩归档文件中的目录列表$ t
28、ar 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设置(更改)用户口令设置(更改)用户口令userdel删除用户帐号(及宿主目删除用户帐号(及宿主目录)录)用户帐号管理
29、用户帐号管理建立用户帐号建立用户帐号# adduser st01设置用户口令设置用户口令# passwd st01删除用户帐号删除用户帐号# userdel -r st01用户组管理命令用户组管理命令命令命令功能功能groupadd添加指定名称的用户组帐添加指定名称的用户组帐号号groupdel删除指定名称的用户组帐删除指定名称的用户组帐号号用户组管理命令实例用户组管理命令实例添加用户组添加用户组# groupadd class1在建立用户时指定用户组在建立用户时指定用户组 # adduser -g class1 st03删除用户组删除用户组# groupdel class1查看文件的权限属性
30、查看文件的权限属性权限项权限项读写执行读写执行读写执行字符表示(r)(w)(x)(r)(w)(x)(r)(w)(x)数字表示421421421权限分配文件所有者文件所属组用户其他用户文件权限(文件权限(-rw-r-r-)#ls-linstall.log-rw-r-r-1rootroot26195Dec1710:42install.log权限表示权限表示使用使用chmod命令更改文件属性命令更改文件属性chmod命令用于更改文件对于某类用户的操作权限命令用于更改文件对于某类用户的操作权限 chmod ugoa.+-=rwx FILE. 设置权限的对设置权限的对象,可以是用象,可以是用户、组、其他
31、户、组、其他人或所有人人或所有人属性操作符属性操作符+增加权限增加权限-减少权限减少权限=设置权限为设置权限为权限内容,可以权限内容,可以是读、写、执行是读、写、执行权限的组合权限的组合被设置属性的被设置属性的文件或目录文件或目录使用使用chmod命令更改文件属性命令更改文件属性用户和组:用户和组:u-文件拥有者;文件拥有者;g-文件所属组;文件所属组;o-其它用户其它用户权限:权限:r-读权限;读权限;w写权限;写权限;x执行权限执行权限(对于目录来说,表示切换到该目录对于目录来说,表示切换到该目录)权限数字代号:权限数字代号:r:读取权限,数字代号为:读取权限,数字代号为“4”。w:写入权
32、限,数字代号为:写入权限,数字代号为“2”。x:执行或切换权限,数字代号为:执行或切换权限,数字代号为1。-:不具任何权限,数字代号为:不具任何权限,数字代号为0。文件权限设置实例文件权限设置实例使用使用chmod命令设置文件权限命令设置文件权限查看文件权限查看文件权限$ ls -l afile-rw-rw-r- 1 st01 class1 0 Apr 3 16:52 afile增加文件属主增加文件属主st01的执行权限(的执行权限(x)$ chmod u+x afile去除文件属组去除文件属组class1的写权限(的写权限(w)$ chmod g-w afile设置其他用户的文件权限为可执行
33、设置其他用户的文件权限为可执行$chmodu=rw,g=rw,o=rafile等价于等价于chmod664afile设置文件属主和属组设置文件属主和属组chown命令用于设置文件的属主和属组命令用于设置文件的属主和属组命令格式命令格式chown OWNER:GROUP FILE.设置文件设置文件afile的属主为用户的属主为用户st01# chown st01 afile设置文件设置文件afile的属组为用户组的属组为用户组class1# chown :class1 afile设置文件设置文件afile的属主为的属主为st03,并设置文件的属组为,并设置文件的属组为class2# chown st03:class2 afileshutdown-hnow关闭系统关闭系统(1)shutdown-hhours:minutes&按预定时间关闭系统按预定时间关闭系统 shutdown-c取消按预定时间关闭系统取消按预定时间关闭系统 shutdown-rnow重启重启(1)init0关闭系统关闭系统(2)telinit0关闭系统关闭系统(3)reboot重启重启(2)logout注销注销 开关机命令其它其它clear-清屏清屏date-显示日期显示日期cal-显示指定年月的月历显示指定年月的月历echo显示文字显示文字