正在更新中…
su -
su - | 切换身份(切换到root身份) |
---|
exit | 退出root身份 |
ls命令
如果文件名之前多一个.
,则代表这个文件为隐藏文件
ls
是英文单词list的简写,其功能为列出目录的内容
ls | 查看当前目录的内容(缺点:隐藏文件看不到) |
---|
ls -a | 查看当前目录内容,包括隐藏文件 |
ls -l(等价于ll ) | 以列表方式显示文件的详细信息(文件类型,权限,大小等) |
ls -al | 查看当前目录内容(包括隐藏文件)的详细信息 |
ls -h | 配合-l 以人性化的方式显示文件大小 |
ls -lh | 查看目录内容的详细信息,以K,M,G方式显示文件大小 |
ls /root/aaa | 查看/root目录下的aaa目录的内容 |
ll /root/aaa | 查看/root目录下的aaa目录的内容的详细信息 |
ls -R | 当前目录下的所有文件都会被显示出来,连同子目录的内容一起列出(递归列出) |
ls -d | 仅列出目录本身(当前目录. ) |
ls -lh a* | 列出当前目录下所有以’a’开头的文件的详细信息(人性化) |
ls -l --full-time | 能够显示完整的时间格式,包括年月日,时间.(若是一个文件被修改的时间距离现在太久,那么时间部分仅会显示年份) |
pwd,mkdir命令
mkdir
命令:用于创建目录
pwd | 查看当前所在目录 |
---|
mkdir 目录名(如:mkdir text) | 在当前目录下创建文件夹(用于创建没有层级关系 的目录) |
mkdir -p 目录1/目录2/目录3 | 在当前目录下一次创建多层文件夹(创建有层级的目录 ),若是目录1和目录2不存在则也要创建目录1,2 |
mkdir -m 777 目录名 | 创建权限为777的目录(777也可改为其它,如111等) |
mkdir -v 目录 | 创建目录(假如创建bbb目录)会显示信息mkdir: 已创建目录 "bbb" |
rm命令
rm
命令用于删除
文件或目录(-f
删文件,-r
删目录)
rm -r 目录 | 删除目录有提醒 是否删除(y是,n否),而且是递归删除 |
---|
rm 文件名 | 删除文件有提醒(单独一个rm无法删除目录) |
rm -fr 目录 | 直接删除目录(强删----不管有没有内容) |
rm -fr 文件名 | 删除文件(强删) |
rmdir命令
rmdir
命令用于删除空目录
rmdir 目录名 | 删除空目录,不是空目录无法删除 |
---|
rmdir dir | 若dir是空目录则删除,否则无法删除 |
rmdir -p aaa/aa | 当子目录aa被删除后使目录aaa也成为空目录的话,则目录aaa也被删除 |
cd命令
cd
命令,功能是更改
当前的工作目录
.
当前目录
..
上一级目录
cd | 切换到用户主目录(root用户主目录是/root,其他用户是/home/用户名) |
---|
cd ~ | 回到用户主目录 |
cd 目录(如cd text) | 进入此目录 |
cd .. | 回到上一级目录 |
cd ../.. | 回到上上一级目录 |
cd - | 表示在最后两次出现的目录之间切换(类似于↑↓键) |
cd / | 回到/ 目录 |
cd ../text | 相对路径(相对于当前目录) |
---|
cd /root/text | 绝对路径(从/目录开始的路径) |
[root@localhost ~]# ln -s /root/myshell /etc/shellx
[root@localhost ~]# cd /etc
[root@localhost etc]# cd -P ./shellx
[root@localhost myshell]#
[root@localhost myshell]# cd /etc
[root@localhost etc]# cd -L ./shellx
[root@localhost shellx]#
touch命令
touch
命令用于创建文件
touch a.text | 在当前目录下创建a.text文件(相对路径) |
---|
touch /root/a.text | 在/root目录下创建a.text文件(绝对路径) |
touch a.text b.text c.text | 一次创建多个文件 |
mv命令
mv
命令:可用来移动
文件或目录,也可用来给文件或目录重命名
1.移动:
移动文件(到目录中) | mv 文件名 目录名 |
---|
例子 | mv a.text dir |
移动多个文件(到目录中) | mv 文件名1 文件名2 文件名3 目录名 |
例子(将a.text,b.text,c.text文件移到dir目录中) | mv a.text b.text c.text dir |
移动目录(将目录1移到目录2中) | mv 目录名1 目录名2(已存在) |
2.重命名:
文件重命名 | mv 文件名 新文件名 |
---|
目录重命名 | mv 目录名 新目录名(不能存在) |
cat命令
cat命令的功能:查看文件内容
cat
是由第一行到最后一行
连续显示在屏幕上
cat 文件名 | 查看文件的内容 |
---|
cat -n 文件名 | 将文件的内容加上行号(空行 也要加行号 )后输出 |
cat -b 文件名 | 列出行号,仅针对非空白行做行号显示,空白行不标行号 ,显示文件内容 |
cat -A 文件名 | 可列出一些特殊字符而不是空白([tab] 会以^I 表示,换行符 则是以$ 表示) |
cat -T 文件名 | 将[tab]键以^I 显示出来 |
cat -E 文件名 | 将结尾的换行符 换成$ 显示出来 |
cat -TE 文件名 | 功能同cat -A 文件名 一样 |
cat --version | 显示版本信息并退出 |
cat --help | 显示帮助信息并退出 |
cat -s 文件名 | 将所有的连续的多个空行替换成一个空行 |
cat -n test1>test2
cat -b test1 test2>>test3
[root@localhost ~]# cat -n h.c
1 #include <stdio.h>
2 int main()
3 {
4
5 int a=12;
6 int b=12;
7 int sum=a+b;
8 printf("%d",sum);
9
10 return 0;
11 }
tac命令
tac
的功能是跟cat相反的,它是由最后一行到第一行
反向在屏幕上显示出来
nl命令
nl 文件名 | 将文件的内容加上行号(空行不加行号 )后输出 |
---|
nl -b t 文件名 | 如果有空行,空行不列出行号 ,将文件的内容加上行号后输出 |
nl -b a 文件名 | 将文件的内容加上行号(空行也要加行号 )后输出,类似cat -n |
nl -n ln 文件名 | 行号在屏幕的最左方显示(左对齐,空格不用0 填充 ) |
nl -n rn 文件名 | 行号在自己栏位的最右方显示(右对齐,空格不用0 填充 ) |
nl -n rz 文件名 | 行号在自己栏位的最右方显示,(右对齐,空格用0 填充 如第一行为000001) |
nl -w n 文件名 | n:行号栏位的占用的字符数(n=1,2,3…) |
more命令
nl,cat,tac
等命令都是一次性地将数据全显示
在屏幕上,而more,less
则是一页一页
翻动
more +n 文件名 | 从文件内容的第n行开始显示(n=1,2,3…) |
---|
more -n 文件名 | 指定每屏(每页)显示的行数为n(也就是刚开始第1行至第n行显示在屏幕上,接下来通过摁Enter键,摁一次显示1行(也可以通过空格键)…直到显示完为止) |
more +/sum h.c | 从文件h.c中查找第一个出现"sum"字符串的行,并从该处前2行开始显示 |
more -p 文件名 | 滚屏,在顶部显示文件内容 |
more -c 文件名 | 从顶部清屏,然后显示文件内容 |
Ctrl+b或b | 往回翻页,这操作只对文件有用,对管道无用 |
---|
空格键 | 向下翻一页 |
Enter | 向下翻一行 |
:f (注意:是Shift+: (也就是: ;键),然后再摁f ) | 立刻显示出文件名和目前显示的行数 |
q | 立刻离开more,不再显示文件内容 |
less命令
空格键 | 向下翻动一页 |
---|
[pagedown] (键盘上的PgDn键) | 向下翻动一页 |
[pageup](PgUp键) | 向上翻动一页 |
q | 离开less这个程序 |
g | 前进到这个数据的第一行 (文件第一行) |
G | 前进到这个数据的最后一行 去 |
less +/字符串 文件名 | 从文件第一行开始向下 查找字符串 |
less +?字符串 文件名 | 从文件最后一行开始向上 查找字符串 |
less +n 文件名 | 重复 前一个查找(与/或?有关) |
less +N 文件名 | 反向 (若前一个是从前往后查找,则这个是从后往前查找)的重复前一个 查找(与/或?有关) |
head命令
head和tail
都是以行
为单位来进行数据截取
的
head(取出文件前面几行
)
head [-n number] 文件名 | -n后面接数字,代表显示几行的意思 |
---|
head 文件名 | 默认显示前面10行 |
head -n 5 文件名 | 显示5行文件内容 |
head -n -10 文件名 | 除了最后面10行不显示 ,其它都显示(若number是负数,则文件最后面number行不显示,其它都显示) |
tail命令
tail(取出后面几行
)
tail [-n number] 文件名 | -n 后面接数字,代表显示几行 的意思 |
---|
tail 文件名 | 默认 显示文件内容的最后10行 |
tail -n 20 文件名 | 显示文件最后20行 |
tail -n +100 文件名 | 只显示100行以后(包括100行) 的数据 |
tail -f /var/log/messages | 因为/var/log/messages随时会有数据写入,利用-f 这个选项,它可以一直刷新显示/var/log/messages这个文件,新加入的数据都会被显示在屏幕上,直到按下[Ctrl]+c 才会结束tail这个命令的执行 |
cut命令
cut命令:在文件的每一行中提取片段.
cut的工作就是剪
,就是在文件中负责剪切数据用的.cut命令从文件的每一行剪切字节,字符和字段并将这些字节,字符和字段输出.
cut [选项参数][N-M] filename
说明:默认
分隔符是制表符
选项 | 作用 |
---|
-b | 输出这些字节(注意:一个汉字占两个字节哦) |
-c | 输出这些字符 |
-d | 分隔符,按照指定分隔符分割列(字段) |
-f | 输出这些字段(也就是按照分隔符分隔列时输出第几到第几列) |
-s | 不显示没有分隔符的行 |
-n | 忽略(也就是告诉cut不要将多字节字符(汉字)拆成一个个字节) |
若是单独使用-b(不使用-n选项)来剪切文件内容(假如文件内容含有汉字),则会输出一些你看不懂的字符 ,也就是你得不到你想要的结果,因为cut会将多字节字符拆分成一个个字节
.
N | 第N个字节,字符或字段,从1计数起 |
---|
N- | 从第N个字节,字符或字段直至行尾 |
N-M | 从第N到M(包括M)个字节,字符或字段 |
-M | 从第1到M(包括M)个字节,字符或字段 |
[root@localhost ~]# cat b.text
文 件:系统
类型abc
容:量
已 用
可 用
已用%
挂载 点
123 456 789
[root@localhost ~]# cut -c1 b.text
文
类
容
已
可
已
挂
1
[root@localhost ~]# cut -n -b1,2,3 b.text
文 件
类型a
容:量
已 用
可 用
已用%
挂载
123
cp命令
cp a.text dir | 将a.text文件复制 到dir目录 |
---|
cp a.text b.text | 将a.text文件的内容复制 到b.text |
cp a.text dir/b.text | 将a.text的内容复制 到dir目录下并重命名 为b.text |
cp -a 目录名1 目录名2 | 将目录1复制到目录2中 |
例子(将dir1目录复制到dir2目录中) | cp -a dir1 dir2 |
# 给myshell创建一个软连接shellx
[root@localhost ~]# ln -s /root/myshell /root/shellx
# -d复制符号链接作为符号链接而不是复制它指向的文件,并且保护在副本中原本件之间的硬链接
[root@localhost ~]# cp -d shellx dir2
#给a.text文件创建一个硬连接b.text
[root@localhost ~]# ln /root/a.text /root/b.text
# -l制作硬连接代替非目录复制(也就是再创建一个硬连接)
[root@localhost ~]# cp -l b.text c.text
# -p表示保持原始文件的所有者,组,许可和时间表属性
#也就是文件text的文件权限和所属用户,所属用户组,其它用户,文件大小和文件最近修改时间和文件a.text是一样的
[root@localhost ~]# cp -p a.text text
cp:是否覆盖"text"? y
# -i表示无论是否覆盖现存文件都作提示
[root@localhost ~]# cp -i a.text text1
cp:是否覆盖"text"? y
tar命令
Linux的压缩包后缀一般是.tar.gz
1.解压
.tar.gz格式:
tar -zxvf 压缩文件 [-C] [指定解压目录 ] | |
---|
tar -zxvf redis-3.2.8.tar.gz | 将压缩包解压到当前目录 |
tar -zxvf redis-3.2.8.tar.gz -C /root/dir | 将压缩包解压到指定目录 |
tar -xvf redis-3.2.8.tar.gz | 默认解压到当前目录 |
zip格式:
unzip mysql-connector-java-8.0.13.zip | 默认解压到当前目录 |
---|
unzip -d /opt mysql-connector-java-8.0.13.zip | 解压到指定目录 |
2.压缩
.tar.gz格式
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 | 将snappy-1.1.1文件夹进行打包压缩到指定目录 |
tar -czvf text.tar.gz /root/text | 打包压缩 |
tar -cvf text.tar.gz /root/text | 打包(不压缩) |
zip格式
zip -r mysql-connector-java-8.0.13.zip mysql-connector-java-8.0.13 | 将当前目录下的mysql-connector-java-8.0.13文件夹进行打包压缩 |
---|
tar -c | 创建一个新tar文件 |
---|
tar -v | 显示运行过程的信息 |
tar -f | 指定文件名 |
tar -z | 调用gzip压缩命令进行压缩 |
tar -t | 查看压缩文件的内容 |
tar -x | 解开tar文件 |
find命令
用法:find path -option [-print] [-exec -ok command] {} \;
默认路径为当前目录
;默认表达式为 -print
find
命令(文件查找命令
):用于查找符合条件的命令
-name
按文件名查
-type f
只查文件,不查文件夹
find / -name ’ins* ’ | 查找/ 目录下文件名以ins开头 的文件 |
---|
find / -name ‘*.text ’ | 查找/ 目录下文件名以.text结尾 的文件 |
find -type f -size +100M | 查找/ 目录下文件大小大于100M 的文件(+ 表示大于) |
find -name ‘*text’ | 查找当前目录下以text结尾的文件 |
find . -type d -print | 从当前目录查找,仅查找目录,找到后打印路径名(可用于打印目录结构) ,-print 可省略 |
find /root -name a.text>/root/null | 将find /root -name a.text 输出的内容重定向到null中 |
find / -size -100c | 查找/目录下小于100B大小的文件(c表示字节,- 表示小于) |
find / -size 100c | 找/目录下100B大小的文件) |
|
-print | 将查找到的文件输出到标准输出 |
---|
-exec command {} ; | 将查找到的文件执行command操作,注意:{}和\; 之间有空格 |
-ok command {} ; | 和exec一样,但在操作前要询问用户 |
选项 | |
-name filename | 查找名为filename的文件 |
-perm | 按执行权限来查找 |
-user username | 按文件属主来查找 |
-group groupname | 按文件所属用户组来查找 |
-nogroup | 查找无有效属组的文件,即文件的属组不在/etc/groups文件中 |
-nouser | 查找无有效属主的文件,即文件的属主不在/etc/passwd文件中 |
-newer f1 !f2 | 查找更改时间比f1新但比f2旧的文件 |
-type b/d/c/p/l/f | 查找块设备/目录/字符设备/管道/符号链接 /普通文件 |
-size n[c] | 查找长度为n块(或n字节) 的文件 |
-depth | 在进入子目录前,先行查找完本目录 |
-fstype | 查找更改时间比f1新但比f2旧的文件 |
-mount | 查找文件时,不跨越文件系统mount点 |
-follow | 如果遇到符号链接文件,就跟踪链接所指的文件 |
-cpio | 对匹配的文件使用cpio命令,将其备份到磁带设备中 |
-prune | 忽略某个目录 |
grep命令
grep命令
可以对文件进行文本查询
grep hello 文件名 | 在文件中查找hello |
---|
grep hello 文件名 --color | 在文件中查找hello并高亮显示 |
grep -v int 文件名 | -v 只打印没有匹配的,而匹配的反而不打印(匹配到int的行不打印) |
-n | -n选项表示显示行号 |
wc命令
功能:统计指定文件中的字节数,字符数,字数和行数.
wc [option] file | |
---|
选项 | |
-c | 统计字节数 |
-l | 统计行数 |
-m | 统计字符数 |
-w | 统计字数 |
-L | 统计最长行的长度 |
which命令
which
命令:查看可执行文件
的位置
ps命令
ps命令
用来列出
系统中当前运行的那些程序(进程
)
ps -ef | 查看当前Linux系统所有的进程 |
---|
ps | 查看ps命令本身的进程和当前终端进程 |
UID每个用户的编号
PID每一个进程的编号
(它父亲PPID)
kill命令
kill命令
用来终止执行中的程序
,也就是终止进程
kill -9 pid | |
---|
kill -9 12345 | 终止pid为12345的进程 |
管道命令
管道命令|
的作用是将一个命令的输出
用作另一个命令的输入
ps -ef | grep java | 查看名称中包含java的进程 |
---|
ll | grep dir | 查找当前目录中dir相关的文件或文件夹 |
用户的创建和删除命令
useradd 用户名 | 创建一个新用户 |
---|
passwd 用户名 | 设置用户密码 |
userdel -r 用户名 | 删除用户 |
权限管理命令
r | 可读 (读取权) |
---|
w | 可写(写入权) |
x | 可执行(执行权) |
- | 无权限 |
r | 对文件是指可读取内容 ,对文件夹 是指可以ls |
---|
w | 对文件是指可以修改内容;对文件夹 是指可以在其中创建或删除子节点(目录或文件) ,可以mv (移动,重命名) |
x | 对文件是指是否可以运行 这个文件,对目录是指是否可以cd 进入这个目录 |
文件类型:d
代表文件夹
,-
代表普通文件
,l
代表快捷方式(链接文件)
属主(user)u | 属组(group)g | 其它用户(other)o |
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
chgrp命令
chgrp
修改文件所属用户组
注意:要被修改的组名必须要在/etc/group文件中存在
chgrp 用户组名 文件(目录)名 | 修改所属用户组 |
---|
chgrp bin test1 | 将test1的所属用户组修改为bin |
chgrp -R 用户组名 目录名 | 递归修改,连同子目录下的所有文件和目录(也被修改) |
chown命令
chown
修改文件拥有者
注意:要被修改的用户名必须要在/etc/passwd文件中存在
chown [-R] 账号名称 文件或目录 | |
---|
chown xinuser test1 | 修改test1目录的所属用户(文件拥有者)为xinuser |
chown -c root test1 | 修改test1目录的所属用户(文件拥有者)为root,-c 表示详尽地描述每个文件实际改变了那些所有权 (文件拥有者和所属用户组从什么变更到什么) |
chown -v root test1 | -v 的作用和-c 的作用一样,但是如果文件的所属用户本身就是root, 不改变,则-v 也会详尽地描述文件实际改变了哪些所有权,而-c 啥事也不干. |
chown [-R] 账号名称:用户组名称 文件或目录 | -R表示进行递归修改,连同目录下的所有文件目录(和子目录下的所有文件和目录)都修改 |
chown . 用户组名称 文件名 | 修改所属用户组(chown也能单纯地修改所属用户组,因为. ) |
chown .bin test1 | 将test1的所属用户组修改为bin |
chown : 用户组名称 文件名 | 修改所属用户组(chown也能单纯地修改所属用户组,因为: ) |
chown :root test1 | 将test1的所属用户组修改为root |
chown xinuser:bin test | 将test目录的所属用户修改为xinuser,所属用户组修改为bin |
chown root.root test | 将test目录的所属用户修改为root,所属用户组修改为root |
[root@localhost ~]# ln -s myshell shellx
[root@localhost ~]# chown -h xinuser.bin shellx
[root@localhost ~]# chown xinuser.root shellx
chmod命令
chmod命令
用于变更
文件或目录的权限
u | 代表所属用户的身份 |
---|
g | 代表所属用户组的身份 |
o | 代表其它用户的身份 |
a | 代表全部(即ugo)身份all |
chmod +x a.text | 给所有用户都加上执行权限 |
---|
chmod u+x a.text | 给所属用户添加 执行权限,在原来权限的基础上追加 |
chmod u=x a.text | 给所属用户赋为 执行权限,将原来的权限覆盖 |
chomd a-x 文件名 | 将所有用户都减去 执行权限,a可省略 |
chmod -x a.text | 将所有用户都减去 执行权限 |
chmod 777 a.text | 给所有用户都加上所有权限 (4+2+1 ) |
chmod 000 test1 | 所有用户都无任何权限 (如d--------- ) |
chmod -R u+x 目录名 | -R进行递归修改,连同子目录下的所有文件都会被修改 |
chmod u=rwx,go=rx 文件名 | 将所属用户设置为读写执行权限,将所属用户组和其它用户设置为读和执行权限 |
chmod a+r a.text b.text | 将a.text和b.text的所有用户都加上读取权限 |
chmod -R a+r * | 将当前目录下的所有文件连同子目录递归修改,将所有用户都加上读取权限 |
chmod --help | 显示此命令的帮助信息并退出 |
chmod --version | 显示此命令的版本信息并退出 |
chmod -vR 744 test1 | -v 显示权限变更的详细资料(从什么权限变更到什么权限),-R 递归修改权限 |
chmod -c 744 a.text | 若该文件权限确实已经更改,才显示其更改动作(从什么权限变更到什么权限);若权限不变则啥事也不干 |
一个文件刚创建时默认的权限就是644(4+2,4,4),-rw-r--r--
hostname命令
hostname
命令:查看主机名
ifconfig命令
Linux
查看IP地址:ifconfig
Windows
查看IP地址:ipconfig
service命令
service
命令:用来控制系统服务的实用工具,它以启动
,停止
,重新启动
和关闭系统服务
,还可以显示
所有系统服务的当前状态
service network status | 查看网络服务状态 |
---|
service network stop | 停止网络服务 |
service network start | 启动网络服务 |
service network restart | 重启网络服务 |
ln命令
ln命令是用来创建硬连接和软连接的
硬连接
硬连接:如果A文件和B文件的关系是硬连接的关系,当用户修改了A文件的内容,那么B文件的内容也会改变;当用户修改了B文件的内容,那么A文件的内容也会被改变.
特点:
1.硬连接不限于两个文件之间,可以在多个文件之间进行,ls -l
命令中显示了文件的硬连接数
(只有文件的才是硬连接数,目录不是)
2.不能对目录做硬件连接
3.不能在不同的文件系统之间做硬连接,df -Th
命令中显示了Linux中的文件系统.
4.所有的硬连接,具备相同的iNode节点号.
创建硬连接:
ln file1 file2
给文件1创建硬连接
软连接
软连接
也叫做符号链接
类似Windows中的快捷方式,为一个源文件创建一个快捷方式.
特点:
1.如果源文件被删除了,快捷方式就不能使用了;一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据.
2.在ls -l
中,软连接作为一种特殊的文件类型显示出来,其第一个字母是l
.
3.软连接的大小是其链接文件的路径中的字符数.
ln命令
可以用来创建软连接
(类似于创建快捷方式)
ln -s a.text b.text | 给a.text创建快捷方式b.text (给a.text创建软连接,b.text为创建好的软连接名) |
---|
pwd -P
显示文件的实际路径,而不是软连接的路径.
[root@localhost ~]# ln -s /root/myshell /etc/shellx
[root@localhost ~]# cd /etc/shellx
[root@localhost shellx]# ls
user.sh
[root@localhost shellx]# pwd
/etc/shellx
[root@localhost shellx]# pwd -P
/root/myshell
删除软连接
如果软连接,连接到的是一个目录
cd /etc
正确的删除方法:rm -fr ./shellx
错误的删除方法:rm -fr ./shellx/
,因为这样会把实际目录中的所有文件删除
history命令
history | 查看所有的历史命令(也可以通过摁↑ 和↓ 键) |
---|
clear命令
clear | 清屏命令,还可以使用快捷方式Ctrl+L |
---|
vi
vi是Linux中最经典的文本编辑器,vi的核心设计思想:让程序员的手指始终保持在键盘的核心区域,就能完成所有的操作
vi的特点:
1.只能是编辑文本内容,不能对字体段落进行排版.
2.不支持鼠标操作.
3.没有菜单,只有命令
vi a.text | 直接打开a.text文件 |
---|
vi a.text +10 | 直接打开文件并定位到第10行 |
vi编辑器有三种模式:
1.一般命令模式
:打开文件直接进入一般命令模式,是使用vi的入口.通过命令对文件进行常规的编辑操作,例如定位
,翻页
,复制
,粘贴
,删除
.在其它图形编辑器下,通过快捷键或鼠标实现的操作,都在一般命令模式下实现
2.编辑模式
:正常的编辑文字.在一般命令模式,无法编辑文件的内容,要等到你按下[i,I,o,O,a,A,r,R]
等任何一个字母之后才会进入编辑模式
.如果要回到一般命令模式
,则需按下[Esc]
这个按键即可退出编辑模式.
3.命令行模式
:执行保存退出
等操作,要退出vi返回到控制台,需要在命令行模式下输入命令,命令行模式是vi的出口.在一般命令模式中,输入[:?/]
三个中的任何一个按钮,就可以将光标移到最下面那一行.
一般命令模式常用命令:
光标移动一个字符
:h(←)
,j(下)
,k(↑)
,l(→)
.
命令 | 功能 |
---|
x与X | x为向后删除一个字符,X为向前删除一个字符 |
nx | n为数字,连续向后删除n个字符 |
dd | 删除光标所在行 |
ndd | 从光标位置向下连续删除n行 |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
yy | 复制光标所在行 |
nyy | 从光标位置向下连续复制n行 |
p与P | p为将已复制的数据在光标下一行粘贴,P则为贴在光标上一行 |
u | 撤销上一次命令 |
Ctrl+r 或. | 重做上一个操作 |
gg | 移动到文件第一行 |
G | 移动到文件的最后一行 |
nG | 移动到文件的第n行 |
n | n为数字,光标向下移动n行 |
0(数字0)或功能键[Home] | 移动到这一行最前面的字符处 |
$或功能键[End] | 移动到这一行的最后面字符 |
Ctrl+f | 屏幕向下移动一页,相当于[Page Down]键 |
Ctrl+b | 屏幕向上移动一页,相当于[Page up]键 |
n<space> | n表示数字,例如10,按下数字10后再按空格键,光标会向右移动这一行的10个字符 |
/str | 向光标之下查找一个名称为str的字符串 |
?str | 向光标之上查找一个名称为str的字符串 |
n | 重复上一个查找操作,若是上一次是执行?str,那么按下n则会向上继续查找名称为str的字符串 |
N | 反向进行前一个查找操作,若是上一次是执行?str,那么按下N则会向下查找名称为str的字符串 |
:n1,n2s/word1/word2/g | n1,n2为数字,在第n1行到第n2行之间寻找word1字符串,并将该字符串替换成word2 |
:1,$s/word1/word2/g | 从第一行到最后一行寻找word1字符串,并将该字符串替换成word2 |
:1,$s/word1/word2/gc | 从第一行到最后一行寻找word1字符串,并将该字符串替换成word2,且在替换前显示提示字符给用户确认是否需要替换 |
一般命令模式切换到编辑模式:
i与I | i为从目前光标所在处插入,I为在目前所在行的第一个非空格符处开始插入 |
---|
a与A | a为从目前光标所在的下一个字符处开始插入,A为在目前光标所在行的最后一个字符处开始插入 |
o与O | o为在目前光标所在处的下一行插入新的一行,O为在目前光标所在处的上一行插入新的一行 |
r与R | r只会替换光标所在的那一个字符一次,R会一直替换光标所在的文字,直到按下Esc键为止 |
[Esc] | 退出编辑模式,回到一般命令模式中 |
一般命令模式切换到命令行模式:
:w | 保存文件不退出(将编辑的数据写入硬盘文件中) |
---|
:w! | 若文件属性为只读 时,强制写入该文件 |
:q | 退出vi编辑器 |
:q! | 强制退出vi编辑器不保存 |
:wq | 保存退出 |
:wq! | 强制保存退出 |
ZZ | 保存退出 |
:w a.text | 将当前文件另存为b.text |
:set nu | 设置行号 |
:set nonu | 取消行号 |