这个似乎不是很准确,个人觉得对于二进制文件linux没有什么补丁之类的概念.
所谓的补丁基本上是软件升级一个小版本.
所以也就无从查看.
patch命令用于为特定软件包打补丁,该命令使用diff命令对源文件进行操作.
格式:patch [选项] [原始文件 [补丁文件]]
常用参数:
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件.
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况.
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些.
-p0 选项从当前目录查找目的文件(夹)(直接使用补丁文件里面指定的路径)
-p1 选项忽略掉第一层目录,从当前目录查找(去掉补丁文件指定路径最左的第1个'/'及前面所有内容).
-E 选项说明如果发现了空文件,那么就删除它
-R 选项说明在补丁文件中的"新"文件和"旧"文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)
示例:
①.、单个文件
首先将两个文件的内容显示如下:
$ cat test0
00000000
$ cat test1
①.1111111
*生成补丁:
$ diff -uN test0 test1 test1.patch
这样将通过比较,生成test1的补丁文件.这里选项u表示使用同一格式输出这样产生的输出便于阅读易于修改,N表示把不存在的文件看做empty的.就算文件test0不存在,也会生成补丁.
*把test0通过打补丁变成test1文件:
$ patch -p0 test1.patch
或$patch test1.patch
这样,test0的内容将和test1的内容一样,但是文件名称还是test0.关于patch的选项见后面多文件有说明.当前目录下可以有test1.如果比较的时候test0是不存在的,那么这时候会生成一个test0文件.
*把打过补丁的test0还原:
$ patch -RE -p0test1.patch
或$patch -R test1.patch
这样,test0的内容将还原为原来没有打过补丁的状态.当前目录下可以有test1.这里的-E选项是要求patch在文件为空的时候删除文件,这个选项是不必要的因为patch是根据时间戳来判断一个文件是否存在.如果比较的时候test0是不存在的,这将会删除test0文件.
**
首先查看文件结构如下:
①.)外层目录列表:
$ ls -p
prj0/ prj1/
$ ls -p prj0
prj0name test0
$ ls -p prj1
prj1name test1
$ cat prj0/prj0name
--------
prj0/prj0name
$ cat prj1/prj1name
---------
prj1/prj1name
$ cat prj0/test0
0000000
$ cat prj1/test1
①.111111
*创建补丁:
$ diff -uNr prj0 prj1 prj1.patch
这里项u表示使用同一格式输出这样产生的输出便于阅读易于修改,N表示把不存在的文件看做empty的,r表示递归地比较子目录,比较的结果被标准重定向到文件prj1.patch中了.
运行之后,输出的就是一个补丁,描述了两个文件的不同,这个补丁就是把diff参数的第一个文件打补丁变成第二个文件的补丁文件.
实际过程依次比较两个目录下的同名文件,如果这里不加-N就会指明prj0name和test0只在prj0中存在,prj1name和test1只在prj1中存在,这就无法比较了,所以这里为了能够比较,加上了-N选项.
为了便于理解,这里给出prj1.patch文件的内容:
$ cat prj1.patch
diff -uNr prj0/prj0name prj1/prj0name
-
-prj0/prj0name
diff -uNr prj0/prj1name prj1/prj1name
◆---------
◆
◆prj1/prj1name
diff -uNr prj0/test0 prj1/test0
-0000000
diff -uNr prj0/test1 prj1/test1
◆1111111
*将prj0中的所有文件打补丁成为prj1中的所有文件:
步骤如下:
①.)$ cp prj1.patch ./prj0
这里,把补丁文件复制到了prj0下面,然后将该文件夹下面的文件"变成"prj1下的文件了.
prj1name prj1.patch test1
关于patch命令的-p选项接数字n,意思是去掉补丁文件里指定路径的前n个'/'前缀.
注意:如果在外层目录运行这个命令,那么会在外层目录创建两个prj1name和test1文件.
*将打好补丁的prj0中的所有文件还原成为原来打补丁之前的文件:
$ patch -R -p1 prj1.patch
运行之后文件变成原来的文件了,如下:
prj0name prj1.patch test0
*将prj1中的所有文件反向打补丁成为prj0中的所有文件:
运行之后prj1中的文件变成prj0的文件了,如下:
*将prj1中反打补丁后的文件还原成原来的prj1中的文件:
$ patch -p1 prj1.patch
运行之后,prj1中的文件被还原了,如下:
*在外层目录把prj0的内容打补丁成prj1的内容:
$ls -p
prj0/ prj1.patch
$patch -p0 prj1.patch
这样prj0中的内容变成了prj1中的内容,但是prj0的目录名仍旧是prj0,如下:
$ls -p prj0
注意:当前文件夹下面不能prj1目录,否则会出现一些警告提示.
*在外层目录把prj0的内容反打补丁还原成原来prj0的内容:
$ patch -R -p0 prj1.patch
这样原来的文件如下:
linux下patch命令使用详解---linux打补丁命令
功能说明:修补文件.
语法:patch [-bceEflnNRstTuvZ][-B 备份字首字符串][-d 工作目录][-D 标示符号][-F 监别列数][-g 控制数值][-i 修补文件][-o 输出文件][-p 剥离层级][-r 拒绝文件][-V 备份方式][-Y 备份字首字符串][-z 备份字尾字符串][--backup-if -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 修补文件] 或 path [-p 剥离层级] [修补文件]
补充说明:patch指令让用户利用设置修补文件的方式,修改,更新原始文件.倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行.如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一.
参数:
-b或--backup 备份每一个原始文件.
-B备份字首字符串或--prefix=备份字首字符串 设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称.
-c或--context 把修补数据解译成关联性的差异.
-d工作目录或--directory=工作目录 设置工作目录.
-D标示符号或--ifdef=标示符号 用指定的符号把改变的地方标示出来.
-e或--ed 把修补数据解译成ed指令可用的叙述文件.
-E或--remove-empty-files 若修补过后输出的文件其内容是一片空白,则移除该文件.
-f或--force 此参数的效果和指定-t参数类似,但会假设修补数据的版本为新 版本.
-F监别列数或--fuzz监别列数 设置监别列数的最大值.
-g控制数值或--get=控制数值 设置以RSC或SCCS控制修补作业.
-i修补文件或--input=修补文件 读取指定的修补问家你.
-l或--ignore-whitespace 忽略修补数据与输入数据的跳格,空格字符.
-n或--normal 把修补数据解译成一般性的差异.
-N或--forward 忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过.
-o输出文件或--output=输出文件 设置输出文件的名称,修补过的文件会以该名称存放.
-p剥离层级或--strip=剥离层级 设置欲剥离几层路径名称.
-f拒绝文件或--reject-file=拒绝文件 设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej.
-R或--reverse 假设修补数据是由新旧文件交换位置而产生.
-s或--quiet或--silent 不显示指令执行过程,除非发生错误.
-t或--batch 自动略过错误,不询问任何问题.
-T或--set-time 此参数的效果和指定-Z参数类似,但以本地时间为主.
-u或--unified 把修补数据解译成一致化的差异.
-v或--version 显示版本信息.
-V备份方式或--version-control=备份方式 用-b参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用-z参数变更,当使用-V参数指定不同备份方式时,也会产生不同字尾的备份字符串.
-Y备份字首字符串或--basename-prefix=--备份字首字符串 设置文件备份时,附加在文件基本名称开头的字首字符串.
-z备份字尾字符串或--suffix=备份字尾字符串 此参数的效果和指定-B参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上backup/字符串后,文件super.c会备份于/src/linux/fs/backup目录里.
-Z或--set-utc 把修补过的文件更改,存取时间设为UTC.
--backup-if-mismatch 在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件.
--binary 以二进制模式读写数据,而不通过标准输出设备.
--help 在线帮助.
--nobackup-if-mismatch 在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件.
--verbose 详细显示指令的执行过程.
patch,是打补丁的命令,有很多用法,见帮助#man patch
patch -p0 ("p"指的是路径,后面的数字表示去掉路径的第几部分.0,表示不去掉,为全路径)
patch -p1 ("p"后面的数字1,表示去掉前第一个路径)fetch
fetch /sys/dev/bge
fetch ...
patch -p0 ...fetch
也可以把文件中的目录全改成系统已在的目录如/usr/src/sys.....注意:
①.,确认目录
可以使用不带数字的参数.
patch 后的软件安装
patch方法:
# cd /usr/src/
# patch -p /path/to/patch
# cd /usr/src/secure/libexec/telnetd
# make depend make all install 无crypto版本补丁:
# cd /usr/src/libexec/telnetd
由于patch文件的首行已经指明了路径,所以根据当前所在的目录,加不同的参数使用patch命令:
ln 命令的使用
这是linux中一个非常重要的命令.它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件.
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间.
例如:ln -s /bin/less /usr/local/bin/less
-s 是代号(symbolic)的意思.
这里有两点要注意:
第一,ln命令会保持每一处链接文件的同步性.也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化.
patch -p1 [patchfile]
patch -R [patchfile] (used to undo a patch)
-p1选项代表patchfile中文件名左边目录的层数,顶层目录在不同的机器上有所不同.要使用这个选项,就要把你的patch放在要被打补丁的目录下,然后在这个目录中运行path -p1 [patchfile].来自Linux内核patch的一个简短的引用可以这样实现:
int swap_header_version;
int lock_map_size = PAGE_SIZE;
int nr_good_pages = 0; - char tmp_lock_map = 0; ◆ unsigned long tmp_lock_map = 0;
应用来自本段中使用-p1开关拷贝的patch可以有效地减短patch定位的路径;patch会查找当前目录下一个名为/mm的子目录,接着应该会在这儿发现swapfile.c文件,然后等待打补丁.在这个过程中,以破折号("-"号,译者注)开始的行会被一个以加号("◆"号,译者注)开始的行代替.一个典型的patch会包含对多个文件的更新,每个部分中都由对两个版本的文件运行diff -u命令的输出结果组成.
patch在操作时把自己的输出结果显示在屏幕上,但是这种输出通常都滚屏太快,来不及观看.原来准备patch的文件名为*.orig,新的patch文件会覆盖这个初始文件名.
打补丁的问题
让我们假定你已经对一个目录下的源程序文件进行了patch修补工作,但是patch并没有清晰地发挥作用.这可能会偶然发生,在打补丁的过程中会显示错误信息,其中带有行号,说明哪一个文件出现了问题.有时错误是很明显的,例如缺少了分号,?种错误可以不费多大力气就能改正.另外一种可能是从 patch部分删除了产生问题的部分,但是这样根据所涉及到的文件的不同可能会正常工作,也可能不能正常工作了.
另外一种常见的错位为:假设你有一个未使用tar打包的内核源程序文件,在/linux/arch/下浏览各个子目录时你会发现各种机器体系结构子目录,例如alpah、sparc等等.如果你和大多数Linux用户一样,使用的是Intel的处理器(或者是Intel系列),你可以决定删除这些目录,这些目录对于编译你特殊的内核并不需要,只是白白占用了磁盘空间.一段时间之后发行了一个新的内核patch,此时试图进行patch操作,当它发现不能找到自己打补丁需要的Alpha或者PPC文件,就会停顿下来.幸运的是patch在这些地方允许用户参与,它会询问Skip this patch?回答y,patch就可以按照正确的路径继续执行.也许你需要回答这个问题很多次,所以呢允许自己不需要的目录保留在磁盘上是一种很好的方法.
①.、ls命令
cd /root
ls #显示当前目录下所有的非隐藏文件
ls -a #显示当前目录下所有文件,包含隐藏文件
ls -l #显示当前目录下所有的非隐藏文件的详情
ls -al #显示当前目录下所有文件,包含隐藏文件 的详情
ls -lh #以列表形式显示当前目录下所有的非隐藏文件的大小(K M T)
ls -alh #以列表形式显示所有文件,包含隐藏文件的文件大小(K M T)
常用的组合:
ls
ll #等价于 ls -l
ls /etc #显示/etc目录下的文件
用来显示当前所在的路径
绝对路径: 从/目录开始的路径
/root
/etc/sysconf
相对路径: 相对当前的路径
mkdir mytest #在当前目录创建文件夹
mkdir /root/mydemo #使用绝对路径来创建
这个命令既可以删除文件,也可以删除目录
删文件:
rm a.txt #删除时,会给出提醒确认,输入y删除,n不删除
rm -f b.txt #强制删除 等价于 rm -f /root/b.txt
touch a.java b.java c.java
rm a.java b.java c.java #一次可以删除多个文件
rm *.java -fr #可以删除当前目录下的所有.java文件
cd dir
rm * -fr #删除当前目录的所有内容
删目录:
rm -r 111 #删除目录,依次提醒删除
rm -rf mytest #强制删除 等价于 rm mytest -fr
常用组合:
rm -fr 文件或目录
cd 命令可以进入一个目录,类似于对windows上的文件夹进行双击
cd #直接cd 可以从任何一个目录回到/root目录
cd /root #进入root目录
cd /opt/server/data-integration/system/
cd .. #回到上一级目录
cd ../.. #回到上上一级目录
cd - #可以在最近的两次目录之间切换
cd dir1
使用上下方向键可以找出历史命令
table键:
cd /opt/ #两次table可以列出/opt目录下所有的文件和子目录
cd /opt/s #一次table可以自动补全目录内容,前提是/opt目录下只有一个s开头的目录
touch a.java #在当前目录创建a.txt文件
touch b.java c.java #创建多个文件
touch /root/d.java #通过绝对路径创建
移动:
①.、mv 文件 目录 #将文件移动到目录中区
cd /root/dir1
touch a.txt
重命名:
mv a.txt aaa.txt #将a.txt 重命名为aaa.txt
mv dir1 dirx #将dir1重命名为dirx
显示文件内容
cat user.txt
①.0、cp命令
复制文件
cp user.txt /opt/ #将当前目录的user.txt 复制到/opt目录,文件名保持不变
cp /opt/server/data-integration/pan.sh ./ #将指定目录里的文件复制到当前目录(.后边的/可以去掉)
cp /opt/server/data-integration/pan.sh ./dirx #将指定目录里的文件复制到当前目录下的dirx目录(.后边的/比可以去掉)
cp /opt/server/data-integration/pan.sh /root/dirx #作用同上
①.1、解压和压缩
Linux的压缩包后缀一般是: .tar.gz
解压:
.tar.gz
将snappy-1.1.1.tar.gz上传到/root/dir1目录
tar -zxvf snappy-1.1.1.tar.gz #默认解压到当前目录
tar -xvf snappy-1.1.1.tar.gz #默认解压到当前目录
tar -xvf snappy-1.1.1.tar.gz -C /opt #将压缩包解压到/opt目录
.zip格式
压缩:
tar -czvf snappy-1.1.1.tar.gz snappy-1.1.1 #将snappy-1.1.1文件夹进行打包压缩
tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1
用来实现文件的查找
find / -name 'a.txt' #从/目录开始查找a.txt文件
find / -name 'ins*' #从/目录开始查找以ins开头的文件
find / -type f -size ◆100M #查找/目录下文件大小大于100M的文件
grep lang anaconda-ks.cfg #从anaconda-ks.cfg文件中查找包含lang的内容
ps #查看依赖终端的进程
ps -ef #查看Linux系统中所有的进程
管道就是把前边命令的结果作为后边命令的输入
ps -ef | grep mysql #查找和mysql相关的进程
ll /etc | grep java #在/etc目录中查找java相关的文件
用户创建和密码设置
useradd itheima #创建新用户itheima
passwd itheima #设置用户itheima密码
用户删除
userdel -r itheima #删除用户itheima
所属用户: root 文件的创建者
所属用户组: root 和文件创建者在一个组的用户
其他用户: itcast 既不是文件创建者,也和文件创建者不在同一组
r: 可读
w:可写
x: 可执行
chmod命令:
方式1:
chmod u◆rw a.txt #在所属用户之前的权限基础上添加可读和可写权限
chmod u=rw a.txt #将所属用户的权限直接修改为可读,可写
chmod ◆x #给所属用户,所属用户组和其他用户全部加上可执行权限
用来清屏
快捷键: ctrl ◆ l
用来查看所有的历史命令
vi a.txt #打开a.txt文件
vim a.txt #vim是vi的增强
hostname :查看主机名
修改主机名: /etc/hostname
ifconfig :查看ip地址
服务问题:
service network restart
Linux常用命令大全100条:
①.,echo "aa" >> test.txt 和 echo "bb" >>>> test.txt
//>>将原文件清空,并且内容写入到文件中,>>>>将内容放到文件的尾部
①.0,ls -lrt //按时间的倒序排序
①.1,rsync -P //同步时显示进度
将b-d之外的字符串替换成=
-f是from和简写,-t好像terminal的简写
mysql这样的话只属于php了
//查找目录下文件所包涵的字符串
①.00,tar zxvf test.tar.gz -C /home/zhangy //将内容解压到指定目录
;??linux打补丁总共有四个步骤,具体操作如下:
①.、首先登录VMware上安装的一台centos主机,网络处于联网状态,命令一般为cat/etc/redhat-release.
以上就是土嘎嘎小编为大家整理的linux命令大全补丁相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!