嵌入式文本编译器-vi,用户管理及权限管理

[亡魂溺海] 提交于 2020-01-16 06:24:20

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等语言编写的程序。可以通过不同的前端模块支持不同的语言。

  1. GCC 可以为x86,ARM,MIPS等不同体系结构的硬件平台编译程序。
  2. GCC 可以编译C,C++, Pascal, Java等数十种高级语言。
  3. 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三种权限对于目录和文件的意义也不同,如下表
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!