Linux知识总结.docx

上传人:b****8 文档编号:29826297 上传时间:2023-07-27 格式:DOCX 页数:23 大小:36.45KB
下载 相关 举报
Linux知识总结.docx_第1页
第1页 / 共23页
Linux知识总结.docx_第2页
第2页 / 共23页
Linux知识总结.docx_第3页
第3页 / 共23页
Linux知识总结.docx_第4页
第4页 / 共23页
Linux知识总结.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Linux知识总结.docx

《Linux知识总结.docx》由会员分享,可在线阅读,更多相关《Linux知识总结.docx(23页珍藏版)》请在冰豆网上搜索。

Linux知识总结.docx

Linux知识总结

vim(脚本编程、配置文件修改)

vim:

功能强大的全屏幕文本编辑器,他的作用是建立、编辑、显示文本文件。

它没有菜单,只有命令,并且他支持所有的语言。

Emacs,UltraEdit.

Vi工作模式:

命令模式、插入模式、编辑模式。

缺省进入的是命令模式(键盘的任何输入,系统都会把它当成一个命令),输入相应的插入命令(),编辑模式(正在编辑的文档,做出一些相应的设置,保存、查找、设置行号、定义快捷键等……)

命令模式:

a(光标后)A(行后);i(光标前)I(行前);o(行下面)O(行上面);$(行尾);0(行首);H(屏幕上端);M(中央);L(下端)。

定位:

setnu(设置行号)setnonu(取消行号)gg(第一行)G(最后一行):

8(定位到第八行)

删除:

x(删除光标所在字符,numb+x,包括光标所在的两个字符)

dd(删除光标当前所在行,numb+dd删除N行);dG(删除光标所在行到末尾的内容);:

10,20d(删除第十行到第二十行之间的内容)。

剪切:

dd(剪切当前行)ndd(剪切从当前行一下行,当前行也包括在内)

复制:

yy、Y(复制当前行)nyy、nY(复制当前行一下的n行);p、P(粘贴在当前光标所在行下或行上)

替换和取消命令(在编辑一些文档的事后,没必要在有错误的时候进入插入模式进行写该,或者是命令模式删除再进入插入模式进行输入,改动比较少的时候,完全没这个必要):

r(替换光标所在处字符);R(从光标所在处开始替换字符,按Esc结束,提示为replace)

搜索和替换命令:

/ftp(找到文档中ftp关键词的文件);n(下个ftp文件;)大小写混合时候记不清楚哪个是大写,哪个是小写,查找时候困难,因为Linux是严格区分大小写的,可以用setic(开启查找是忽略大小写功能);setnoic(关闭查找是忽略大小写功能)

替换:

%s/ftp/lamp/g(将全文关键字ftp的替换成lamp)

制定替换范围:

4,10s/lamp/ftp/g(把第四行到第十行之间关键字lamp替换成ftp)c会询问

保存和退出的命令:

wq(保存退出)如果用户没有写权限:

wq!

(强行保存退出,覆盖原文件),但不是说任何人没有写权限,用wq!

都可以,前提是只有这个文件的所有者或者是root才可以,许多限定对root都是无效的,root很特殊。

不保存退出:

q!

(有的时候不想保存,想退出)

保存不退出:

w(直接保存,并没有退出)甚至可以另存为:

w/root/services.bak

导入其他文件内容到本文件中编辑:

r/etc/issue(把issue内容导进来)

vi中执行命令(有时候用vi编辑一些系统文件或者是写脚本的时候,比如说些一个备份脚本,需要查询环境,理论上来说不需要退出vi):

!

ls-l/etc(回车就回来了)

导入和命令一起用(可以把一个命令执行的结果导入vi中去,有时候脚本需要备注信息,说明脚本是用来干什么的,写上公司的版权信息,谁编写的脚本,最后一次更新时间):

r!

date把系统当前的时间导入vi编辑文件中。

map(定义快捷键):

ctrl+p——map^PI#在光标所在行首部出入#号,直接用ctrl+P即可完成。

(因为I可以跳至行首并且进入插入模式。

map^Eichao1990116@使用快捷键插入自己的邮箱,方便他人联系你咨询你写的脚本的作用。

map^B0x(0可以跳至行首,但不进入插入模式)。

4,8s/^/#/g(4,8s指定范围,/分分隔符,^表示要在行首,/引出要添加的符号,比如#,然后分隔符+g等于执行。

c也可以,不过会询问。

在第四行到第八行+上了#号)

4,8s/^#//g(第一个分隔符后面写^#表示我要对行首#做替换,第二个分隔符后面什么也没写就表示我要替换为空,就是删除。

然后分隔符+g等于执行。

如果比没有^就会替换该行所有#为空。

表示我把从第四行到第八行行首的#删除或者是替换为空。

如果真的要把vi当做开放工具,但是并不是所有语言都是用#来做注释的。

例如//如果按照刚才那种方法是行不通的,显然是行不通的。

第三讲讲过find,命令别名点的时候提到过转义符,让命令或者符号使用它本意。

如果其实删除的时候原本是不会有提示的,之所以有提示是因为他定义了别名-i才会有提示。

转义符\,1,5s/^\/\//g(\/\/表示插入了两个//,这样就OK了,在行首插入两个//,呵呵.)

ab(你输入一个a自动变成b。

):

mymailchao1990116@

快捷键定义多了容易忘记,如果你有经常需要输入比较长的信息,你还不想定义快捷键,可以用这种方法来帮助你实现,太强大了…

如果需要这些快捷键永远生效需要编辑vim的配置文件(linux里面每一个用户都需要有一个宿主目录,如果用户没有宿主目录,在许多linux和unix里面是不允许登录的。

宿主目录的路径可以指定,root目录在/root,users目录在/home,如samlee用户的目录在/home/samlee在宿主目录下有个.vimrc配置文件):

vi/root/.vimrc或vi~/.vimrc(~表示宿主目录)

里面是空的,可以把日常需要用的快捷键写入里面,例如:

setnu;

map^PI#编辑任何文件都是有效的,而不是像刚才保存退出后之后快捷键就没效了。

命令(前三章)

find/etc-nameinit*-a-typef-a-

atime-1-execls-l{}\;

匹配文件内容中的关键字:

grepftp

/etc/services

配置文件和命令重名:

可以用man5查看配置

文件。

gzip只能压缩文件,不能压缩目录。

不保留

原文件(原文件直接成压缩包)。

gunzip(解压)

tar打包目录(Internet二进制包源代码包

.tar.gz)-ccreate产生打包文件

-v显示执行过程-f制定压缩后文件名-z打

包并同时压缩

file判断文件内容。

.zip默认win和Linux通用的格式

压缩目录(保留原文件)zip-rnewdir.zipnewdir(可以直接压缩目录)如果是bz2或者gzip想压缩文件夹必须先用tar打包然后才能再压缩。

压缩文件不加-r

.bz2(只能压缩文件,不能压缩目录,压缩比

非常强悍,gzip的升级版,其实只是增加了一

个选项-k保留源文件,但是压缩比很高):

压缩:

bzip2-kmoon-k(保留原文件)

解压:

bunzip2moon.bz2

也可以压缩成.tar.bz2文件:

先用tar打包目

录,再用bz2压缩打包文件。

write发信息(用户)

wall广播(所有人)

ping测试网络是否连通

内核—shell--用户

bashell:

在目录下面执行能自动补全文件名。

history看历史命令—!

numb可以执行以

前的命令不过最多用的还是翻页键。

命令别名:

alias例如为什么ll在linux可以

用在Unix不可以用就是因为系统定义了别

名如果有连接选项必须用“”引起来定

义别名:

aliascopy=cpaliasxrm="rm-r"

撤销别名unaliascopy

输入输出重定向:

同标准I/O一样,shell对于

每个进程预先定义3个文件描述(0、1、2)。

分别对应于:

0(STDIN)标准输入—键盘;

1(STDOUT)标准输出—显示器,投影

2(STDERR)标准错误输出—显示器。

所谓重定向是指输入不从键盘输入,输出不从

显示器输出。

可以把输出的结果显示到一个

文件中。

输出重定向:

0>0>>

ls-l/tmp>/tmp.msg查看重定向文件可

以用cat等…date查看当前系统时间。

>

会覆盖以前的内容,所以必须用>>才可以追

加内容,防止覆盖,以实现脚本自动化。

输入重定向:

输入的内容可以是事先写好的。

1<1<<

举例:

wall

错误输出重定向:

2>2>>不能省略2

cp-R/usr/backup/usr.bak2>/bak.error

大于号可以用来判断执行动作是否出错,如果

出错可以讲错误信息保存在目标录像里面,方

便管理员上线后对动作执行结果进行查找,备

份尤其重要。

如果执行结果是对的,目标文件

管道(重要):

将一个命令的输出传给另一个

命令,作为另一个命令的输入。

管道的最B之处在于可以让不起眼的命令发挥

出,居牛B的作用。

举例:

ls-l/etc|more(更容易观看)

grep(查找某个文件里面所在的关键词,并且

可以把该行列出来)

举例:

ls-l/etc|grepinit|wc-l查

看etc目录下面包含init的文件有多少个(一个文件有多少行,或者一个目录下文件有多少个)。

命令连接符:

1.;让很多命令依次执行。

举例:

pwd;ls;date比如在写系统计划人任务时需要。

2.&&(逻辑与)

command1&&command2

成功执行

失败不执行

write情书

/home/love.txt发完了马山删除,保证

marry受到才删除,不然情书还没发就被删,

白写了。

||(逻辑或):

command1&&command2

成功不执行

失败执行

举例:

还是些情书~

writeMary

mailMary

第一个命令执行成功,不发邮箱,执行不成功

,就发邮件。

3.命令替换符~~

我想查看命令touch文件的详细信息,分两步whichtouch得到touch路径ls-l/bin/touch查看详细信息。

如果知道命令替换:

ls-l~whichtouch~和上者结果一样。

和管道略有不同,是将一个命令的结果作为

另一个命令的参数。

管道择是将一个命令的输出结果作为下一个命令的输入。

写脚本的时候比较方便,因为不用版本的linux路径可能不太一样,如果记忆不出路径,这种方法用以来比较灵活。

软件包管理(第六章)

linux软件包管理,可以分为两个大的方面:

redhat系列软件包管理(很多版本)。

debian系列软件包管理(ubuntu),管理稍有区别。

软件包的选择上追求的是稳定,管理方面追其实用性,并不是说越新越好。

软件包命名形式:

sudo-1.7.2p1-5.el5.i386.rpm其中包括软件名(sudo),版本号(1.7.2p1),发行号(5.e15),和硬件平台(i386)

(1)卸载

#rpm-esudorpm(表示是rpm包,redhat开发的一种2进制包的管理方式,所以后缀名都是.rpm)注意:

如果其他软件包有依赖关系,卸载时会产生提示信息,可使用--nodeps强行卸载。

卸载的时候需要用到软件名称(sudo),安装的时候需要软件包名(sudo-1.7.2p1-5.el5.i386.rpm),i386硬件平台(遵循intelPC硬件平台。

不同硬件平台的软件包是不同的。

)有时候卸载一个软件包会有这样的提示:

比如说我想卸载samba(实现windows和linux之间进行系统共享的软件包)rpm-esamba

因为有依赖的关系,因为另外一个软件包需要它。

理论上来说把samba卸载掉依赖的数据包就毫无价值了,可以先卸载依赖的数据包,再卸载samba。

如果非要直接卸载掉samba,也是可以的。

rpm-e--nodepssamba(不考虑任何软件包依赖于该软件包。

强行卸载。

理论上不建议这么做,除非你对系统有很深了解,对软件包有很深的依赖,那么如果依赖的软件包有10个呢?

那么就比较麻烦了,这就是为什么后来引入yama的原因)linux所有软件和配置文件都是通过二进制文件形式进行存储和安装的。

安装:

如果要安装一个软件包,现在想把sudo再安装上去命令:

rpm-ivhsudo-1.7.2p1-5.e15.i386.rpm(i安装install;v显示这个命令执行的时候详细信息;h安装进度)在安装之前首先要获得这个软件包,有两种方式:

1.系统光盘含有的一个软件包,从系统光盘就可以安装了。

(什么样来挂载光盘,在linux中有挂载的概念,linux中所有的东西都是文件,硬件设备也是文件,光驱也是文件。

它都会以文件的形式来存储,它放在device目录下面不能直接调用,它需要有一个挂载点。

挂载点说的通俗点就是一个空目录。

很多时候我们习惯将光盘放在mnt下面,linux有一个习惯就是把临时挂载的文件放在mnt目录下面。

那你说我死活就是不放在这个目录下面,在别的地方创建一个目录当然也是可以的。

创建mkdir/mnt/cdrom执行的时候有挂载的命令,mount/dev/cdrom/mnt/cdrom(/dev/cdrom光盘原文件挂载到/mnt/cdrom)然后可以看到提示,说是device这个块得文件是写保护的,挂载的时候是只读。

看到提示的时候就代表挂载成功了,那么我们现在访问/mnt/cdrom这个目录就相当于访问光盘上的内容。

)2.如果是安装光盘中不存在的软件包,是从网络上下载的软件包,直接使用rpm-i就可以安装了。

redhat5的目录居然是Server,晕死!

找了半天!

ls找麻烦了。

我们可以用ls|grepsudo查找到。

用Tab补全,不要傻乎乎一个一个的敲键盘。

rpm-ivhsudo......(用Tab补全,安装成功)怎么查看一个软件包是否已经安装套系统中,直接用rpm-qsudo(文件包名就可以了)

查询系统中已经安装的软件包中与samba相关软件包有哪些:

rpm-qa|grepsamba(其中q是查询,a是所有,其实前面那一句是查询系统里面所有的软件包,后面那一句是约束条件,只查询与samba相关的软件。

可以看到与samba相关的软件包可以有多个。

换句话说,也是就如果你要把samba卸载理论上你是需要把这几个与samba相关联的软件包都卸载掉的,所以要知道怎么样进行查询。

关于安装的选项:

1.--excludedocs;

rpm-ivh--excludedocssamba-client-3.0.23c-2.i386.rpm(这个选项的作用是不安装软件包中的文档文件,linux里面很多软件包都有很相详细的文档,也就是说你对这个软件包相当的熟悉了,不需要看帮助文档,那么加上这个选项安装的时候就不会安装了。

2.--prefixPATH(将软件包安装到由PATH指定的路径下,理论上是可以指定路径的。

但是对于rpm包来讲这个指定的意义不大,因为大部分rpm包都不允许改变他们的安装目录。

命令:

rpm-ivh--prefix=/user/local/sudosudo-1.7.2p1-5.e15.i386.rpm这样就可以把安装的路径指定在/user/local;rpm的制作者在生产rpm包的时候都规定了它在Linux系统中的存放的目录,你是改变不了的。

linux不想windows一样有注册表的概念,而且文件的存放位置东一个西一个,卸载的时候容易遗漏,而linux中则不存在注册表的概念,卸载的时候也会循序规则把相应路径的文件全部卸载,不会存在遗漏。

3.--test安装软件包之前测试一下,能发现其依赖的软件包,冲突等……

还有三种情况需要了解:

1.理论上来说已经被安装就不需要重新再安装了,但是有的时候例如在windows里面使用软件的时候不小心删除了它的一些文件,导致其不能运行或者运行不正常,可以重新按照原路径重新安装下。

那么在linux里面可以用一个选项实现,命令:

rpm-ivh--replacepkgssudo-1.7.2p1-5.e15.i386.rpm

这个命令就执行了一个覆盖安装的过程,如果你需要的话。

2.在windows里面例如软件比较老了,系统检测到新的文件,提示要更新到最新的版本。

这个时候在安装的时候可能会提示文件冲突,在windows碰到这种提示,一般我们都选择覆盖。

如果在linux里面也出现这种文件冲突,那么可以使用命令:

rpm-ivh--replacefilessudo-1.7.2p1-5.e15.i386.rpm

(这个时候它会把这个文件进行一个覆盖)

3.第三种情况就是比较挠头的问题,出现了依赖的关系,有很多时候软件包之间是有依赖关系的,比如说我们现在安装一个软件包,它需要c的编译器,那么如果你没有安装c的编译器,那么这个软件包没有办法运行或使用,这是很有可能的。

那么在安装软件包的时候系统提示"失败的依赖关系",理论上这种情况下应该先安装它依赖的软件包,然后才能使用这个软件,如果不这样,这个软件包十有八九是运行不了的。

当然如果你要强行安装,也不是不可以,使用--nodeps,忽略依赖性,强行安装,这个软件包也会被安装上,根据李明大师的经验这个软件包十有八九是用不了。

rpm没有很好的解决依赖的关系,例如安装A,提示依赖B,然后去安装B,有提示依赖C,这样会把人头搞的很大,这也就是为什么yum会诞生的原因,但是rpm还是有其管理方法的。

4.软件包升级rpm-Uvhsudo-1.8.0p1-5.e15.i386.rpm(其中U是升级的意思。

YUM包的管理

YUM应用上面有两个好处:

1.自动解决软件包依赖关系(假如说你想安装软件包A,yum会自动把依赖于软件包A的其他软件包自动安装上去,不需要你自己去找)。

2.方便你软件包的升级(在rpm软件包中,如果我们想升级软件包,需要下载下来最新的软件包,然后把新的版本用rpm-U再执行安装升级才可以。

但是用YUM以后不要去找,我们缺省在centOS或者任何一个redhat系列的linux安装完以后,它都会自动指向一个rpm的源,这个源你也可以自定义修改指向其他地方)。

YUM选项

需要链接互联网,自己在局域网制定一个源也可以,但是在解决问题的时候没有任何价值,因为你需要手动更新这个源,如果能连Inter网,直接执行intel上的yum源就行了。

rpm-esudo

yuminstallsudo(它实际上会在互联网上寻找sudo的软件包,然后检查依赖关系然后完成整个过程。

它会下载安装包,然后完成使用的过程。

提示complete)

测试升级:

yumcheck-updatesudo(如果不写sudo,就表示检查所有软件包的升级,一般别那么写。

一般用yum安装基本上都是最新的,而光盘安装未必是最新的软件包,可以用于检查老的软件包版本用于升级。

如果检查到有新的软件包,会提升升级。

为什么要升级软件包?

一个软件包在发布应用的过程难免会有一些漏洞,会有一些问题,要进行修复,有的问题可能不重要,有的问题则会造成一些黑客的侵入,所以建议经常用的软件包最好经常升级,这是十分必要的。

可以检查升级,也可以直接升级,如果直接升级命令:

yumupdatesudo就可以升级了,比较方面,如果用rpm则需要到互联网上去自己查找,并且下载下来再安装。

可以把其他linux的源执行一台机器A的目录下面,然后升级用yum升级,或者是rpm手动升级。

其他linux用yum升级自动去A的目录下拿最新版本的软件包,这样可以减少同时去internet上面下载所占用的带宽,类似于WSUS.)

查询这个源上面有哪些软件包:

yumlist|more查找具体软件包时候的命令:

yumlist|grepsudo这个查找是查找yum源上面的软件包。

还有一个就是yuminfosudo能查看这个软件包的信息,学习的时候使用,知道软件包是做什么用的,什么时候发布的,版本,这是很有价值的信息,或者任何一个要安装软件包的介绍。

在安装之前最好查看一下要安装的软件包的内容。

yumremovesudo卸载软件包,确定sudo是否在系统中已经安装可以用yumlist|grepsudo还有一种方法rpm-qsudo来检测,要使用灵活,如果只是确定该软件包是否安装,用rpm-qsudo就可以了。

可以详细的看一下yum帮助manyum.软件包是可以信任的,因为更新的软件包的网站是官方的,所以是可以信任的。

用rpm的时候下载软件包,最好不要去小网站,下载的软件包可能存在隐患.RPM包的管理,其实RPM很多情况下是很好用的,它查询快。

1、查询文件隶属于的软件包:

rpm-qf(系统或者软件包安装文件丢失了,还没有备份,想恢复至少要确定文件属于哪一个软件包,或者是清除文件的时候,确定这个文件隶属于哪个文件包,它有什么作用,这个命令十分重要,不管是文件或者命令都可以查询的到。

)2.查询软件包的信息:

rpm-qiname(它和yuminfoname作用差不多,都是查询系统已经安装的软件包有什么作用;如果是还没有安装的软件包,我也知道它是有什么作用,可以rpm-qipname)3.查询软件包安装了哪些文件在系统里面:

rpm-qlnamesrpm-qlpnames(装备在系统中安装的哪些文件)(软件包到底装了哪些文件在系统里面,这个命令很重要,能让我们清除的看到软件包所安装的所有文件和其路径(包括其文件和命令,因为在linux看来都是文件,看看文件和命令,差不多这个软件包就会用了。

如果还不会用,可以看看帮助。

)/etc下面都是软件包的配置文件,usr/下面都是命令。

)rpm-qlp文件全名(可以看文件没有安装之前将要在系统里面安装哪些信息)4:

查看软件包的帮助文件rpm-qdnames

rpm-qdpnames(查看还没安装的软件包的帮助文档)

5:

查看配置文件:

rpm-cnames(安装之后的配置文件)查看没有安装到系统中的rpm包的配置文件rpm-cnames

就像以前讲过的引导流程,里面的服务肯定不是都需要启动的。

rpm-qfvncserver得到信息(vnc-server)它的软件包名是什么,rpm-qivnc-server得到他的作用,如果不需要它可以设置系统每隔运行级别的脚本设置为不启动。

这是一个理念和用法,一定要理解。

rmp的查询能帮助我们解决很多问题。

vi中定义了许多快捷键,其中一个快捷键不想用,不想删除,可以用#注释掉。

但是使用的时候提示错误,why?

因为#不是标准的注释符,配置文件是vim,要有解决问题的思路,rpm-qa|grepvim

(安装包未必只有一个,而且名字也未必很规范,所以要使用rpm-qa|grepvim)基本上在绝大版本的软件包中它的实例文档都叫example

命令rpm-qlvim-common|grepexample

查询出vimrc_example.vim进入查看。

maninfo获得vim的帮助信息,看他的软件包有没有实例文档,发现原来vim的配置文件中的注释符号很特别,不是#而是"。

引导流程解析(第五章)

系统引导流程:

1.固件(firmware)(CMOS/BIOS)——POST加电自检(不能称之为硬件因为是一段

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1