vi的工作模式
命令模式:控制屏幕光标的移动,字符,字或行的删除,移动复制某区域,按i进入插入模式,按/或:进入底行模式
插入模式:编辑文字,按ESC返回命令模式
底行模式:将文件保存或退出vi,也可以设计编辑环境,如查找字符串,列出行号等。通常底行模式也算是命令
vi的进入
vi+文件名
例:
[lin@localhost ~]$ vi a.txt
如果没有a.txt文件则自动在当前目录下生成该文件
进入vi后是命令模式,要输入i才可进入插入模式才能输入文字
编辑
按i可进行编辑,当屏幕下方显示–INSERT–时,表示已进入插入模式,可以编辑文字,若想回到命令模式,保存或退出按ESC键
vi的退出
在命令模式下,按一下冒号[:]进入底行模式
:w a.txt(将编辑的内容以指定文件名a.txt保存)
:wq(存盘并退出vi)
:q!(不存盘强制退出vi)
删除
x(每按一次,删除光标所在位置字符)
nx(例如4x,删除从光标所在位置字符开始并往后的4个字符)
X(每按一次,删除光标所在位置前一个字符)
nX(例如10X,删除光标所在位置前10个字符)
dd(删除光标所在行)
ndd(例如3dd,从光标所在行开始删除3行)
复制
yw(将光标所在处到字尾的字符复制到缓冲区中)
nyw(如4yw,复制4个字符到缓冲区)
yy(复制光标所在行到缓冲区)
nyy(如5yy,复制从光标所在行开始的5行到缓冲区)
p(将缓冲区的内容粘贴到光标所在)
其他操作
Ctrl+b 屏幕往后移动一页
Ctrl+f 屏幕往前移动一页
Ctrl+u 屏幕往后移动半页
Ctrl+d 屏幕往前移动半页
gg 移到文档开头
0或^ 移到光标所在行的行首
G 移到最后一行的行首
$ 移到光标所在行的行尾
w 光标跳到下个字的开头
e 光标跳到下个字的结尾
b 光标跳到上个字的开头
nl 如4l, 光标移到往后4个位置
替换
r 用于替换光标所在的字符(全程无需进入插入模式,也不会进入插入模式)
如果先输入[数字]再输入r,最后输入新的字符,表示从当前光标位置开始,替换[数字]个新字符
R 替换光标所到之处的字符,直到按ESC键为止
跳到指定行
Ctrl+g 列出光标所在行的行号
nG 如12G,移动光标到第12行的行首
底行模式下的命令
:set nu 命令模式下,表示列出行号
:set nonu 命令模式下,表示不列出行号
:n 命令模式下回车,表示光标会跳到该行
/关键字 表示你想查找的字符串,如果找到的内容不是你想要的,可以一直按n继续往后寻找
?关键字 表示你想查找的字符串,如果找到的内容不是你想要的,可以一直按n继续往前寻找
嵌入式编译器
GCC(GNU Complier Collection)是Linux下最常用的符合ANSI C标准的编译系统,能够编译C,C++, Object C等语言编写的程序。可以通过不同的前端模块支持不同的语言。
- GCC 可以为x86,ARM,MIPS等不同体系结构的硬件平台编译程序。
- GCC 可以编译C,C++, Pascal, Java等数十种高级语言。
- GCC 编译效率也非常高,一般要高出其它编译系统20%~30%
常用编译选项:
GCC编译过程可分为四个阶段:
1. 预处理
把c文件中include的头文件全部加载到c文件首部。
2. 编译
编译阶段是整个编译过程中最复杂的一个阶段。包括:
单词拼写错误-词法分析,检查关键字,标识符是否正确
语法检查-语法分析,检查语句的语法是否正确
语义检查-语义分析,检查语句的逻辑意义是否正确
3. 汇编
汇编阶段的任务是把汇编程序翻译成CPU可以识别的二进制文件,又叫目标文件。
4. 链接
由于程序往往由多个源文件组成,每个源文件都有对应的目标文件,另外还有库函数,所以必须把这些所有的东西链接在一起,才能最终被CPU运行。链接的任务就是把这些目标文件链接在一起,最终生成一个可以直接运行的文件,称为可执行文件。
例:
gcc -o a.exe a.c
./a.exe 文本编辑执行
用户管理
su
命令所在路径:/bin/su
执行权限:所有用户
功能描述:切换用户,比如,获得更高权限,执行管理员命令,切换为普通用户,限制权限和操作
注意:普通用户切换为管理员,需要密码,反之不需要
useradd
命令所在路径:/usr/sbin/useradd
执行权限:root用户
功能描述:切换用户,以获得更高权限,执行管理员的命令
常用选项:
-g:将该新用户增加到该用户组中,如果没有该选项,则根据用户名创建一个新组,并将该用户加入该组
例:
[root@localhost ~]# useradd -g student li
passwd
命令所在路径:/bin/passwd
执行权限:所有用户
功能描述:修改用户密码
usermod
命令所在路径:/usr/sbin/usermod
执行权限:root用户
功能描述:修改用户所属用户组
常用选项:
**-g:**将该用户修改到另外一个组中
**-G:**将该用户增加到其它多个附加组中
例:
[root@localhost ~]# usermod -g teacher li
userdel
命令所在路径:/usr/sbin/userdel
执行权限:root用户
功能描述:删除某普通用户
常用选项:
-f 强制删除用户账号,即使用户已经登录;也会删除用户的主目录
-r 用户主目录中的文件将被一同删除
例:
[root@localhost ~]# userdel -r li
groupadd
命令所在路径:/usr/sbin/groupadd
执行权限:root用户
功能描述:增加一个新用户组
例:
[root@localhost ~]# group name
管理员创建一个名为name的用户组
groupdel
命令所在路径:/usr/sbin/groupdel
执行权限:root用户
功能描述:删除某用户组
注意事项:
该组必须用户已空,才能删除
例:
[root@localhost ~]# groupdel name
管理员删除名为name的空用户组
chmod
命令所在路径:/bin/chmod
执行权限:所有用户
功能描述:修改某些用户对文件的访问权限
注意事项:
所有者和管理员可以修改
u+/-rwx修改用户权限
g+/-rwx修改用户组权限
o+/-rwx修改其他用户权限
常用选项:
-R 递归修改子目录和文件的所有者
例:
[ben@localhost app]$ chmod g+rwx a.txt
修改当前目录app下a.txt文件的权限:所属组可以读、写、执行
chgrp
命令所在路径:/usr/sbin/groupdel
执行权限:root用户
功能描述:修改文件关联的用户组
常用选项:
-R 递归修改子目录和文件的所属组
例:
[root@localhost ~]# chgrp student a.txt
修改当前目录下a.txt的所属用户组为student组
chown
命令所在路径:/bin/chown
执行权限:所有用户
功能描述:修改文件的所有者
注意事项:
所有者和管理员可以修改
常用选项:
-R 递归修改子目录和文件的所有者
例:
[zhou@localhost ben]$ chown ben a.txt
把a.txt文件的所有者修改为ben用户
关系图
权限管理
ugo基本权限
一个文件对应三种权限对象,分别文件的所有者user、所属组group和其他人other
每个权限对象对应三种权限,分别是读r、写w和执行x
权限数字对应关系
这么设计的目的是rwx任意组合不互相影响,结果不会重复。
默认的文件权限为 0644
默认的目录权限为 0755
之所以默认权限为这些,是因为umask的值
umask默认值为0022,则
目录默认权限为 0777 - 0022 = 0755
文件默认权限在此基础上减去执行权限变为 0644
umask命令只能临时生效,退出再登录又还原成默认的。如果想要永久有效,可以更改/etc/profile或~/.bash_profile(没有则添加,有则修改)
而r、w、x三种权限对于目录和文件的意义也不同,如下表
来源:CSDN
作者:啥也学不会的菜鸡
链接:https://blog.csdn.net/weixin_46182691/article/details/103987766