Linux基础命令之: Linux常用命令
接着使用新版的上下文格式进行比较。 [root@localhostdavid]#diff-uhello1.chello2.c ---hello1.cSatJan1416:24:512006 +++hello2.cSatJan1416:54:412006 @@-1,5+1,5@@ #includestdio.h> voidmain() { -printf(Hello!Thisismyhome!\n); +printf(Hello!Thisisyourhome!\n); } 可以看出,在新版上下文格式输出时,仅把两个文件的不同之处分别列出,而相同之处没有重复列出,这样大大方便了用户的阅读。 接下来使用命令格式进行比较。 [root@localhostdavid]#diff-ehello1.chello2.c 4c printf(Hello!Thisisyourhome!\n); 可以看出,命令符格式输出时仅输出了不同的行,其中命令符“4c”中的数字表示行编号,字母的含义为:a表示添加,b表示删除,c表示更改。因此,-e选项的命令符表示:若要把hello1.c变为hello2.c,就需要把hello1.c的第4行改为显示出的“printf(“Hello!Thisisyourhome!\n”);”。 选项“-f”和选项“-e”显示的内容基本相同,就是数字和字母的顺序相交换了,从以下的输出结果可以看出。 [root@localhostdavid]#diff-fhello1.chello2.c c4 printf(Hello!Thisisyourhome!\n); 在diff选项缺省的情况下,输出结果如下所示。 [root@localhostdavid]#diffhello1.chello2.c 4c4 printf(Hello!Thisismyhome!\n); --- >printf(Hello!Thisisyourhome!\n); 可以看出,diff缺省情况下的输出格式充分显示了如何将hello1.c转化为hello2.c,即通过“4c4”实现。 ②创建补丁文件(也就是差异文件)是diff的功能之一,不同的选项格式可以生成与之相对应的补丁文件,如下面扔例子所示。 [root@localhostdavid]#diffhello1.chello2.c>hello.patch [root@localhostdavid]#vihello.patch 4c4 printf(Hello!Thisismyhome!\n); --- >printf(Hello!Thisisyourhome!\n); 可以看出,使用缺省选项创建补丁文件的内容和前面使用缺省选项的输出内容是一样的。 小知识 上例中所使用的”>“是输出重定向。通常在Linux上执行一个shell命令行时,会自动打开3个标准文件:标准输入文件(stdin),即通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),前两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,并且将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。这就是通常使用的标准输入/输出方式。 直接使用标准输入/输出文件存在以下问题:首先,用户输入的数据只能使用一次。当下次希望再次使用这些数据时就不得不重新输入。同样,用户对输出信息不能做更多的处理,只能等待程序的结束。 为了解决上述问题,Linux系统为输入、输出的信息传送引入了两种方式:输入/输出重定向机制和管道(在1.3.1的小知识中已有介绍)。其中,输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。同样,输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就可以不显示在屏幕上,而是写入到指定文件中。就如上述例子中所用到的把“diffhello1.chello2.c”的结果重定向到hello.patch文件中。这就大大增加了输入/输出的灵活性。 (1)作用。 命令跟diff配合使用,把生成的补丁文件应用到现有代码上。 (2)格式。 patch[选项][待patch的文件[patch文件]]。 常用的格式为:patch-pnum[patch文件],其中的-pnum是选项参数,在后面会详细介绍。 (3)常见参数。 patch主要选项参数如表2.27所示。 表2.27 patch命令常见参数列表 选项 参数含义 -b 生成备份文件 -d 把dir设置为解释补丁文件名的当前目录 -e 把输入的补丁文件看作是ed脚本 -pnum 剥离文件名中的前NUM个目录部分 -t 在执行过程中不要求任何输入 -v 显示patch的版本号 以下对-punm选项进行说明。 首先查看以下示例(对分别位于xc.orig/config/cf/Makefile和xc.bsd/config/cf/Makefile的文件使用patch命令)。 diff-ruNaxc.orig/config/cf/Makefilexc.bsd/config/cf/Makefile 以下是patch文件的头标记。 ---xc.orig/config/cf/Imake.cfFriJul3012:45:471999 +++xc.new/config/cf/Imake.cfFriJan2113:48:442000 这个patch如果直接应用,那么它会去找“xc.orig/config/cf”目录下的Makefile文件,假如用户源码树的根目录是缺省的xc而不是xc.orig,则除了可以把xc.orig移到xc处之外,还有什么简单的方法应用此patch吗?NU2.patch
操作系统 Linux Shell 用户切换 su useradd 相关文章:
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- 嵌入式系统实时性的问题(06-21)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 嵌入式实时操作系统设计探讨(10-15)