关于 diff 和patch

参考: https://blog.csdn.net/zygblock/article/details/53384862html

diff和patch是 版本控制 git 的不可缺乏的工具linux

diff 是用来比较 源文件( 目录) / 和 目标文件(夹)的 差别, 一般是用来比较 文本文件的, 通常不用来比较 二进制文件git

diff的输出 是一种 patch格式的, 能够 把 输出结果 重定向保存为 foo.patch 文件 , 而后 供 patch命令 来使用, 因此, 一般 diff和 patch是 联合使用的shell

patch 是 根据 patch文件( 包含差别列表的文件, 即 difflisting文件) 来将 旧文件 (源文件) -> 打补丁/ 升级 为 新文件 (升级文件) 的程序bash

======================================工具

关于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.net

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

相关文章
相关标签/搜索