版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/9/23,1,第二章 Linux常用命令,zhang yuxiang 2004.4.20,2020/9/23,2,零、Linux文件系统的特征,2020/9/23,3,1. 没有C:D:的东西,只有目录 2. 不是扩展名为.bat .exe .com就是执行文件,是看文件本身有无x(执行)的属性 3. 文件名分大小写,abc.txt和ABC.txt是不同的文件 4. 文件名长度可达256个字节,其中不可包含*?|等符号 5. 想把文件或目录隐藏起来,第一个字用“.” 6. 没有“资源回收站”,删除文件时请小心,2020/9/23,4,一、Linux目录树结构,2020/9/23,5,
2、yxzhangtsai yxzhang$ cd / yxzhangtsai /$ ls -l total 153 drwxr-xr-x 2 root root 4096 Feb 10 02:06 bin drwxr-xr-x 3 root root 4096 Feb 10 00:05 boot drwxr-xr-x 17 root root 77824 Feb 11 14:45 dev drwxr-xr-x 41 root root 4096 Feb 16 15:18 etc drwxr-xr-x 8 root root 1024 Feb 9 22:44 home drwxr-xr-x 2 r
3、oot root 4096 Jun 22 2001 initrd drwxr-xr-x 6 root root 4096 Feb 10 02:12 lib drwxr-xr-x 2 root root 16384 Feb 10 05:35 lost+found drwxr-xr-x 2 root root 4096 Aug 30 00:10 misc drwxr-xr-x 3 root root 4096 Feb 9 22:05 mnt drwxr-xr-x 2 root root 4096 Aug 24 1999 opt dr-xr-xr-x 102 root root 0 Feb 11 2
4、2:45 proc drwx- 4 root root 4096 Feb 16 15:25 root drwxr-xr-x 2 root root 4096 Feb 14 21:28 sbin drwxrwxrwt 2 root root 4096 Feb 16 15:40 tmp drwxr-xr-x 16 root root 4096 Feb 10 01:28 usr drwxr-xr-x 20 root root 4096 Feb 14 21:41 var,2020/9/23,6,2020/9/23,7,Linux目录介绍 (1),2020/9/23,8,Linux目录介绍 (2),20
5、20/9/23,9,Linux目录介绍 (3),2020/9/23,10,Linux目录介绍 (4),2020/9/23,11,Linux目录介绍 (5),2020/9/23,12,二、VI 编辑器,2020/9/23,13,VI 编辑器,VI是全屏幕编辑器,为LINUX系统的主要编辑器。 本章主要内容 Vi 的工作方式 Vi 的启动与退出 文本输入 光标移动(插入方式、命令方式) 文本修改 编辑文件,2020/9/23,14,Vi 的启动与退出,(1) vi 的启动 输入vi命令后,便进入全屏幕编辑环境,此时的状态为命令方式。 vi 文件名 (2) vi 的退出 建议:首先键入“ESC”键,
6、以确保当前vi的状态为命令方式,输入下列命令,退出vi。 :w 将编辑缓冲区的内容写入文件 :q 退出vi :wq 将上面两步操作可以合成一步来完成。 :q 退出vi,此时的正文没有被更改过。 :q!强行退出vi,使更新内容不写回文件。,2020/9/23,15,vi的名字取自于visual。 有两种操作方式:命令方式和输入方式 命令方式下输入的大、小写是敏感的。,Vi 的工作方式,命令方式,输入方式,编辑文本,输入文本,a, A, i, I, o, O,ESC,vi,2020/9/23,16,文本输入,命令 结果 - - a 将输入文本插入在光标之后 A 将输入文本插入在当前行的行尾 i 将
7、输入文本插入在光标之前 I 将输入文本插入在当前行的开始 o 将在当前行的下一行处打开一新行 O 将在当前行的上一行处打开一新行 注意 ESC:使编辑状态从输入方式切换到命令方式,插入命令,附加命令,打开命令,2020/9/23,17,命令方式下光标移动,注释 字: 是由空格或标点符号分开的字母序列。 句子:是以句号(.)、问号(?)或感叹号(!)结束的字符序列,句子之间由两个 空格或一个回车分开。 段落:一个段落前后各有一个或多个空白行。,2020/9/23,18,、 字符及行间移动 命 令 结果 或 k 向上移一行 或 j 向下移一行 或 h 或 退格键 左移一个字符 或 l 或 空格 右
8、移一个字符 o 移到当前行的开始 $ 移到当前行的结尾 + 或 回车符 移到下一行的开始 - 移到上一行的开始,2020/9/23,19,命令方式下光标移动(续),2、 其它单位的移动 命 令 结果 - w 移到下一个字或标点符号 W 移到下一个字 e 移到这个字或标点符号的结束 E 移到字的下一结尾 b 回到字或标点符号的开始 B 移回到字的开始 ) 移到下一个句子的开始 ( 移到这个句子的开始 移到下一段落的开始 移到这一段落的上一开始,2020/9/23,20,文本修改(命令方式下),删除文本 1. x 与 X 命令的使用 命令 结果 - - x 删除当前字符。 nx 删除从当前字符开始
9、的n个字符。 X 删除当前字符的前一个字符。 nX 删除当前字符的前n个字符。 注意 n 为数字,为 1 时可省略。,2020/9/23,21,2. d与D命令的使用 用来将指定范围内文本删除,并存入缓冲区。 命令 结果 - - ndw 删除以当前字开始的n个字。 nd$ 删除以当前字符开始的n行字符。 ndd 删除从当前行开始的n行。 D 与d$同义。 d) 删除到下一句的开始。 d 删除到下一段的开始。 d 回车 删除两行。,2020/9/23,22,命令 结果 - - . 重复上一次所执行的命令。 u 取消最后一次所做的修改或删除。 U 取消此次到当前行来做的所有修改。,重复和取消操作,
10、2020/9/23,23,三、Linux常用命令,2020/9/23,24,Linux常用命令,Linux进入与退出系统 文件操作命令 命令的输入和输出 目录操作命令 有关口令、权限和帮助的命令 有关进程管理的命令 有关软盘的使用命令 有关光驱的使用命令 访问Windows分区的命令,2020/9/23,25,Linux命令的一般格式,命令名称 选择项 参数 选择项:用来扩展命令的特性或功能。 连字符+字母 $ls -l 参数:表示命令的自变量,如文件名,参数值等。 如:$ls l /home/zhangyx,2020/9/23,26,启动telnet服务,zhangyxlocalhost z
11、hangyx$ cd /etc/xinetd.d zhangyxlocalhost xinetd.d$ ls chargen daytime-udp finger rlogin talk time-udp chargen-udp echo ntalk rsh telnet wu-ftpd daytime echo-udp rexec rsync time zhangyxlocalhost xinetd.d$ cat telnet # default: on # description: The telnet server serves telnet sessions; it uses # un
12、encrypted username/password pairs for authentication. service telnet flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no zhangyxlocalhost xinetd.d$,2020/9/23,27,(一)文件操作命令,文件类型 普通文件:标志“-” 目录文件:标志“d” “点(.)”当前目录, “点点(.)”当前目录的上一级目录
13、。 以 “.” 开头的文件名表示隐含文件,可用ls al显示。 特别文件:对I/O硬件的存取模仿对普通文件的存取 块特别文件:标志“b”;字符特别文件:标志“c”。 文件属性 用户身份:拥有者User、同组者Group、其他Other 文件权限:读Read、写Write、执行eXecute -rwxr-r- 1 root root 20 Mar 12 14:44 test*,2020/9/23,28,zhangyxlocalhost zhangyx# ls -al total 64 drwxr-x- 4 root root 4096 Feb 14 22:02 . drwxr-xr-x 23 r
14、ootroot 4096 Feb 16 13:35 . -rw-r-r- 1 root root 1210 Feb 10 06:03 anaconda-ks.cfg -rw- 1 root root 12447 Feb 14 23:22 .bash_history -rw-r-r- 1 root root 24 Jun 11 2000 .bash_logout -rw-r-r- 1 root root 234 Jul 6 2001 .bash_profile -rw-r-r- 1 root root 217 Feb 9 22:06 .bashrc -rw-r-r- 1 root root 21
15、0 Jun 11 2000 .cshrc drwx- 2 root root 4096 Feb 14 21:54 .gnupg -rw- 1 root root 8 Feb 14 22:05 .mysql_history drwx- 2 root root 4096 Feb 10 00:44 .ssh -rw-r-r- 1 root root 196 Jul 11 2000 .tcshrc -rw-r-r- 1 root root 1126 Aug 24 1995 .Xresources,2020/9/23,29,文件显示命令(P35) cat:连接并显示文件 例如:$cat file1 fi
16、le2 file3 显示文本文件 more:h, q, 空格,回车,b, p, /, ! less:可以用光标键逐行滚动 pr: 显示文件内容 显示二进制文件 mn命令,2020/9/23,30,确定文件类型命令 file命令: 例如:$file m1.c m1.c: ascii text 例如:$file dir1 dir1: directory,2020/9/23,31,匹配、排序及显示指定内容的命令 在文件中查找给定模式的行:gerp, egrep, fgrep,zhangyxlocalhost zhangyx$ cat m1.c main() printf(man); zhangyxl
17、ocalhost zhangyx$ grep p m1.c printf(man); zhangyxlocalhost zhangyx$,2020/9/23,32,zhangyxlocalhost zhangyx$ cd / zhangyxlocalhost /$ cd etc zhangyxlocalhost /etc$ ls ftphosts lpd.conf pwdb.conf X11 ftpusers lpd.perms rc xinetd.conf gnome ltrace.conf rc0.d xinetd.d gpm-root.conf lynx.cfg rc1.d yp.con
18、f group mail rc2.d ypserv.conf zhangyxlocalhost /etc$ cat passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: user:x:501:501:/home/user:/bin/bash yxzhang:x:502:502:/home/yxzhang:/bin/bash zhangyxlocalhost /etc$ grep zhangyx passwd zhangyx:x:500:500:/home/zhangyx:/bin/bash zhangyxlocalhost /et
19、c$,2020/9/23,33,在目录结构中查找满足查询条件的文件:find,zhangyxlocalhost zhangyx$ ls Desktop dir1 dir2 m1.c m2.c test1 zhangyxlocalhost zhangyx$ find m1.c m1.c zhangyxlocalhost zhangyx$,zhangyxlocalhost zhangyx$ ls Desktop dir1 dir2 m1.c m2.c test1 zhangyxlocalhost zhangyx$ find m1.c m1.c zhangyxlocalhost zhangyx$ c
20、d dir1 zhangyxlocalhost dir1$ ls ab.c a.c b dir2 zhangyxlocalhost dir1$ find a.c a.c,2020/9/23,34,对文本文件中的各行进行排序:sort,zhangyxlocalhost zhangyx$ cat test1 for i in $1/*.c do cp $i $2 done cd $2 wc -c *|sort -n zhangyxlocalhost zhangyx$ sort test1 cd $2 cp $i $2 do done for i in $1/*.c wc -c *|sort -n
21、zhangyxlocalhost zhangyx$,2020/9/23,35,显示文件中所有不重复的行:uniq,zhangyxlocalhost zhangyx$ uniq test2 man bike aple zhangyxlocalhost zhangyx$ cat test man bike man aple zhangyxlocalhost zhangyx$ uniq test man bike man aple zhangyxlocalhost zhangyx$,2020/9/23,36,zhangyxlocalhost zhangyx$ cat test2 man man bi
22、ke aple zhangyxlocalhost zhangyx$ uniq test2 man bike aple zhangyxlocalhost zhangyx$,2020/9/23,37,比较文件内容:(P47) 比较两个文本文件,并显示它们的不同:diff 例:diff lilo.conf lilo.conf 比较两个文件,若有差异,则显示不同点是第几个字节和第几行:cmp,2020/9/23,38,复制文件(P49) 将源文件或目录拷贝到目标文件或目录中:cp -i: Interactive -r: Recursive -u: Update -f: Force dd命令:将指定的输
23、入文件复制到指定的输出文件上,并进行可能的转换 dd if=/vmlinuz of=/dev/fd0,2020/9/23,39,对文件名或目录名重新命名,或移动文件 mv -fi source_file target_ file 删除文件/删除目录 rm -r filename 或 rmdir dirname 文件内容统计命令 统计指定文件的字节数(-c)、字数(-w)、行数(-l),并输出结果:wc,2020/9/23,40,命令的输入和输出,文件重定向 输出重定向 输入重定向 附加重定向 管道线,2020/9/23,41,(二)目录操作命令,目录树结构 /bin:公用命令 /boot:启动
24、内核所需文件 /dev:设备文件 /etc:配置文件 /home:用户目录 /lib:运行库 /mnt:临时安装的文件系统 /proc:存放存储进程和系统信息 /root:超级用户的根目录 /sbin:存放系统管理程序,超级用户才可使用 /tmp:临时文件 /usr:存放应用程序包的主目录 /var:存放系统产生的文件,2020/9/23,42,常用的目录,zhangyxlocalhost xinetd.d$ cd zhangyxlocalhost zhangyx$ ls Desktop dir1 dir2 m1.c m2.c test test1 test2 zhangyxlocalhost
25、 zhangyx$ cd ./dir1 zhangyxlocalhost dir1$ cd . zhangyxlocalhost zhangyx$,常用的目录操作命令,cd 改变当前目录 pwd 显示目前目录 mkdir 建立一个新目录 rmdir 刪除一个里面是空的空目录,. 代表当前目录 . 代表上层目录 代表当前用户自己的主目录,2020/9/23,43,路径名,绝对路径 每个文件有唯一的绝对路径,它是沿着层次树,从根目录开始、到达相应文件的所有目录名连接而成,各目录名之间以“/”分开。 如:/etc/xinetd.d 相对路径 在当前工作目录里指定一个目录。 如:(/home/zhan
26、gyx) dir1,2020/9/23,44,改变和显示工作目录 cd(特殊参数:空和-)和pwd 建立目录 mkdir(可嵌套和同时创建多个子目录) -p 一次建立多个目录; -m 对新建目录设置权限。 删除目录 rmdir 刪除空的目录(它里面不能有其他的目录或文件) rm(参数:-f -r -i ),2020/9/23,45,显示目录信息 ls:参数-l -a -F -R -color -s -t -X du: 显示文件或目录所占的空间(包括隐藏文件或目录),2020/9/23,46,链接文件的命令:一个文件在多个目录中登记 硬链接:好象文件有了两个文件名 ln file1 file2
27、例如:ln abc.c xyz.c 注意: 不能对目录文件做硬链接; 不能在不同的文件系统之间做硬链接。,2020/9/23,47,userzhangyx dir1$cat m1.c aaaaaaaa bbbbbbbb ccccccccc userzhangyx dir1$cd userzhangyx user$ ln ./dir1/m1.c ./dir2/a.c userzhangyx user$cd dir2 userzhangyx dir2$ cat a.c aaaaaaaa bbbbbbbb ccccccccc userzhangyx dir2$cd userzhangyx user$
28、vi a.c userzhangyx user$cat a.c bbbbbbbb ccccccccc userzhangyx user$cd dir1 userzhangyx dir1$cat m1.c,2020/9/23,48,符号链接 ln -s sourcefile targetfile ln -s /usr/lib /home/wuhp/lib /在用户wuhp目录下建立一个lib连接,连上/usr/lib,用户访问/home/wuhp/lib,就是访问/usr/lib。 一般用于创建目录间的链接,2020/9/23,49,userzhangyx user$ ln -s ./dir1
29、./dir userzhangyx user$ ls dir dir1 dir2 userzhangyx user$ ls -; ls: -: 没有那个文件或目录 userzhangyx user$ ls -l 总用量 8 lrwxrwxrwx 1 user user 6 5月 10 20:50 dir - ./dir1 drwxrwxr-x 2 user user 4096 5月 10 20:32 dir1 drwxrwxr-x 2 user user 4096 5月 10 20:48 dir2 userzhangyx user$ cd dir userzhangyx dir$ ls m1.
30、c userzhangyx dir$,2020/9/23,50,改变存取权限命令 功能:改变文件或目录的存取权限 符号方式:chmod -R who + | - | =mod file 数字方式:chmod -R mod file 操作对象who可是下述字母中的任一个或它们的组合 a 表示所有的用户(all) g 表示组用户(group) o 表示其他用户(other) u 表示用户(user),及文件主,2020/9/23,51,在一个命令行中可给出多个符号方式,用逗号隔开。 例:$ chmod g + r, o + r fl /使组和其他用户对文件fl有读的权限 使用数字来代表各个属性,各
31、属性的对照表如下: r: 4 w: 2 x: 1 由于同一组的数字是相加的!例如文件属性为 -rwxrwx- 则是: owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others = - = 0+0+0 = 0 所以,该属性对应的数值就是 770 !,2020/9/23,52,改变文件或目录所属的组: chgrp chgrp -R groupname filename 例子: chgrp -R staff /home/wuhp 改变文件或目录的属主: chown chown -R username filename 例子:chown -r wuh
32、p /home/wuhp,2020/9/23,53,文件压缩命令: gzip (P69) 说明: 网络上的.gz文件是用gzip命令压缩的。 需要安装自由软件gzip和gunzip gzip -v file,将文件压缩成.gz的文件格式 gzip -d file.gz,将.gz文件解压 读去压缩文件的内容:zcat 文件名,2020/9/23,54,文件解压缩命令: unzip 对WinZip格式的压缩文件进行解压缩 unzip chapter1.zip,2020/9/23,55,文件或者目录打包命令:tar(P78) tar option tarfile filename c 创建新包 x
33、从包中extract文件 t 仅仅列出包中的文件名 f 指定其后的参数为包文件名 o 以当前用户作为extract的文件的uid和gid v 报告tar命令执行的详细信息,2020/9/23,56,网络上有一些.tar.gz文件 先用gzip解压缩,然后用tar拆包 tar cvf mytar.tar file.dat tar xvf file.dat,2020/9/23,57,(三)有关进程管理的命令,显示进程状态:ps ps -efl namelist -e显示当前运行的每一进程的信息 -f产生一个完整的清单 杀死某个进程:kill kill -signal pid kill -9 378
34、 kill -HUP 378,2020/9/23,58,(四)有关软盘的使用命令,有关软盘的使用命令 mount t msdos /dev/fd0 /mnt/floppy umout /mnt 格式化软盘:format 例:format v /dev/rfd0135ds18 在第一个驱动器(3.5英寸高密度软盘)中格式化软盘 tar命令,2020/9/23,59,(五)有关光驱的使用命令,有关光驱的使用命令 mount t iso9660 /dev/hdb /mnt/cdrom umount /mnt/cdrom,2020/9/23,60,(六)有关U盘的使用命令,有关U盘的使用命令 通常/d
35、ev/sda1就是优盘的设备 mount -t vfat /dev/sda1 /mnt/usb umount /mnt/usb,2020/9/23,61,(七)访问Windows分区的命令,假设Windows分区位于第一个IDE硬盘驱动器,为第一个分区(/dev/hdal)。 首先,创建一个装配点用以保存Windows分区的数据,键入: # mkdir /mnt/vfat 要以Xterm的根用户访问分区,键入如下内容: # mount -t vfat /dev/hdal /mnt/vfat,2020/9/23,62,四、安装软件,2020/9/23,63,(一)安装软件的命令,很多Linux应
36、用软件都是以源代码的形式发布的,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,才能使用这些软件。 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: (1)一种是软件的源代码,您需要自己动手编译它。这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz)。 (2)另一种是软件的可执行程序,你只要安装它就可以了。这种软件安装包通常被是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。,2020/9/23,64,源代码安装 应用软件的源代码一般是file.tar.gz或者file.
37、tgz格式,也就是说是以tar来打包,然后用gzip来压缩。 以应用软件apache_1_3_6_tar.gz为例,先进入软件的当前目录,然后使用gzip解压: #gzip -d apache_1_3_6_tar.gz (注:-d 代表解压)。 然后用tar解包: #tar -xvf apache_1_3_6_tar。 由于tar和gzip经常一起使用,所以tar还提供了一个参数,它可以自动调用gzip来解压,即: # tar -xzvf apache_1_3_6_tar.gz。,2020/9/23,65,执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译
38、时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为:#./configure。 检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同,所耗费的时间也不同。命令为:#make。 成功编译后,键入如下的命令开始安装:#make install。 安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令:#make clean;#make distclean,2020/9/23,66,进入这个目录,再用ls命令查看一下所包含的文件,如:#cd apache_1.3.6,#
39、ls。查看这个目录中包含了以下哪一个文件: (1)如果是configure文件,就执行: #./configure #make #make install (2)如果是Makefile文件,就执行: #make #make install (3)如果是Imake文件,就执行: #xmkmf #make #make install,2020/9/23,67,如果遇到错误提示,通常是十分简单的问题: 1)没有安装C或C+编译器; 确诊方法:执行命令gcc(C+则为g+),提示找不到这个命令。 解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:#rpm -ivh gcc*
40、 (用到了第二种安装方式) 2)没有安装make工具; 确诊方法:执行命令make,提示找不到这个命令。 解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:#rpm -ivh make* 3)没有安装autoconf工具; 确诊方法:执行命令make,提示找不到这个命令。 解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:#rpm -ivh autoconf*,2020/9/23,68,智能包安装 RPM是RedHat Package Manager的缩写,它只能使用在安装了RPM软件的系统中,不过好像目前大多数中文Linux发行版本都支
41、持RPM软件包。 (1)用命令管理 #rpm options abc.rpm 例如,安装python-1.5.2-35.i386.rpm软件时,可以使用如下命令:#rpm ivh python-1.5.2-35.i386.rpm。 如果它提示该软件包已经被安装了,但或许已经不完整或其它原因你想强制安装该软件包,那么你就键入以下命令:rpm -ivh -replacepkgs file.rpm。,2020/9/23,69,如果你想知道RPM软件包中的相关信息,可以使用命令:#rpm ivh python-1.5.2-35.i386.rpm。 升级软件:执行rpm -Uvh rpm包名。 查该软件
42、包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名,如rpm -qpl python-1.5.2-35.i386.rpm。 图形界面工具管理 GNOME中的GnoRPM和KDE中的Kpackage就是功能强大的RPM 包管理工具。下面以KDE中Kpackage为例,介绍如何使用RPM包管理工具。,2020/9/23,70,点击Start(开始)System tools(系统工具)Kpackage,出现Kpackage界面,同时分析Linux系统中的 RPM数据库。它将安装好的RPM包形式的软件按照功能分在Amusements、Application、Development、Docu
43、ment、 Extension、Extentions、Networking、System Environment、User Interface以及X11等几个树形目录中,每个目录中有相应的文件图标和名称。要安装或升级软件,只要点击工具栏的相应按钮就会弹出打开文件的对话框,选中要安装的RPM文件,单击OK按钮,如果不缺必要的运行库,就开始安装软件了。卸载软件时,用鼠标选择相应的软件,单击右边的Uninstall按钮就可以了。,2020/9/23,71,(二)卸载软件的命令,(1)软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令: #rpm -q -a,即可
44、查询到当前系统中安装的所有的软件包。 (2)确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入如下命令即可卸载软件: #rpm -e package name,参数e的作用是使rpm进入卸载模式。对名为package name的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载: #rpm -e package name -nodeps 忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用。,2020/9/23,72,五、Linux下的程序开发环境,2020/9/23,7
45、3,Linux下的程序开发环境,1、编辑器vi、emacs 2、编译器gcc(c/c+) -o -c -g 3、调试器gdb 4、make,2020/9/23,74,X-Windows,窗口管理器 Gnome , KDE 窗口切换命令: # switchdesk KDE # startx X-Windows下的可视化编程工具: Qt Qt是一个多平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。(,2020/9/23,75,编译器gcc,GCC编译器简介 GCC 是C和C+编译器。gcc 命
46、令的基本用法如下: gcc options filenames 选项指定编译器怎样进行编译。 一些常用的选项 -o 生成指定的输出文件,用在生成可执行文件时。 $ gcc - o count count.c -c 只编译并生成目标文件。 -g 生成调试信息。GNU 调试器可利用该信息。,2020/9/23,76,例,设有两个源文件 main.c 和 factorial.c 两个源文件,要编译生成一个计算阶乘的程序。,/清单 factorial.c #include #include int factorial (int n) if (n = 1) return 1; else return f
47、actorial (n - 1) * n; ,2020/9/23,77,/清单 main.c #include #include int factorial (int n); int main (int argc, char *argv) int n; if (argc 2) printf (Usage: %s nn, argv 0); return -1; else n = atoi (argv1); printf (Factorial of %d is %d.n, n, factorial (n); return 0; ,2020/9/23,78,利用如下的命令可编译生成可执行文件,并执行
48、程序: $ gcc -o factorial main.c factorial.c $ ./factorial 5 Factorial of 5 is 120.,2020/9/23,79,GCC 可同时用来编译 C 程序和 C+ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C+ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C+ 源文件的后缀名为 .C 或 .cpp。 但是,gcc 命令只能编译 C+ 源文件,而不能自动和 C+ 程序使用的库连接。因此,通常使用 g+ 命令来完成 C+ 程序的编译和连接,该程序会自动调用 gcc 实现编译。,2020/9/2
49、3,80,假设有一个如下的 C+ 源文件(hello.C):,#include void main (void) cout Hello, world! endl; ,则,可以如下调用 g+ 命令编译、连接并生成可执行文件: $ g+ -o hello hello.C $ ./hello Hello, world!,2020/9/23,81,GNU gdb ,GNU 的调试器称为 gdb,该程序是一个交互式工具,在字符模式下工作。 gdb 是功能强大的调试程序,可完成如下的调试任务: (1) 设置断点; (2) 监视程序变量的值; (3) 程序的单步执行; (4) 修改变量的值。 在使用 gdb
50、 调试程序之前,必须使用 -g 选项编译源文件。可在 makefile 中如下定义 CFLAGS 变量: CFLAGS = -g 运行 gdb 调试程序时通常使用如下的命令: gdb progname,2020/9/23,82,gdb 的常用命令,命令 解释 break NUM 在指定的行上设置断点。 bt 显示所有的调用栈帧。该命令可用来显示函数 的调用顺序。 clear 删除设置在特定源文件、特定行上的断点。其 用法为:clear FILENAME:NUM。 continue 继续执行正在调试的程序。该命令用在程序由 于处理信号或断点而导致停止运行时。 display EXPR 每次程序停
51、止后显示表达式的值。表达式由程 序定义的变量组成。,2020/9/23,83,file FILE 装载指定的可执行文件进行调试。 help NAME 显示指定命令的帮助信息。 info break 显示当前断点清单,包括到达断点处的次数。 info files 显示被调试文件的详细信息。 info func 显示所有的函数名称。 info local 显示当函数中的局部变量信息。 info prog 显示被调试程序的执行状态。 info var 显示所有的全局和静态变量名称。 kill 终止正被调试的程序。 list 显示源代码段。 make 在不退出 gdb 的情况下运行 make 工具。
52、next 在不单步执行进入其他函数的情况下,向前 执行一行源代码。 print EXPR 显示表达式 EXPR 的值。,2020/9/23,84,例子:如下简单的c+程序,包含person.h person.cpp main.cpp Main.cpp 文件。,注意1:编译源文件,使用-g 来包含调试信息($ g+ -g c filename),2020/9/23,85,注意2:调试信息在编译的时产生,而不是在连接时。 用 $ g+ -c file*.cpp 编译源文件; 然后用 $ g+ -g -o out.e file1.o file2.o file*.o 生成可执行程序; 而out.e 不
53、带有调试信息。,2020/9/23,86,gdb具体使用 gdb programname list:用来显示程序源代码,2020/9/23,87,run:运行程序;break:设置断点; next:运行至下一行,不进入被调用的函数; step:则进入被调用的函数; print:输出变量的值。,2020/9/23,88,info break:显示断点信息;info func:显示函数信息。 gdb中执行shell命令。,2020/9/23,89,kill:结束当前调试进程; quit:退出gdb。,2020/9/23,90,GNU make ,自动编译工具make(什么是make?) 在大型的开
54、发项目中,通常有几十到上百个的源文件,如果每次均手工键入 gcc 命令进行编译的话,则会非常不方便。因此,通常利用 make 工具来自动完成编译工作。 make简介 :(考点) make 是一个程序,通过一个称为 makefile 的文件来完成并自动维护编译工作(即makefile文件是make的执行脚本)。在一般情况下,make 会根据 Makefile 的规则来决定如何编译 (compile) 和连结 (link) 程序。,2020/9/23,91,Make编译优点: 编译工作:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。
55、 优点:利用这种自动编译可大大简化开发工作,避免不必要的重新编译。,2020/9/23,92,makefile 文件 makefile 需要按照某种语法进行编写,其中说明了 (1) 如何编译各个源文件并连接生成可执行文件, (2) 并定义了源文件之间的依赖关系。 (3) 当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。 Makefile命名规则 缺省情况下,当make寻找makefile文件时,它试图搜寻具有如下的名字的文件,按顺序:GNUmakefile、makefile和Makefile。 通常情况下应把makefile文件命名为makefile
56、或Makefile。 除非makefile文件是特为GNU make编写的,在其它make版本上不能执行,才应该使用GNUmakefile作为makefile的文件名。 ,2020/9/23,93,Makefile文件生成及运行 Makefile 基本结构 Makefile 变量 Makefile 自动变量 Makefile 模式规则 自动依赖 和 Automake 运行 make,2020/9/23,94,Makefile 基本结构(考点) Makefile 基本上就是目标(target), 关连(dependencies) 和动作三者所组成的一连串规则。 目标:make最终要创建的对象,对
57、象通常是目标文件(.o)和可执行文件(.exe)。 关连:通常是一个列表,指明编译目标时需要用到的其它文件。 动作:创建每个项目时需要运行的命令(可以生成目标,或者是删除文件等)。,2020/9/23,95,Makefile文件一般格式(考点) target: components TAB action 例如,有 C+ 源文件 test.C,该源文件包含有自定义的头文件 test.h,则目标文件 test.o 明确依赖于两个源文件:test.C 和 test.h。希望用 g+ 命令来生成 test.o 目标文件。 # This makefile just is a example. # The following lines indicate how test.o depends # test.C and test.h, and how to create test.o test.o: test.C test.h g+ -c -g test.C,2020/9/23,96,利用 make target 命令可指定要编译的目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市绿化合同管理办法
- 宗教艺术博物馆管理办法
- 一站式工程维护服务承诺书
- 车辆限号管理办法
- 美容院实习生转正合同
- 城市供电设施拆迁电力保障
- 生态养殖场养猪场租赁
- 城市绿化箱涵施工合同
- 产品售后服务承诺书协议书
- 建筑照明工程合同
- 村落徽州徽派民居建设技术导则(2023年版)
- 发改委事业单位聘用协议书
- 2024版职业发展规划医疗人员的成长路径和晋升机会培训课件
- 基督教追悼会悼词 一个母亲去世追悼词3篇
- 工程造价审计投标方案(技术标)
- PaaS开发运营三级理论考试题库(汇总)
- Creo-7.0基础教程-配套课件
- 幼儿园玩具安全教育(儿童版)
- 《国家基本专业档案目录》解读
- 网课-文化之旅答案
- 马克思主义经典著作选读智慧树知到课后章节答案2023年下四川大学
评论
0/150
提交评论