Linux基础操作
- 常用快捷键与命令
- 终端常用命令说明
-
- ls命令说明
- cd命令说明
- mkdir参数说明
- rm参数说明
- tree选项说明
- cp选项说明
- mv选项说明
- cat选项说明
- more操作键说明
- grep选项及参数说明
- 管道|使用说明
- 远程管理命令说明
-
- shutdown命令说明
- ifconfig命令说明
- ping命令说明
- ssh命令说明
- scp命令说明
- 用户、组及权限
-
- 权限列表
- 超级用户
- 创建/删除组
- 用户管理
- 查看用户信息
- usermod命令说明
- which命令说明
- 修改文件权限
- 系统信息相关命令
-
- 时间和日期
- 磁盘信息
- 进程信息
- 其他命令
-
- 查找文件
- 软链接
- 打包和压缩
- 软件安装
- VI编辑器
-
- 打开和新建文件
- 三种工作模式
- 命令模式命令
- 末行模式命令
- 编辑模式命令
常用快捷键与命令
终端命令格式: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:
例2:
16.管道:|
17.使用gedit打开文件:gedit 文件名
18.执行当前路径下的某个文件:./文件名
远程管理:
1.关机/重启:shutdown 选项 时间
2.查看或配置网卡信息:
命令 | 作用 |
---|---|
ifconfig | 查看/配置计算机当前网卡配置信息 |
ping ip地址 | 检测目标ip地址的连接是否正常 |
3.远程登录和复制文件:
命令 | 对应英文 | 作用 |
---|---|---|
ssh 用户名@ip | secure 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:
例2:
例3:
注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 |
HTTPS | 443 |
FTP服务器 | 21 |
SSH客户端的简单使用:
格式:
ssh [-p port] [email protected]
#user 是远程机器上的用户名,如果不指定的话默认为当前用户
#remote 是远程及其的地址,可以试试IP/域名,或者是别名
#port 是SSH Sever 监听的端口,如果不指定,默认值是22
提示:使用“exit”退出推出当前用户的登录
如何免密码登录
1.配置公钥:执行ssh-keygen即可生成SSH要是,一路回车即可
2.上传公钥到服务器:执行ssh-copy-id -p port [email protected],可以让远程服务器记住我们的公钥
注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 [email protected]内容
方法:在~/.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 [email protected]:Desktop/01.py
# 将本地当前当前目录下的01.py文件复制到远程家目录下的Desktop/01.py
scp -P port [email protected]:Desktop/01.py 01.py
# 将文件远程家目录下的Desktop/01.py复制到本地当前当前目录下的01.py
注1:scp注1:ssh这个终端命令只能在Linux或者UNIX系统下使用
注2:如果在Windows系统中,可以安装PuTTY,使用pscp命令行工具或者安装FileZilla使用FTP进行文件传输(FTP的端口号为21)
用户、组及权限
权限列表
权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | excute | x | 1 |
>>ls -l
>total 4
drwxr-xr-x 3 jackson26 jackson26 4096 6月 17 18:28 123
-rw-r--r-- 1 jackson26 jackson26 0 6月 17 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 6月 17 18:41 123
-rw-r--r-- 1 jackson26 jackson26 0 6月 17 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
系统信息相关命令
时间和日期
命令 | 作用 |
---|---|
cal | calender 查看日历,-y选项可以查看一年的日历 |
date | 查看系统时间 |
磁盘信息
命令 | 作用 |
---|---|
df -h | disk free 显示磁盘剩余空间 |
du -h [目录名] | disk usage 显示目录下的文件大小 |
说明:-h的作用是以人性化的方式显示文件大小
一般关注根目录,即“/”路径下的空间使用情况
进程信息
命令 | 作用 |
---|---|
ps aux | process 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.行内移动
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
行首 | ||
^ | 行首,第一个不是空白字符的位置 | |
$ | 行尾 |
3.行数移动
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | Go | 文件末尾 |
数字gg | go | 移动到数字对应行数 |
数字G | Go | 移动到数字对应行数 |
:数字 | 移动到数字对应行数 |
4.屏幕移动
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
移动(程序)
1.段落移动
vi中使用空行来区分段落
在程序开发时,通常一段功能相关的代码会写在一起,之间没有空行
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
2.括号切换
在程序世界中,(),[],{}使用频率很高,而且都是成对出现的,可以通过%在它们之间进行切换
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
3.标记
在开发时,某一块代码可能需要稍后处理,例如:编辑、查看
此时先使用m增加一个标记,这样可以在需要时快速的跳转回来或者执行其他编辑操作
标记名称可以是 a~z 或者 A~Z 之间的任意一个字母
添加了标记的行如果被删除,标记同时被删除
如果在其他行添加了相同名称的编辑,之前添加的标记也会被替换掉
命令 | 英文 | 功能 |
---|---|---|
m | mark | 添加标记x,x可以是 a~z 或者 A~Z 之间的任意一个字母 |
'x | 直接定位到标记x所在位置 |
选中文本(可识模式)
在vi中要选择文本,需要先使用Visual命令切换到可视模式
vi中提供了三种可视模式,可以方便程序员选择选中文本的方式
按Esc可以放弃选中,返回到命令模式
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向选中文本 |
提示:可视模式下,可以和移动命令,例如:“ggVG”能够选中所有内容
.撤销和恢复撤销
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次命令 |
Ctrl + r | redo | 回复撤销的命令 |
删除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在字符,或者选中文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行,可以ndd复制多行(n为行数) |
D | delete | 删除至行尾 |
提示:如果使用可视模式已经选中了一段文本,那么无论使用d还是x,都可以删除选中文本
删除命令可以和移动命令连用,以下是常见的组合命令:
>>dw #从光标位置删除到单词末尾
>>d0 #从光标位置删除到一行的起始位置
>>d} #从光标位置删除到段落末尾
>>ndd #从光标位置向下连续删除n行
>>d代码行G #从光标所在行删除到制定代码行之间的所有代码
>>d'a #从光标所在行删除到标记a之间的所有代码
复制、粘贴
vi中提供有一个被复制文本的缓冲区
复制命令会将选中的文字保存在缓冲区
删除命令删除的文字会被保存在缓冲区
在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置
命令 | 英文 | 功能 |
---|---|---|
y(移动命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行(n为行数) |
p | paste | 粘贴 |
替换
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R命令可以进入替换模式,替换完成后,按下Ese可以回到命令模式
替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改
缩排和重复执行
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左增加缩进 |
. | 重复上次命令 |
在可视模式下,缩排命令只需要使用一个>或者<
在程序中,缩进通常用来表示代码的归属关系
查找
常规查找:
命令 | 功能 |
---|---|
/str | 查找str |
查找到制定内容之后,使用Next查找下一个出现的位置:
n:查找下一个
N:查找上一个
如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可
单词快速匹配:
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过
末行模式命令
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & 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这个快捷键的
命令 | 英文 | 功能 |
---|---|---|
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | quit | 退出当前窗口,如果是最后一个窗口,则关闭vi |
o | other | 关闭其他窗口 |
编辑模式命令
在vi中除了常用的i进入编辑模式外,还提供了以下命令同样可以进入编辑模式:
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
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会在之前选中的每一行代码前插入#