个人笔记-Linux基础

常用快捷键与命令

终端命令格式command [-options] [parameter] 即 命令名 + 选项(对命令进行控制,可省略)+ 参数(可以是0个、1个、多个)

终端相关:
1.调用终端:Ctrl/Command + Alt + T
2.放大终端字体:Ctrl/Command + Shift + =
3.缩小终端字体:Ctrl/Command + -
4.自动补全:Tab
5.曾用命令: /
6.退出执行当前命令: Ctrl + C
文件操作
1.查看当前文件夹下的内容:ls (list)
2.查看当前所在文件夹:pwd (print work directory)
3.切换文件夹:cd (chang directory)
4.如果文件夹不存在,新建文件:touch
5.创建目录:mkdir (make directory)
6.删除指定文件名:rm (remove)
7.清屏:clear
8.以树状图列出文件目录结构:tree
9.复制文件或目录:cp 源文件 目标文件
10.移动文件或目录/重命名:mv 源文件 目标文件
11.查看文件内容、创建文件、文件合并、追加文件内容等功能:cat(concatenate)
12.分屏显示文件内容:more
13.搜索文本文件内容:grep
14.在终端中显示参数指定的文字,通常会和重定向联合使用:echo
15.重定向:

>表示输出,会覆盖原有的内容
>>表示追加,会将内容追加到已有文件的末尾

例1:

echo Hello Python >> 123.txt  # 将“Hello Python”添加到123.txt

例2:

ls -lh > 123.txt  # 将当前文件夹的信息输出保存到123.txt

16.管道:|
17.使用gedit打开文件:gedit 文件名
18.执行当前路径下的某个文件:./文件名
远程管理
1.关机/重启:shutdown 选项 时间
2.查看或配置网卡信息:

命令作用
ifconfig查看/配置计算机当前网卡配置信息
ping ip地址检测目标ip地址的连接是否正常

3.远程登录和复制文件:

命令对应英文作用
ssh 用户名@ipsecure shell关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径secure copy远程复制文件

权限管理
1.修改用户/组对文件/目录的权限:chmod +/-rwx 文件名|目录名
2.使用另一个用户的身份,预设身份为root:sudo

终端常用命令说明

ls命令说明

Linux文件或者目录名称最长可以有256个字符
.开头的文件为隐藏文件
.代表当前目录
…代表上级目录

参数含义
-a显示指定目录下的所有子目录与文件,包含隐藏文件
-l以列表方式显示文件的详细信息
-h配合-l以人性化的方式显示文件大小
通配符含义
*代表任意个字符
?代表任意一个字符,至少1个
[]表示可以匹配字符组中的任意一个
[abc]匹配a、b、c中的任意一个
[a-f]

cd命令说明

命令含义
cd切换到当前用户的主目录(/home/用户目录)
cd ~切换到当前用户的主目录(/home/用户目录)
cd .保持当前目录不变
cd …切换到上级目录
cd -可以再最近两次工作目录之间来回切换

mkdir参数说明

参数含义
-p可以递归创建目录

注意:新建目录的名称不能与当前目录中的已有的目录或者文件同名(如:当前目录已有一个123文件则无法在当前目录创建123文件夹)

rm参数说明

参数含义
-f强制删除,忽略不存在的文件,无需提示
-r递归地删除目录下的内容,删除文件夹时必须加此参数

tree选项说明

选项含义
-d只显示目录

cp选项说明

选项含义
-i覆盖文件前提示(执行时如果目标文件夹有同名,会提示是否覆盖)
-r若给出的源文件是目录文件,则cp
将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名字

mv选项说明

参数含义
-i覆盖文件前提示(执行时如果目标文件夹有同名,会提示是否覆盖)

cat选项说明

cat会一次显示所有的内容,适合查看内容较少的文本文件

选项含义
-b对非空输出行编号
-n对输出的所有行编号

more操作键说明

操作键功能
空格键显示下一屏
Enter键一次滚动一行
b .回滚一屏
f前滚一屏
q退出
/word搜索word字符串

grep选项及参数说明

选项含义
-n显示匹配行及行号
-v显示不包含匹配文本的所有行(相当于求反)
-i忽略大小写
参数含义
^a行首,搜寻以a开头的行
ke$行尾,搜寻以ke结束的行

管道|使用说明

Linux允许将一个命令的输出通过管道作为另一个命令的输入
常用的管道命令有:
more:分屏显示内容
grep:在命令执行结果的基础上查询指定的文本
例1:

ls -alh | more  *将当前文件夹的文件信息分屏显示

例2:

ls -alh | grep Do | more *将当前文件夹的文件信息中包含“Do”的文件信息分屏显示出来

远程管理命令说明

shutdown命令说明

选项含义
-r重新启动
-c取消关闭/重启计算机

例1:

shutdown -r now  # 现在重启操作系统

例2:

shutdown 20:30  # 在今晚八点半关机

例3:

shutdown +10  # 十分钟后关机

注1:不指定选项及参数,默认1分钟后关闭电脑
注2:远程维护服务器时,最好不要关闭系统,而应该重新启动系统

ifconfig命令说明

例1:

>>ifconfig  # 查看网卡配置信息
>ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.232.128  netmask 255.255.255.0  broadcast 192.168.232.255
        inet6 fe80::7427:8383:c614:c712  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ee:cd:97  txqueuelen 1000  (Ethernet)
        RX packets 4291  bytes 4807232 (4.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1268  bytes 108998 (108.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 257  bytes 21103 (21.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 257  bytes 21103 (21.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

例2:

>>ifconfig | grep inet  # 查看网卡对应的ip地址
>      inet 192.168.232.128  netmask 255.255.255.0  broadcast 192.168.232.255
       inet6 fe80::7427:8383:c614:c712  prefixlen 64  scopeid 0x20<link>
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>

提示:一台计算机中可能会有一个物理网卡和多个虚拟网卡,在Linux中物理网卡的名字通常以ensXX表示
127.0.0.1被称为本地回环/环回地址,一般用来测试本机网卡是否正常

ping命令说明

ping一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢
原理:网络上的机器都有位移确定的ip地址,我们给目标ip地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在
例1:本机ip地址:192.168.2.112

>>ping 192.168.2.112
>PING 192.168.2.112 (192.168.2.112) 56(84) bytes of data.
64 bytes from 192.168.2.112: icmp_seq=1 ttl=128 time=4.94 ms 
64 bytes from 192.168.2.112: icmp_seq=2 ttl=128 time=1.48 ms
64 bytes from 192.168.2.112: icmp_seq=3 ttl=128 time=2.06 ms
64 bytes from 192.168.2.112: icmp_seq=4 ttl=128 time=1.51 ms
64 bytes from 192.168.2.112: icmp_seq=5 ttl=128 time=1.93 ms
^C
--- 192.168.2.112 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 1.489/2.389/4.948/1.300 ms

注:如需停止,按 Ctrl + C 终止运行

ssh命令说明

ssh客户端是一种使用“Secure Shell(SSH)”协议连接到远程计算机的软件程序,数据传输是加密压缩的
相关概念:
域名:由一串用点分隔的名字组成,例如 www.baidu.com,是ip地址的别名,方便用户记忆
端口号:通过端口号可以找到计算机上运行的应用程序,SSH服务器的默认端口号是22,如果是默认端口号,在连接的时候可以省略
常见服务端口号列表:

服务端口号
SSH服务器22
Web服务器80
HTTPS443
FTP服务器21

SSH客户端的简单使用:
格式:

ssh [-p port] user@remote
#user 是远程机器上的用户名,如果不指定的话默认为当前用户
#remote 是远程及其的地址,可以试试IP/域名,或者是别名
#port 是SSH Sever 监听的端口,如果不指定,默认值是22

提示:使用“exit”退出推出当前用户的登录

如何免密码登录
1.配置公钥:执行ssh-keygen即可生成SSH要是,一路回车即可
2.上传公钥到服务器:执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

注1:ssh这个终端命令只能在Linux或者UNIX系统下使用
注2:如果在Windows系统中,可以安装PuTTY或者XShell客户端软件即可

在XShell使用中,如输入ip地址无误,仍无法连接,显示如下:

Connecting to 192.168.232.128:22...
Could not connect to '192.168.232.128' (port 22): Connection failed.

Type `help' to learn how to use Xshell prompt.

则可按照以下顺序进行操作:
1.ifconfig 如果有eth0网卡 就说明打开了 否则输入ifup eth0打开网卡
2.再判断有没有安装了ssh服务(因为UBANTU默认不安装) 输入:ps -e | grep ssh 如果服务已经启动,则可以看到“sshd”,否则表示没有安装服务,或没有开机启动
3.安装ssh服务,输入命令:sudo apt-get install openssh-server
4.启动服务:/etc/init.d/ssh start

配置计算机别名
配置别名来代替ssh后-p port user@remote内容
方法:在~/.ssh/config里追加以下内容

Host mac
	HostName ip地址
	User itheima
	Port 22

保存后即可使用ssh mac实现远程登录了,scp同样可以使用

scp命令说明

scp的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是小写的

选项含义
-r若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件
目标文件必须为一个目录名
-P若远程SSH服务器的端口不是22,需要使用大写字母-P选项指定端口

例1:

scp -P port 01.py user@remote:Desktop/01.py  
# 将本地当前当前目录下的01.py文件复制到远程家目录下的Desktop/01.py
scp -P port user@remote:Desktop/01.py 01.py
# 将文件远程家目录下的Desktop/01.py复制到本地当前当前目录下的01.py

注1:scp注1:ssh这个终端命令只能在Linux或者UNIX系统下使用
注2:如果在Windows系统中,可以安装PuTTY,使用pscp命令行工具或者安装FileZilla使用FTP进行文件传输(FTP的端口号为21

用户、组及权限

权限列表

权限英文缩写数字代号
readr4
writew2
执行excutex1
>>ls -l
>total 4
drwxr-xr-x 3 jackson26 jackson26 4096 617 18:28 123
-rw-r--r-- 1 jackson26 jackson26    0 617 18:26 aaa.txt

执行ls -l后,从左到右依次是:
·权限,第1个字符如果是d表示目录,之后的9个字符可分为三组,第一组代表当前文件/目录拥有者的权限(即第一个jackson26),第二组代表这个文件/目录对应的组的权限(即第二个jackson),第三组为其他人(即除了对应用户和组之外的)的权限
·硬链接数,通俗讲就是有多少种方式可以访问到当前目录/文件

>>tree
>.
├── 123
│   ├── 222
│   │   └── ttt.txt
│   ├── 77
│   ├── ddd.txt
│   └── qqq.txt
└── aaa.txt

3 directories, 4 files
>>ls -l
>drwxr-xr-x 4 jackson26 jackson26 4096 617 18:41 123
-rw-r--r-- 1 jackson26 jackson26    0 617 18:26 aaa.txt

如上所示,123的硬链接数为4,即有4种途径访问该文件夹,分别为:1.绝对路径;2.“cd .”;3.在222文件夹中使用“cd …”;4.在77文件夹中使用“cd …”
·拥有者,家目录下文件/目录的拥有者通常都是当前用户
·,在Linux中,很多时候会出现组名和用户名相同的情况
·大小
·时间
·名称

超级用户

在LInux系统中,root账号通常用于系统的维护和管理(如添加用户/组,安装软件等),对操作系统的所有资源具有所有访问权限
在大多数版本的Linux中,都不推荐直接使用root账号登录系统
在LInux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”(即只能在自身家目录下活动的用户,不能修改系统设置相关)

用户在使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过则必须重新输入密码
注:若未经授权的用户企图使用sudo,则会发出警告邮件给管理员

创建/删除组

提示:创建/删除组的命令都需要通过sudo执行

命令作用
groupadd 组名添加组
groupdel 组名删除组
cat /etc/group确认组信息
chgrp -R 组名 文件/目录名修改文件/目录的所属组

用户管理

提示:创建/删除用户/修改其他用户密码的命令都需要通过sudo执行

命令作用说明
useradd -m -g 组 新建用户名添加新用户-m 自动建立用户家目录
-g 指定用户所在的组,否则会建立一个同名的组
passwd 用户名设置用户密码如果是普通用户,直接用passwd可以修改自己的账户密码
userdel -r 用户名删除用户-r 选项会自动删除用户家目录
cat /etc/passwd 管道符号+grep 用户名确认用户信息新建用户后,用户信息会保存在 /etc/passwd文件夹中

提示:
1.创建用户时,如果忘记添加-m选项指定新用户的家目录,最简单的方法就是删除用户,重新创建
切换用户

命令作用 说明
su - 用户名切换用户,并且切换目录- 可以切换到用户家目录,额否则保持位置不变
exit退出当前登录用户如曾多次切换用户,则每次输入exit,依次退出

查看用户信息

命令作用
id [用户名]查看用户UID和GID信息
who查看当前所有登录的用户列表
whoami查看当前登录用户的账户名

passwd文件
/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是:
1.用户名
2.密码(x表示加密的密码)
3.UID(用户标识)
4.GID(组标识)
5.用户全名或本地账号(空则表示用户名为全名)
6.家目录
7.登录使用的Shell,就是登录后,使用的终端命令,ubuntu默认是dash(这是一个软件,在Windows下使用XShell登录别的用户时会发现有些键盘按键无法使用,这就是dash在WIndows下不适用造成的,可以用之后提到的修改用户登录Shell命令进行修改)
例1:

>>cat -n /etc/passwd | grep zhangsa
>43	zhangsan:x:1001:1001::/home/zhangsan:/bin/sh

usermod命令说明

usermod 可以用来设置用户的主组/附加组和登录Shell
主组:通常在新家用户时指定,在etc/passwd的第四列GID对应的组
附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限
提示:设置了用户的附加组之后,需要重新登录才能生效
例1:

# 修改用户的主组(即GID)
usermod -g 组 用户名

# 修改用户的附加组(就大多数时候都是修改附加组)
usermod -G 组 用户名

# 修改用户登录Shell
usermod -s /bin/bash 用户名

注意:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中:

usermod -G sudo 用户名

which命令说明

提示1:etc/passwd是用于保存用户信息的文件
提示2:/usr/bin/passwd是用于修改用户密码的程序
利用which命令可以查看执行命令所在位置
例1:

>>which ls
>/bin/ls

>>which passwd
>/usr/bin/passwd

>>which useradd
>/usr/sbin/useradd

bin和sbin
1.在Linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin
2./bin(binary)是二进制执行文件目录,主要用于具体应用
3./sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
4./usr/bin(user commands for applications)后期安装的一些软件
5./usr/sbin(super user commands for applications)超级用户的一些管理程序
提示:cd这个终端命令是内置在系统内核中的,没有独立的文件,因此which无法找到

修改文件权限

命令作用
chown修改拥有者
chgrp修改组
chmod修改权限

命令格式如下:

# 修改文件/目录的拥有者
chown 用户名 文件名/目录名

# 递归修改文件/目录的组
chgrp -R 组名 文件名/目录名  # -R即可修改目录下所有子目录后文件的组

# 递归修改文件权限
chmod -R 755 文件名/目录名

chmod在设置权限时,可以简单地使用三个数字(上例中为755)分别对应拥有者/组和其他用户的权限
之前提及的以“chmod +/-rwx 文件名/目录名”修改权限的方式无法精确到拥有者/组/其他,rwx对应的数字分别为4/2/1,而755则相当于4+2+1/4+1/4+1即rwx/rx/rx权限
常见的数字组合有(u表示用户/g表示组/o表示其他):
777→u=rwx,g=rwx,o=rwx
755→u=rwx,g=rx,o=rx
644→u=rw,g=r,o=r

系统信息相关命令

时间和日期

命令作用
calcalender 查看日历,-y选项可以查看一年的日历
date查看系统时间

磁盘信息

命令作用
df -hdisk free 显示磁盘剩余空间
du -h [目录名]disk usage 显示目录下的文件大小

说明:-h的作用是以人性化的方式显示文件大小
一般关注根目录,即“/”路径下的空间使用情况

进程信息

命令作用
ps auxprocess status 查看进程的详细情况
top动态显示运行中的进程并且排序
kill [-9] 进程代号终止指定代号的进程,-9 表示强制终止

默认只会显示当前用户通过终端启动的应用程序

aux选项含义

选项含义
a显示终端上的所有进程,包括其他用户的进程
u显示进程的详细状态
x显示没有控制终端的进程

提示1:使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃:
提示2:要退出top可以直接输入q

其他命令

查找文件

find命令通常用来在特定的目录下搜索符合条件的文件

命令作用
find [路径] -name “*.py”查找制定路径下扩展名是.py的文件,包括子目录

如果省略路径,表示在当前文件夹下查找
之前学习的通配符,在使用find命令时可同时使用
例1:

# 搜索桌面目录下,文件名包含1的文件
>>find -name "*1*"

# 搜索桌面目录下,所有以.txt为扩展名的文件
>>find -nmae "*.txt"

# 搜索桌面目录下,以数字1开头的文件
>>find -name "1*"

软链接

命令作用
ln -s 被链接的源文件 链接文件建立文件的软链接,类似于Windows下的快捷方式

说明::没有-s选项的话则会建立一个硬链接文件,工作中几乎不会建立文件的硬链接
提示:在建立软链接是要养成习惯——源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用

软硬链接科普
在LInux中,文件名和文件的数据是分开存储的,通过文件名可以访问文件数据,软链接则是保存了链接到源文件的完整路径,通过完整路径就能访问到链接文件的数据,而删除了链接的源文件,则无法通过软连接访问到原来的数据。硬链接则相当于文件数据的另一个文件名,也可以直接访问存储到磁盘的数据,只有把一个文件数据的所有文件名、硬链接都删除后,这个文件数据才能被真正删除。
提示:
·在Linux中,只有文件的硬链接数=0才会被删除
·使用ls -l可以查看一个文件的硬链接数量
·在日常工作中几乎不会建立文件的硬链接

打包和压缩

打包/解包
前言:在不同操作系统中,常用的打包压缩方式是不同的
Windows常用rar
Mac常用zip
Linux常用tar.gz
说明:tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件夹中,也可以把一个打包的大文件恢复成一系列文件
例1:

# 打包文件
>>tar -cvf 打包文件.tar 被打包的文件/路径

# 解包文件
>>tar -xvf 打包文件.tar
选项含义
c生成档案文件,创建打包文件
x解开档案文件
v列出归档解档的详细过程,显示进度
f指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后

压缩/解压缩
1.gzip
tar与gzip命令结合可以使用实现文件打包和压缩
注:tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz
在Linux中,最常见的压缩文件格式就是xx.tar.gz
在tar命令中有一个选项-z可以调用gzip,从而可以方便的实现压缩和解压缩的功能
例1:

# 压缩文件
>>tar -zcvf 打包文件.tar.gz 被压缩的文件/路径

# 解压缩文件
>>tar -zxvf 打包文件.tar.gz

# 解压缩到制定路径
>>tar -zxvf 打包文件.tar.gz -C 目标路径

2.bzip2
tar与bzip2命令结合可以使用实现文件打包和压缩(用法和gzip一样),扩展名为xxx.tar.bz2
在tar命令中有一个选项-j可以调用bzip2,从而可以方便的实现压缩和解压缩的功能

例2:

# 压缩文件
>>tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径

# 解压缩文件
>>tar -jxvf 打包文件.tar.bz2

# 解压缩到制定路径
>>tar -jxvf 打包文件.tar.bz2 -C 目标路径
选项含义
-C解压到指定目录,注意:要解压缩的目录必须存在

软件安装

apt是Advancd Packaging Tool,是Linux下的一款安装包管理工具
可以再终端方便的安装/卸载/更新软件包
例1:

# 安装软件
>>sudo apt install 软件包

# 卸载软件
>>sudo apt remove 软件名

# 更新已安装的包
>>sudo apt upgrade

配置软件源
如果希望自Ubuntu中安装软件更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供下载/安装服务
提示:更换服务器后,需要一个相对较长时间的更新过程,需要耐心等待
所谓镜像源,就是所有服务器的内容都是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些
操作方法:在系统设置界面,进入软件和更新,更改“下载自”的镜像源地址

VI编辑器

vi编辑器在系统管理,服务器管理编辑文件时,其功能永远不是图形界面的编辑器能比拟的
vim:即vi improved,是从vi发展出来的一个文本编辑器,支持代码补全、编译及错误跳转等方便编程的功能,被称为编辑器之神

打开和新建文件

在终端中输入vi在后面跟上文件名即可
例:

>>vi 文件名

>>vi 文件名 +行数  # 打开一个文件并定位到指定行

如果文件已存在,会直接打开该文件
如果文件不存在,会新建一个文件

三种工作模式

1.命令模式:【其他模式下按Esc进入】打开文件即进入了命令模式,是使用vi的入口,通过命令对文件进行常规的编辑操作,如:定位、翻页、复制、粘贴、删除……
2.末行模式:【命令模式下按:进入】用于执行保存、退出等操作,末行模式是vi的出口
3.编辑模式:【命令模式下按i进入】正常的编辑文字

命令模式命令

移动(基础)
1.上下左右

命令功能手指
h向左食指
j向下食指
k向上中指
l向右无名指

2.行内移动

命令英文功能
wword向后移动一个单词
bback向前移动一个单词
0行首
^行首,第一个不是空白字符的位置
$行尾

3.行数移动

命令英文功能
gggo文件顶部
GGo文件末尾
数字gggo移动到数字对应行数
数字GGo移动到数字对应行数
:数字移动到数字对应行数

4.屏幕移动

命令英文功能
Ctrl + bback向上翻页
Ctrl + fforward向下翻页
HHead屏幕顶部
MMiddle屏幕中间
LLow屏幕底部

移动(程序)
1.段落移动
vi中使用空行来区分段落
在程序开发时,通常一段功能相关的代码会写在一起,之间没有空行

命令功能
{上一段
}下一段

2.括号切换
在程序世界中,(),[],{}使用频率很高,而且都是成对出现的,可以通过%在它们之间进行切换

命令功能
%括号匹配及切换

3.标记
在开发时,某一块代码可能需要稍后处理,例如:编辑、查看
此时先使用m增加一个标记,这样可以在需要时快速的跳转回来或者执行其他编辑操作
标记名称可以是 a~z 或者 A~Z 之间的任意一个字母
添加了标记的行如果被删除,标记同时被删除
如果在其他行添加了相同名称的编辑,之前添加的标记也会被替换掉

命令英文功能
mmark添加标记x,x可以是 a~z 或者 A~Z 之间的任意一个字母
'x直接定位到标记x所在位置

选中文本(可识模式)
在vi中要选择文本,需要先使用Visual命令切换到可视模式
vi中提供了三种可视模式,可以方便程序员选择选中文本的方式
Esc可以放弃选中,返回到命令模式

命令模式功能
v可视模式从光标位置开始按照正常模式选择文本
V可视行模式选中光标经过的完整行
Ctrl + v可视块模式垂直方向选中文本

提示:可视模式下,可以和移动命令,例如:“ggVG”能够选中所有内容

.撤销和恢复撤销

命令英文功能
uundo撤销上次命令
Ctrl + rredo回复撤销的命令

删除文本

命令英文功能
xcut删除光标所在字符,或者选中文字
d(移动命令)delete删除移动命令对应的内容
dddelete删除光标所在行,可以ndd复制多行(n为行数)
Ddelete删除至行尾

提示:如果使用可视模式已经选中了一段文本,那么无论使用d还是x,都可以删除选中文本
删除命令可以和移动命令连用,以下是常见的组合命令:

>>dw  #从光标位置删除到单词末尾
>>d0  #从光标位置删除到一行的起始位置
>>d}  #从光标位置删除到段落末尾
>>ndd  #从光标位置向下连续删除n行
>>d代码行G  #从光标所在行删除到制定代码行之间的所有代码
>>d'a  #从光标所在行删除到标记a之间的所有代码

复制、粘贴
vi中提供有一个被复制文本的缓冲区
复制命令会将选中的文字保存在缓冲区
删除命令删除的文字会被保存在缓冲区
在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置

命令英文功能
y(移动命令)copy复制
yycopy复制一行,可以nyy复制多行(n为行数)
ppaste粘贴

替换

命令英文功能工作模式
rreplace替换当前字符命令模式
Rreplace替换当前行光标后的字符替换模式

R命令可以进入替换模式,替换完成后,按下Ese可以回到命令模式
替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改

缩排和重复执行

命令功能
>>向右增加缩进
<<向左增加缩进
.重复上次命令

在可视模式下,缩排命令只需要使用一个>或者<
在程序中,缩进通常用来表示代码的归属关系

查找
常规查找:

命令功能
/str查找str

查找到制定内容之后,使用Next查找下一个出现的位置:
n:查找下一个
N:查找上一个
如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可
单词快速匹配:

命令功能
*向后查找当前光标所在单词
#向前查找当前光标所在单词

在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过

末行模式命令

命令英文功能
wwrite保存
qquit退出,如果没有保存,不允许退出
q!quit强行退出,不保存退出
wqwrite & quit保存并退出
x保存并退出

提示:
1.命令d、x类似于图形界面的剪切操作——Ctrl+x
2.命令y类似于图形界面的复制操作——Ctrl+c
3.命令p类似于图形界面的粘贴操作——Ctrl+v
4.vi中的文本缓冲区只有一个,如果后续做过复制、剪切操作,之前缓冲区中的内容会被替换
注意:vi中的文本缓冲区和系统的剪贴板不是同一个,所以在其他软件中使用Ctrl+c复制的内容,不能在vi中通过p命令粘贴,可以再编辑模式下使用鼠标右键粘贴

查找并替换
命令格式:

:%s///g

1.全局替换
一次性替换文件中的所有出现的旧文本

:%s/旧文本/新文本/g

2.可视区域替换
先选中要替换文字的范围

:s/旧文本/新文本/g

3.确认替换
即把末尾的“g”改成“gc”,替换时会有提示,推荐使用

:s/旧文本/新文本/gc

y=yes替换
n=no不替换
a=all替换所有
q=quit退出替换
l=last替换最后一个,并把光标移动到行首
^E向下滚屏
^Y向上滚屏

其他常用命令

命令英文功能
:e .edit会打开内置的文件浏览器,浏览当前目录下的文件
:n 文件名new新建文件
:w 文件名write另存为,但是仍然编辑当前文件,并不会切换文件

分屏命令
使用分屏命令,可以同时编辑和常看多个文件

命令英文功能
:sp [文件名]split横向增加分屏
:vsp [文件名]vertical split纵向增加分屏

1.切换分屏窗口
分屏窗口都是基于Ctrl+w这个快捷键的

命令英文功能
wwindow切换到下一个窗口
rreverse互换窗口
cclose关闭当前窗口,但是不能关闭最后一个窗口
qquit退出当前窗口,如果是最后一个窗口,则关闭vi
oother关闭其他窗口

编辑模式命令

在vi中除了常用的i进入编辑模式外,还提供了以下命令同样可以进入编辑模式:

命令英文功能常用
iinsert在当前字符前插入文本常用
Iinsert在行首插入文本较常用
aappend在当前字符后添加文本
Aappend在行末添加文本较常用
o在当前行后面插入一空行常用
O在当前行前面插入一空行常用

连续输入相同字符
1.在命令模式下输入需要重复的次数n
2.按i进入编辑模式
3.输入需要的字符x
4.按Esc返回命令模式
5.系统会自动重复2、3步骤n次,即输入n个x

利用可视块给多行代码加注释
1.在命令模式下移动到要添加注释的第1行代码,按^来到行首
2.按Ctrl +v进入可视块模式
3.用j向下连续选中要添加的代码行
4.输入I进入编辑模式,并在行首插入注意:一定要使用I
5.输入#也就是注释符号
6.按下Esc返回命令模式,返回之后vi会在之前选中的每一行代码前插入#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值