该专栏所有内容笔记均来自传智播客培训班
1.什么是操作系统(operate system OS)
小议:承上启下作用,向下可以控制硬件,向上能够支持软件的运行。一个可以控制硬件的软件。
小明找小红聊天,小明打开QQ,输入消息,小明的QQ将信息传递---->(小明)操作系统---->网络设备----->(小红)操作系统---->小红的QQ---->小红收到消息。反之亦然
ps:以前的诺基亚没有操作系统,想要用QQ必须装个java虚拟机。缺点:同一时刻不允许运行多个程序。但是,小明想运行A软件又想运行B软件还想运行C软件这时候就需要操作系统。
2.现实生活中的操作系统
Windows、Mac、Android、iOS、Linux…
ps:Android主要运用在移动端、Windows、Mac只要运用在电脑PC上
3.操作系统的发展史
1965年的电脑主要是一台主机连接多个终端(显示器、键盘、鼠标),但最多能连接30台左右终端
由于30台终端太少了,1965年美国一些大牛开始搞Multics项目,想把终端搞成300台连接,最后失败了。Ken Thompson为了玩游戏,自己搞了Unix操作系统的原型,当时NCPL语言较为流行,K就以BCPL语言为基础,独自开发了很接近硬件的B语言(BCPL首字母),并用B语言写了第一个Unix操作系统。但是B语言跨平台性能很差,之后K找他的同伴Dennis Ritchie一块在B语言的基础上开发了跨平台能力很强的C语言(BCPL第二个字母),1972年C语言主体完成,C语言由此诞生。之后K和D使用C语言编写Unix操作系统,放到其他电脑上运行效果很棒,兼容性很强。
之后Unix操作系统开始不断的更新迭代(在原来的基础上升级完善),到Version 7 Unix版本的时候,贝尔实验室引起了注意,发现了商机,开始对外申请专利闭源。当时一个Andrew S. Tanenbaum教Unix操作系统的教授生气了,尼玛,你还收费?然后由于A对Unix特别熟悉吃透了Unix的运行原理,之后自己写了一个操作系统,A以小型UNIX(mini-UNIX)之意,将其操作系统称之为MINIX。然后MINIX是完全开源的,A教授当时仅仅为了教学使用,一些其他功能未编写,并无意去编写。
之后一个X大牛,得到MINIX的源码,并对其进行加工,然后他很聪明发布到网上请求各大高手进行共同完善,之后Linux不断的完善茁壮成长起来了。现在的Android底层代码也是Linux。
ps:如果当时A教授执意去开发MINIX,说不定今天风靡全球的就是MINIX了。
Unix有好多版本,其中AT&System V演变到Minix,之后演变到Linux
Android实际上就说:Linux内核(kernel)再加上Java里面的一些东西。
目前绝大多数的手机、pc也都是基于Unix操作系统的。且Linux使用C语言编写的。
Linux的不同版本以及其应用领域
Linux内核版
即Linux最核心的代码,到现在为止已经有成千上百万行代码了,研究其已经没啥意义了,发展的太快了,已经相对很成熟了。
Linux发行版
Android也就是拿到Linux的内核,然后再封装些java的东西形成一个新的操作系统。Redhat、Ubuntu、centOS…都是拿Linux的内核然后附加些“皮肤”形成新的操作系统而已。
4.Linux常用命令
打开终端 Ctrl+Alt+t
把终端放大 Ctrl+Shift+‘+’
把终端缩小 Ctrl+‘-’
找一些属性或者缩小放大关闭的时候鼠标指向最上端,所有属性都在最上端
显示当前路径里面的东西 ls
显示当前文件夹里面内容的详细属性 ls -l
在Linux操作系统里面没有什么盘符这一说,所有的文件都在根目录 / 下
在根目录下有很多文件夹,其中
bin主要放程序
boot跟Ubuntu的启动相关
cdrom主要跟光盘有关
dev和设备相关
etc所有程序服务器配置的地方(新手机开机需要选择语言、桌面主题之类的东西)
lib存放库(我会用锄头但不会制作,你可以用别人的锄头,此时所用别人的锄头就会放在lib里面)
home除了home文件夹其他的不要随便动
某个文件夹内出现一个房子的图标就是家目录,即打开终端的时候默认路径
显示当前路径路径 pwd
(这个比较常用)
创建文件touch 文件名
创建文件名称为1.txt touch 1.txt
,这里的1.txt只是文件名称罢了
在Linux中没有txt之类的文件类型之说,创建a,也是文件 touch a
创建文件的时候,文件名称若以 . 开头,则默认为隐藏文件。
显示当前路径下的所有文件信息ls
例如 touch .yy
,若以ls
进行显示文件名称则显示不出来,得用ls -a
进行显示
创建文件夹名称为yy mkdir yy
清除当前所敲的所有命令 clear
cd命令表示切换路径,切换路径返回上一级 cd ..
这里的..
表示上一级,当然也可以换成其他的具体路径就切换至具体的路径中去
1,Linux命令使用方式
Linux命令格式:
命令 | 选型 | 参数 |
---|---|---|
command | -option | parameter |
ls之后带-
的表示选项,不带-
的表示参数
显示当前目录结构 ls
显示根 / 目录下的所有内容名称ls /
显示根目录下的dev文件夹里面的所有内容名称ls /dev
- 当然如果文件夹里面的文件特别多也可以使用通配符(*)进行筛选,例如显示根目录下的dev文件夹下的所有以y开头的文件,
ls /dev y*
,y,yan,yanyu,yu…这些文件名称会显示,*
可跟零位,一位,多位 - 其中
?
也为通配符,只能负责占一位,例如:ls /dev y?
即显示根目录下的dev文件夹下的所有以y开头且第二位不确定的所有文件名称,yy,yu…这些文件会显示出来,一个?
只能跟一位,当然也可以多个ls y??
,显示yan,yuu…这些第二位第三位未知的文件名称 - 另外
[]
也可以当成通配符,严格算是正则表达式,例如:ls y[abcd]n
,此时只能显示yan,ybn,ycn,ydn这些文件的名称;也可以is y[a-d]n
效果是一样的。
若touch .yy
进行创建 .yy文件,以 . 开头的文件则默认为隐藏文件
此时需要使用ls -a
进行显示,即把隐藏文件名称显示出来
显示文件以列表的形式详细显示出来,其中就包括文件大小,默认以bit为单位显示ls -l
与上一个命令几乎一样,区别在与显示文件大小的时候以合适的单位进行显示出来ls -l -h
其中选型里面的参数顺序无所谓,例如ls -a -l -h
和ls -l -a -h
效果是完全一样的
当然也可以进行简写ls -alh
或者ls -lah
效果也都一样
将上述的功能也可以进行结合,ls /dev -alh
即显示根目录下的dev文件夹下的所有文件的名称的详细信息进行显示,当然参数和选型的位置也可以互换效果一样。
2,参看帮助文档
当你对某个命令不太了解的时候可以使用命令 --help
或者man 命令
对命令的详细效果进行显示(man—manual手册)
显示ls这个命令的所有的功能参数选型ls --help
也可以通过man ls
进行查看,支持上下键滚动,其中f是下一页,b是上一页,q结束帮助文档
查看文件内容cat 文件名称
显示历史敲过的命令history
,重新执行对应数的命令! 对应的数
,例如! 1999
即执行历史记录里面第1999个输入过的命令再重新执行一次,当然也可以通过上下键进行翻阅历史命令。
Linux命令-文件、磁盘管理
1,文件管理
重定向覆盖 >:把原本显示在终端的内容存储到yanyu.txt文件里面,若没有该文件则会先创建该文件,然后会将原先yanyu.txt里面的内容给覆盖掉ls > yanyu.txt
重定向追加**>>** :把原本显示在终端的内容存储到yanyu.txt文件里面,若没有该文件则会先创建该文件,然后会追加到原先yanyu.txt里面的内容里面ls >> yanyu.txt
cat 文件名
、more 文件名
都是查看文件内容
cat yy.txt
查看yy.txt文件里面的内容一次性全部显示出来
more yy.txt
查看yy.txt文件里面的内容一点一点的按进度进行显示出来,b上一页,f下一页,q退出
若需要查看当根目录下的dev目录下内容,且重定向追加到一个固定文件a.txt里面ls -alh /dev >> a.txt
,然后查看信息more a.txt
,之后再删除该文件rm a.txt
显然很麻烦,这时候需要使用管道 | 进行操作,显示完然后消失即可ls -alh /dev | more
若多个命令一起执行可以用英文分号进行显示ls -l;ls -alh
当所要查找的文件名特别长的时候需要使用Tab
进行补齐,两次Tab
会把需要补齐的信息全部显示出来。当你想要切换路径,但是不知道当前文件夹内都有什么的时候,cd /TabTab
就可以把根目录下的所有文件显示出来供你进行选择
跳转到当前文件夹下的yanyu文件夹里面cd ./yanyu
返回当前路径的上一个路径里面cd ..
/home/a/b/c
若当前处于c文件夹内,想要跳转到a文件夹内如何操作?
相对路径:cd ../..
或者cd ../../
绝对路径:cd /home/a
或者cd /home/a/
跳转到上一次跳转的路径中去cd -
切换到家目录(文件夹图标会显示一个房子的样子)cd ~
创建目录mkdir
在Linux中只有文件和目录这两个说法,文件不分后缀,目录实则就是文件夹
当你敲完特别多的代码命令却发现没啥用,原则上你得一个一个删除,这时候Ctrl+C
就可以跳过不执行该命令,相当于终止,以后进入某个程序出不来了,直接使用该命令即可
当你想要删除所有 .txt文件的时候,直接rm *.txt
,通配符删除
以目录的形式显示所有文件及文件夹tree
若需要在A文件夹下的B文件夹下的C文件夹下的D文件夹下创建E文件夹mkdir A/B/C/D/E -p
删除空文件夹rmdir 文件夹名称
删除空文件夹或文件rm 文件夹或文件名称
删除文件,文件夹,文件夹空不空无所谓rm 文件夹或者文件名称 -r
,其中 -r严格来说表示递归的去删除
连接
- 软连接
连接实则是Windows里面的创建快捷方式罢了
将原名称重命名,文件夹,文件都可以重命名mv 原名称 现名称
对原文件创建连接(即快捷方式而已)ln -s 原文件名称 创建快捷方式名称
,(s就是soft的含义)快捷方式一般为蓝色;当rm 原文件名称
将原文件删除之后,快捷方式名称会失效变成红色,这里的快捷方式就相当于软连接。
- 硬连接
有软连接肯定会有对于的硬连接ln 原文件名称 创建快捷方式名称
,这里为硬连接。也就是原文件删除后,创建的快捷方式名称照样可以读取原来的数据。
软连接—>指向原文件名称的快捷方式,原文件删除之后失效
硬连接—>指向原文件内容的快捷方式,原文件删除之后仍可以读取文件内容
Linux里面存在一个硬连接数来接收每个指向内容的硬连接个数,Linux中文件的内容和名称是存放在不同的位置的,软连接中的快捷键是指向原文件名称的,原文件删除后当然软连接失效;而硬连接却是指向文件内容的,每创建一个硬连接,硬连接数会加一。当然每删除一个硬连接,硬连接数会相应减一,当硬连接数为零时,系统会将内容给释放掉。
查看多个文件内容,只能查看不能编辑cat 文件名称1 文件名称2 文件名称3
将多个文件内容进行合并输入到yy.txt中cat 1.txt 2.txt 3.txt > yy.txt
,这里的yy.txt若不存在则会自动创建
文本搜索命令grep
从指定的文件里面搜索指定的内容
搜索a.txt文件里面包含yanyu的内容grep “yanyu” a.txt
,
同时将搜索的内容所在的行数显示到前面grep -n “yanyu” a.txt
显示文件里面不包含yanyu的所有内容grep -v “yanyu” a.txt
显示文件里面以yanyu开头的所有内容grep “^yanyu” a.txt
显示文件里面以yanyu结尾的所有内容grep “yanyu$” a.txt
拷贝文件cp(copy)
将a.txt文件复制粘贴到A文件夹下cp a.txt A
若A为空文件夹或者里面有内容,且要复制到B文件夹下cp -r A B
移动文件、对文件或者文件夹重命名mv
将a.txt文件命重命名为b.txtmv a.txt b.txt
将a.txt文件移动(剪切粘贴)到B文件夹下mv a.txt B
查找文件find
find可以从指定目录中搜索文件名,而grop则是从指定文件里面搜内容
(sudo表示最高权限去搜索)通配符要学会灵活使用
从根目录下搜索文件名包含name的所有文件sudo find / -name "*name*"
从根目录下搜索文件名为name的所有文件sudo find / -name "name"
当然不需要全部都牢记,知道如何去查命令即可find --help
归档管理(打包、解压)tar
- 打包cvf,tar
tar -cvf 打成包的名称.tar 需要打包的文件名称
运行完成后会显示所打包的所有文件名称
将当前路径下的所有 .java为后缀的文件打包且包名为yanyu.tar
tar -cvf yanyu.tar *.java
打包之后大小不变
- 解包xvf
tar -xvf 压缩包的名称.tar
将打包后的文件解包到当前路径且打包的文件不删除
tar -xvf yanyu.tar
- 压缩zcvf,tar.gz、tar.bz2
压缩之后文件大小才会变小
tar -zcvf 压缩之后的压缩包名称.tar.gz 所要压缩的文件名称
tar -jcvf 压缩之后的压缩包名称.tar.bz2 所要压缩的文件名称
zip 压缩之后的压缩包名称.zip 所要压缩的文件名称
将所有 .py后缀的文件压缩且压缩包名称为yanyu.tar.gz
tar -zcvf yanyu.tar.gz *.py
另一种压缩格式
将所有 .py后缀的文件压缩且压缩包名称为yanyu.tar.bz2
tar -jcvf yanyu.tar.bz2 *py
其他压缩格式
将所有 .py后缀的文件压缩且压缩包名称为yanyu.zip
zip yanyu.zip *py
tar.gz压缩包大小要比tar.bz2压缩包小,zip压缩包最大
显示当前路径下所有文件信息ll
其与ls -ls
等价
- 解压zxvf
tar -zxvf 压缩包的名称.tar.gz
tar -zxvf 压缩包的名称.tar.gz -C 指定解压到的路径
tar -jxvf 压缩包的名称.tar.bz2
tar -jxvf 压缩包的名称.tar.bz2 -C 指定解压到的路径
unzip 压缩包的名称.zip
unzip -d 指定解压到的路径 压缩包的名称.zip
将压缩包解压到当前路径且压缩包不删除
tar -zxvf yanyu.tar.gz
将压缩包解压到当前路径下的B文件夹下前提B文件夹是存在的,且压缩包不删除
tar -zxvf yanyu.tar.gz -C ./B
当然若B文件夹就在当前目录下这样也可以tar -zxvf yanyu.tar.gz -C B
另一种解压格式
tar -jxvf yanyu.tar.bz2
将压缩包解压到当前路径下的B文件夹下前提B文件夹是存在的,且压缩包不删除
tar -jxvf yanyu.tar.bz2 -C ./B
当然若B文件夹就在当前目录下这样也可以tar -jxvf yanyu.tar.bz2 -C B
其他解压格式
unzip yanyu.zip
将压缩包解压到当前路径下的B文件夹下前提B文件夹是存在的,且压缩包不删除
unzip -d yanyu.zip ./B
当然若B文件夹就在当前目录下这样也可以unzip -d yanyu.zip B
上述的所有命令其实都在根目录下的bin文件夹里面cd /bin
若要查看命令所在路径只需要which 命令
即可
查看ls这个命令在哪which ls
Linux命令-系统管理
查看当前月份的日历具体到当前月cal
,没有农历只有阳历
将指定年份所有的日历都显示出来cal -y 指定年份
将1999年的所有月份日历显示出来cal -y 1999
查看当前时间date
结合起来,可以将当前日历打印到指定文件a.txt里面cal -y 1999 > a.txt
或者打印当前时间date > a.txt
也可以按自己规定的样式输出时间date "+%Y其间可以随便添格式%m其间可以随便添格式%d"
其中%Y为年(2017),%y也为年(17),%m为月,%d为天,大小写的区别自己去试吧,我就没那么闲着没啥去试了哈
查看进程信息ps
显示当前这一时刻正在运行的进程ps
显示Linux所有的进程一显示一输出就完了ps -aux
显示linux所有的进程会不断的动态显示只有按下q退出之后才停止top
;更详细的动态显示htop
若某个程序占用cup过大则可以通过kill 对应PID
将其sha掉,这里的PID通过ps -aux
可查看
若某个进程特别死皮不要了,则可以通过kill -9 对应PID
将其sha掉
关机重启
重启reboot
立刻关机shutdown -h now
20分钟之后关机shutdown -h +20
晚上10点14分关机shutdown -h 22:14
显示硬盘的使用情况df
或df -h
显示当前路径中文件或文件夹使用情况du
或du -h
查看当前电脑的网络信息ifconfig
,其中io称之为本地环回其是虚拟出来的,用于测试电脑的网络功能是否好使,一般其IP为127.0.0.1
将指定的网卡更改指定的IPifconfig 对应网卡 指定IP
指定与固定的电脑IP测试是否可以网络互通ping 其他电脑的ip
用户权限管理
Linux是个多用户多任务的操作系统
多任务即当前操作系统可以同时运行多个程序
多用户指的是可以在不用退出当前账户的前提下可以使用其他的账户来执行操作些事情
添加一个新的用户sudo useradd 用户名称 -m
,执行过程:创建了‘用户名称’这个账户顺便在home文件夹里面创建了个文件夹,这个文件夹当成这个账户的家目录,并且这个家目录的名称和这个’用户名称‘一模一样。其中 -m表示创建完账户之后顺便会在home下面创建一个这个账户的家目录(也就是文件夹),家目录名称与账户名称一致
sudo useradd python -m
之后会在home文件夹下出现一个python文件夹
如何确定其是个文件夹还是个用户呢?cat /etc/passwd
之里面保存的信息都是账户的信息
在Windows中可以通过注销来选择其他用户进行登录
Linux则通过sudo su 用户名称
来切换用户,之后路径与原先的路径不变
Linux则通过sudo su -r 用户名称
来切换用户,之后会跳转到用户名称的家目录下
切换到python用户sudo su python
,此时会提示,需要输入密码,傻脸了~;执行该命令之后所在路径不会变,还是原来的路径pwd
可以查看观察一下;
此时若sudo su - python
就会切换用户的时候直接跳转到该用户的家目录中去
新创建的用户是没有密码的,需要对用户进创建密码sudo passwd 用户名称
对python该用户设置密码sudo passwd python
,之后输入两次密码即可;当然,当你忘记密码的时候也可以通过该命令对密码进行重置操作
查看当前的账户名称whoami
退出账户exit
退出到之前的原先账户
在Linux里面可以打开多个终端切换到不同的账户中去,俩终端对应俩不同的账户
Windows是假的多用户,你得注销之后才能选用其他的用户进行登录,Linux则不会。
远程登录ssh 用户名@其对应IP
在终端输入Ctrl+Shift+G
,会将两个终端进行排列显示,其中Alt快速切换
查看当前有多少人登录自己的账户who
,有IP显示的表示远程连接
从根目录开始给劳资删rm / -rf
,对大型的互联网公司这样干犯法的哈
删除用户sudo userdel 用户名称
,此时用户的家目录并不会删除,当你离职的时候只需要把你的账号给删除即可,家目录里面的编写的代码不会删除的
将用户和用户的所有代码信息全部删除sudo uerdel -r 用户名称
区别在于 -r表示删不删该用户的家目录,一般不删
在Linux中root就相当于Windows里面的administer最高管理员
若要切换到root,sudo -s
即可,身份直接变成管理员(较常用)
而sudo su root
是原先非的管理员获得了管理员的所有权限了
当你已经成为root的身份的时候,sudo操作就没啥作用了;命令里面带有sudo只是root对该命令赋予一次最高权限罢了
$ 账户为普通用户,而 # 为root账户
用户、用户组
用户很好理解就是Windows下的不同的用户,注销就可以切换那种
用户组就等价于QQ空间里面的分组,发个说说不让谁看啥的
查看用户组组名cat /etc/group
也可以groupmod
然后多按几次Tab键,便可以进行查看所有的用户组组名
创建用户组sudo groupadd 用户组名称
删除用户组sudo groupdel 用户组名称
当创建一个新用户的时候默认就会创建一个组,其组名为该用户的名称sudo useradd 用户名称
ls
一下之后,第一个表示文件的拥有者;第二个表示用户组
举个例子:a在B组里面,且a创建了一个文件,此时,若b也在B组里面,就可以拥有B组对a文件的所有操作权限
当你安装Linux操作系统的时候,系统会自动给你创建一个sudo用户组;当你的用户在其他用户组的时候,输入命令sudo -s
切换管理员的时候,若其用户不再sudo组是不允许切换管理员的
为创建普通的用户添加sudo权限,新创建的用户默认是不在sudo组里面
为普通用户创建sudo和adm权限sudo usermod -a -G adm 用户名
和sudo usermod -a -G sudo 用户名
,之后便将当前用户添加到sudo组里面去了,即可执行sudo -s
直接切换root用户了
修改文件的所有者chown
将一个文件的所属者更换chown 用户 文件
将1.py这个文件的所属者更改为yanyuchown yanyu 1.py
修改文件所属组chgrp
将文件的所属组更改chgrp 所属组 文件名
将q.txt这个文件的所属组改成YanYuchgrp YanYu q.txt
,即哪个用户在YanYu这个组里面,哪个用户就对q.txt文件具有最高权限
文件的权限
显示当前所有文件信息ll
等价于ls -la
,会发现有10个字母,分为四组,1、3、3、3这四组
1 | 3 | 3 | 3 |
---|---|---|---|
- 普通文件 | 文件拥有者的权限 | 同组者的权限 | 其他人的权限 |
d 文件夹 | r read可读 w write可写 x exe可执行 - 没权限 | 同理 | 同理 |
之后紧挨着的一位数字表示其文件或文件夹的硬连接数,后跟文件所属者、文件所属组、文件大小、修改日期
为文件进行赋权限:主要有三个类别身份u文件拥有者,g同组,o其他人
修改文件的权限chmod 类别身份=rwx随便选 要修改权限的文件名称
对y.java文件的拥有者权限设置为可读chmod u=r y.java
对y.java文件的其他人权限什么也不许chmod o=
同理也可以一次性全部赋权限chmod u=rwx,g=,o=r
拥有者可读可写可执行,同组用户什么权限都没有,其他用户至可读
很显然很麻烦这样搞权限赋值的话,这时候可以使用数字法对权限赋值,r-4,w-2,x-1
chmod u=x,g=wx,o=rwx y.py
等价于chmod 137 y.py
显然数字法比字母法简单的一批
编辑器
- gedit
gedit 文件名称
对a.txt文件进行编辑gedit a.txt
这个还是别用了,容易显得自己很low
- sublime
一个真正的跨平台编辑器,windows、Mac、Linux都有相应软件
- vi、vim
vi先有的,然后vim只不过是在vi的基础上新加了些额外的功能
编辑a.txt文件vim a.txt
当你对该文件不正常关闭的时候,比如kill掉,ls-a
便会出现 .a.txt.swp这个隐藏文件,这是由于a.txt因为不正常关闭导致的将里面的内容缓存的一个缓存文件,当你再次vi a.txt
编译的时候便会出现一个弹窗然后让你选择是否恢复或者删除之类的提示
- 在命令模式下(Esc)
yy
表示复制光标所在的这一行
4yy
表示复制光标所在的这一行向下的4行
p
表示粘贴
dd
表示剪切(删除)光标所在的行
2dd
表示剪切(删除)光标所在的这一行向下的2行
光标移动
h
向左移动一个字符位置 j
下 k
上 l
右
H
光标移动到当前屏幕的上方 M
当前屏幕的之间 L
当前屏幕的下方
Ctrl+F
翻下一屏
Ctrl+B
翻上一屏
Ctrl+U
翻上半屏
Ctrl+D
翻下半屏
20G
表示快速定位到第20行代码
G
表示快速回到整个代码的最后一行
gg
表示快速回到整个代码的第一行
w
表示向后跳一个单词的长度,即跳到下一个单词的开始处
dw
表示删除删除光标所在的整个单词
b
表示向前跳一个单词的长度,即跳到上一个单词的开始处
D
表示从当前的光标开始剪切直到行末
d0
表示从当前光标开始剪切直到行首
x
表示删除光标所在位置的内容,往后删,每次只能删除一个
X
表示删除光标前一个位置的内容,往前删,每次只能删除一个
u
表示撤销
Ctrl+R
表示反撤销
按下V或v
开始选中代码片
V
表示光标所在的整个行
v
表示光标所在之前
>> 表示右移代码
<< 表示左移代码
.
表示重复执行上一次命令操作
{
表示移动到上一个代码段处
}
表示移动到下一个代码段处
r
表示替换光标所在位置一个字符,按下r之后再按需要替换的字符即可
R
替换光标以及后面的字符,按下R之后再按需要替换的字符即可,会将光标及其后面的字符挨个替换
/后接所需要搜索的内容
,搜索成功之后会显示黄色,当然要想消去黄色提醒,搜索个不存在的即可
n
表示显示下一个搜索的内容
N
表示显示上一个搜索的内容
Shift+zz
表示保存并退出,相当于末行模式下(:)的wq
- 在末行模式下(:)
%s/A/B/g
,将整个文件里面的所有B代替A,A不存在了
%1,20/A/B/g
将文件中1-20行之内的B代替A,A不存在了
q
表示退出
w
表示保存
wq
表示保存并退出
q!
表示强制退出
vi中显示文件行数,在命令模式下输入
显示全部行数set nu
显示光标所在行的行数nu