关于 diff 和patch
参考: https://blog.csdn.net/zygblock/article/details/53384862
diff和patch是 版本控制 git 的不可缺少的工具
diff 是用来比较 源文件( 目录) / 和 目标文件(夹)的 差异, 通常是用来比较 文本文件的, 一般不用来比较 二进制文件
diff的输出 是一种 patch格式的, 可以 把 输出结果 重定向保存为 foo.patch 文件 , 然后 供 patch命令 来使用, 所以, 通常 diff和 patch是 联合使用的
patch 是 根据 patch文件( 包含差异列表的文件, 即 difflisting文件) 来将 旧文件 (源文件) -> 打补丁/ 升级 为 新文件 (升级文件) 的程序
======================================
关于diff 主要是 要掌握它的 几种 输出格式:
- 使用 diff -y -W 50 old_file new_file 是 不用 normal的输出格式, 用 并排的方式,显示差异, -y 和-W 联合使用, -W == --width 指定列(栏)的宽度
- 更常用 的是 使用 diff -u file1 file2 的格式, 是 -u == -unified 即统一的格式, 将两个文件的 内容都输出在一起, 统一的输出. 用 ---(-) 表示第一个文件(源文件/旧文件) 用+++(+)表示第二个文件(新文件, 更新后的文件)
制作 补丁文件: diff -u file.old file.update > difflisting
给源文件 打补丁: patch -i difflisting -b file.old
-b的作用是 原来的file.old将被打补丁, 同时 源文件被保存一个副本 file.old.orig
patch -i difflisting -o file.new file.old
-o 表示原来的文件被打补丁成为 file.new, 而源文件 还是被保存不变.
特别要注意的是, 打补丁一定要注意 是给 谁 打补丁, 给哪个文件 打补丁, 千万不要把 目标文件搞反了, 否则就把更新的文件变成 原来的 旧文件了, 而且如果 要打多个补丁, 一定要注意 打补丁的顺序
关于补丁的应用 参考: http://linux-wiki.cn/wiki/%E8%A1%A5%E4%B8%81%28patch%29%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8
补丁(patch)的制作与应用
制作补丁时的选项: -r主要是对目录应用的, 第归里面的文件和子目录. -N : 是正确处理已经 应用过补丁的 文件 或 已经被 删除 的文件 ;
应用补丁的 选项: -p num 主要是 指忽略还是不忽略 目录的层次,
-R 则是 取消打补丁
而 应用补丁或取消 补丁的 时候, 都可以 使用 输入重定向的 方式: patch old_file < patch_file
patch的时候, - 表示将要被删除的内容行, 而 + 表示 将要被添加/替换为的 行
patch后, 旧文件将和 新文件 (更新后的文件) 完全一致!
为什么要使用 patch? patch后, 旧文件将和 新文件 (更新后的文件) 完全一致! 那为什么不直接修改 或 直接用 cp / install 命令来复制 替换呢?
确实是这样的!
但是 patch的主要目的, 并不是 用来 给 1个文件来 打补丁的, 它主要是用来 给一个文件夹 中的很多文件 / 很多子目录 来打补丁, 来进行升级的, 这个 才是patch 的主要用途! 是linux用来升级的 主要手段 .也就是说, patch 主要是用来 给 linux等 进行升级的, 当然在版本控制中 也会用到!
Linux patch命令用于修补文件。 参考: http://www.runoob.com/linux/linux-comm-patch.html "patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。"
即: 一个补丁文件中, 可以包含多个补丁, 每个补丁中 包含 一个 补丁头, 一个块.....
==========================================
ls == echo * 来替换
install和cp的区别? 主要在与 处理 已经存在的文件和 正在 运行的 文件 时的差别上!
install 一般用在 makefile中, cp一般场合
cp是先将原来 的文件内容 清空, 然后写入新内容
install 则是将原文件删除, 重新创建一个新文件, 然后再写内容.
因此, install不仅能 更换句柄, 而且可以设置 文件的新属性, 可以解决 如果目标文件正在运行 或 持续写入内容的句柄 更换问题.
=========================
runlevel
init 3
ctrl+alt+f1~6, ctrl_alt+f78, 注意切换字符界面,是用ctrl+alt+功能键, 而不是 只用 alt + 功能键
https://wenku.baidu.com/view/b861ed9c69dc5022aaea00c2.html
target: 就是runlevel文件。
从 fedora16 开始 就不再使用initab 而是使用target来配置启动级别了,
multi-user.target, analogous to runlevel 3
graphical.target.
target:启动的对象,启动(服务的)对象
开发Systemd的主要目的就是减少系统引导时间和计算开销
Systemd引入了并行启动的概念,它会为每个需要启动的守护进程建立一个套接字,这些套接字对于使用它们的进程来说是抽象的,这样它们可以允许不同守护进程之间进>行交互。Systemd会创建新进程并为每个进程分配一个控制组(cgroup)。处于不同控制组的进程之间可以通过内核来互相通信。systemd处理开机启动进程的方式非常漂亮,和传统基于init的系统比起来优化了太多。让我们看下Systemd的一些核心功能
查看linux机器是32位还是64位的方法:
file /sbin/init 或者file /bin/ls
当登陆一个linux系统时,bash shell依次会从4个不同的地方启动文件里的读取命令,顺序是:
1: /etc/profile
2:$HOME/.bash_profile
3:$HOME/.bash_login
4:$HOME/.profile
/lib 系统级别,系统的lib
/usr/lib 操作系统自带的程序级别,二进制安装包的lib
关于 diff 和patch的更多相关文章
- diff和patch的使用、patch文件的格式解说
为了弄懂 patch中的 p0 p1 和.orig文件是啥,找到了这篇文章! 来源:http://www.cnblogs.com/super119/archive/2010/12/18/19 ...
- svn/git的diff、patch
svn/git的diff.patch 前几天,正当我突突的写代码,企业微信嘀嘀一声响”在不,过来帮我看个bug”.本人一向助人为乐,高兴的冲了过去,然后就开始了一段长达1分钟的问题描述.很明显,此同学 ...
- diff和patch配合使用(转载备用)
Linux下diff与patch命令的配合使用 在Linux下,diff与patch命令配合使用可以进行简单的代码维护工作. [A] diffdiff命令用于比较文件的差异,可以用于制作patch文件 ...
- Linux中的版本控制---diff和patch命令
一.构造两个用于测试的文件 hello.txt: world.txt: 二.用diff命令比较两个文本文件的差异 对这个两个文本文件执行diff‘命令,并通过输出重定向,将差异保存在diff.txt文 ...
- 使用diff和patch指令生成文件差异和还原文件
使用diff和patch指令生成文件差异和还原文件 创建一个新的文件夹test然后进入test mkdir test cd test 首先创建文件a vim a.txt 随便输入一段文字后保存不退出. ...
- diff和patch
diff -u:the unified format会将不同的地方放在一起,紧凑易读 . diff original.txt updated.txt c表示在original文件中的m,n行的内容将要 ...
- Linux中的Diff和Patch
本文主要记录两个命令的学习情况:diff 和 patch.diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上.在数学上说,diff就是对两个集 ...
- 几个文本处理工具的简单使用(wc,cut,sort,uniq,diff和patch)
wc wc命令用于报告文本文件的一些统计计数,例如行数.单词数.字节数等. 语法如下. wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F ...
- 用Diff和Patch工具维护源码
在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具 ...
随机推荐
- 1.C++基础(C、C++)
1.命名空间 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定 义于一个名为std的namespace中. 命名空间std封装的是标准程序库的名称,标准程序库为了 ...
- idea搭建可运行Servlet的Web项目[maven]
1. new Project File > new > Project… 2. 填写 GroupID\ArtifactID GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结 ...
- 在win7上跑基于任少卿作者代码修改的RPN+BF实验
1.前言 之前在win10上成功的跑起来faster-rcnn的实验,并且跑了一下CaltechPedestrian的数据集,但是效果一直不理想,折腾了好久也没弄清楚到底原因出在哪里,直到读了Is F ...
- 【LeetCode每天一题】Plus One(加一)
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.The d ...
- iOS MJExtension的使用
前言: MJExtension是iOS的字典装模型的一个第三方框架.相对于JSONKit和SBJson相比MJExtension更简单易用.功能更强大. 安装: 使用CocoaPods导入(Cocoa ...
- Percona-Toolkit 之 pt-table-sync 总结
pt-table-sync - Synchronize MySQL table data efficiently. pt-table-sync synchronizes data efficientl ...
- python之单例模式
#单例模式:有时需要写出高性能的类,那么会采用单例模式.通俗的解释就是类只创建一次实例,贯穿整个生命周期,实现了高性能. #1.模块化单例#所谓的模块化就是一个单独的.py文件来存储类,这样就是单例模 ...
- Oracle sql function LISTAGG
select business_unit, voucher_id, listagg( vat_txn_type_cd, ',') within group (order by business_uni ...
- Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件
Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...
- ubuntu装好jupyter启动失败问题
::/jupyter/nbserver-.json: [Errno ] Permission denied: '/run/user/1000/jupyter/nbserver-35390.json' ...