下接第四部分 https://blog.csdn.net/hi332516_1/article/details/123880815?spm=1001.2014.3001.5501
3. 文件编辑器vim
3.1 vim的介绍与安装
3.1.1 vim的介绍
一般来说,Ubuntu系统自带的是vi,而红帽子自带的是vim,vim可以简单认为是vi的升级版本,vim相较于vi的兼容性更好,功能更强大,怎么判断自己电脑装的是vi还是vim,可以通过方向键去查看,vi不支持。
vim的官网:www.vim.org
3.1.2 vim的安装
如果电脑上没有vim,这是输入vim,电脑会报错说找不到,会显示安装此命令的步骤
apt updata:更新标准软资源
或者apt-get updata:更新标准软资源
这时候再通过apt install vim
3.2 vim配置文件的修改(添加行号,缩进等等)
3.2.1 配置文件的介绍
配合文件是计算机软件的底层设计或者初始值的设定,比如行号的设置,和tab的缩进,例如刚使用vim的时候,一进去是不显示行号的,这时候可以通过命令 set nu 去设置,只不过下一次再进入的时候,又需要重新设置,很麻烦,所以直接写入到配置文件,这样就不用每一次都设置。
3.2.2 配置文件的设置办法
用root权限去打开配置文件vimrc
vim /etc/vim/vimrc
在文件的末尾写入:
- set nu
- set tabstop=4 按tab缩进4个空格
- set softtabstop=4
- set shiftwidth=4
- set expandtab
- set smartindent 自动缩进
- 注意:上述修改一定要在root权限,并且尽量复制粘贴,不要手敲(容易出错),如果还想修改其他配置,还是按照此方法即可。
写入这几行之后,之前的文本里的内容就有可能自动的行号:
具体的步骤如下:
3.3 vim的三种模式:
- 命令模式
- 插入模式(编辑模式)
- 末行模式
3.3.1 模式切换示意图
3.3.2 命令模式切换到插入模式
- a 进入到当前光标后开始插入
- i 进入到当前光标位置并开始编辑
- A 进入到当前光标所在行的行末进行编辑
- I 进入到当前光标所在行的行头进行编辑
- o 进入到当前光标下一行进行编辑
- O 进入到当前光标上一行进行编辑
- 补充:x 删除当前位置的字符
- 注意:如果实在记不住,只用记住一个i,然后进去之后,通过方向键挪动即可。
3.3.3 命令模式切换到末行模式
- “:” 对文本的设置和保存工作
w: 只保存
wq:保存并退出
x:等同于wq
q: 只退出
q!:强制退出
w newfile:另存为
set nu:显示行号
set nonu:不显示行号
set hlsearch: 设置搜索结果高亮
set nohlsearch: 设置搜索结果不高亮 - “/”:对文本进行全文向下搜索字符串string 例如/QWE
- "? ":对文本进行全文向上搜索字符串string 例如? QWE
- 搜索到之后,可以使用命令:n: 接着重复上一次的搜索命令(使用在末行模式)
3.4 vi/vim常用命令
- n dd 删除从光标开始向下的n行
- dd 只删除当前行
- n yy 拷贝从光标开始向下的n行
- p 粘贴
- u 撤销上一次的操作
- Ctrl+r 恢复上一次的撤销操作
- r 替换当前字符
- shift+6 将光标移动到当前行的行头
- shift+4 将光标移动到当前行的行尾
- shift+g 将光标移动到整个文本的最后一行 //等同于G
- gg 将光标移动到整个文本的第一行
- n G 将光标移动到整个文本的第n行 //等同于n shift+g
- d n G 删除光标所在的第n行数据
- y n G 拷贝光标所在的第n行数据
- H 移动到当前屏幕的第一行
- M 移动到当前屏幕的中间行
- L 移动到当前屏幕的最后一行
- “.”:重复上一次操作(使用在命令模式)
补充:
- h:向左移动光标
- j :向下移动光标
- k:向上移动光标
- l:向右移动光标
- 上述补充只用于命令模式,但是键盘右下角方向键既可以命令模式使用,还可以插入模式使用。
4. 文件查看命令
vim可以打开文件,查看里面的数据,但是vim始终会存在修改数据的风险,所以这里介绍其他主要用于查看文件的命令
4.1 cat
4.1.1 用于查看文件数据
示例如下:
4.1.2 用于合并文件(cat A.txt B.txt > C.txt)
4.1.3 可以往文件中写入数据,Ctrl+d 结束输入(cat > D.txt)
注意:这个操作首先会将文件D.txt清空,然后从头开始输入数据(使用的时候注意小心源数据的丢失)
4.1.4 可以往文件的末尾输入数据,Ctrl+d 结束输入(cat >> D.txt)
注意:“>>”将光标移动到文件末尾,然后在进行写入数据(原先的数据不会丢失)
4.2 more
当文件的内容屏幕显示不完,则可以使用more这个命令,分屏显示
使用命令格式:more filename
示例如下:(more /etc/vim/vimrc)
这个时候,可以通过空格键(跳转的内容多)或者回车键(一点点的向下看)向下查看剩余数据。如果中途不想看,可以通过q直接退出。(红帽子系统通过方向键向下看)
4.3 less
使用方式和more差不多,只不过有一些细微的差别:
- less 显示的文件内容不会在终端界面上遗留
- less 显示的文件内容左下角没有百分比
- less 显示的文件内容可以通过方向键查看(more只能往下走)
4.4 head
显示文件的前n行内容,使用命令如下:head -n filename
如果这里不写-n,默认查看前10行
示例如下:
4.5 tail
4.5.1 显示文件的后n行内容,使用命令如下:tail -n filename
如果这里不写-n,默认查看后10行
示例如下:
4.5.2 用于查看日志文件
tail这个命令经常用于查看日志文件,因为日志文件一般来说只查看近期产生的日志数据,也就是说查看日志文件的末尾居多
通用命令:tail -f filename (-f follow 实时跟踪显示文件末尾信息)
重启一个终端,然后通过cat >> filename,实时输入信息,则左边tail -f filename打开的终端则会同步显示
5. 用户管理命令
5.1 用户基本信息的存储
存储位置 /etc/passwb
用户名 | 密码 | UID | GID | 描述性信息 | 主目录 | 默认的一个项 |
---|---|---|---|---|---|---|
root | x(有密码) | 用户id | 组id | 对用户的简单描述 | 一般就是家目录 | 默认命令解释 |
为了安全,所有用户密码单独加密后保存在一个文件中(/etc/shadow),这个文件只能root查看
用户名$ 加密算法id$ 密钥$ 密文
5.2 添加新用户
创建用户的时候,一般来说会创建一个同名的家目录,放在/home底下
红帽子会在创建新用户的时候,顺手将同名家目录创建好
Ubuntu不太一样,不会自动添加家目录,手动添加,或者想自动添加家目录,可以通过图形化界面添加新用户
命令格式:useradd user_name
5.3 修改密码
通过passwd这个命令,进行修改密码:passwd user_name
注意:如果想修改非常简单的密码(例如123456),系统不让通过,认为密码太过简单,则可以进入超级用户,强行修改简单密码
5.4 删除用户
使用命令userdel删除用户
- 1.首先保证用户没有登录
- 2.userdel删除用户的时候,家目录不会删除(家目录里的数据还有用)
- 3.如果想顺手将家目录删除,也可以,用userdel -r user_name命令
6.进程管理命令
6.1 什么是进程?
- 程序:是完成特定任务的一系列数据+指令的集合(钢琴琴谱,磁盘上,程序=数据+指令)
- 进程:正在执行的程序(根据琴谱弹奏的过程,运行在内存上)
进程(process):是计算机上一端程序的执行过程,是操作系统进行资源分配的基本单位,但是进程并不仅仅是局限于一段可执行的代码段,通常进程还需要包括其他资源,例如打开的文件,挂起的信息处理器的状态等等。简言之,进程就是正在执行的程序代码的实时显示结果。
操作系统需要高效的管理进程,所以为了便利控制进程的运行,将进程的管理和控制放到一个数据结构,这个结构体就是PCB进程控制块(process control block),每一个进程均有一个PCB,在创建进程时,PCB首先创建,伴随着进程运行的全过程,当进程结束时,PCB才消退。
PCB记录了操作系统所需的,用于描述进程的当前运行情况以及控制进程运行的全部信息。
6.2 进程在内存中如何管理?
- 执行程序时,先创建PCB,在加载进程实体
- 进程结束时,先释放进程实体,最后再释放PCB
- 僵死进程:进程实体释放了,但是PCB未能正常释放
- 补充面试原题:进程,线程,协程,这三个有什么区别?
6.3 进程查看命令
1. ps
默认显示当前终端有关的进程信息
-
-e 显示所有的信息(-A)
-
-f 现实更多的进程属性信息
-
-L 显示进程中的线程id
-
UID: 用户ID
-
PID: 进程ID
-
PPID:父进程ID
-
C:CPU占用率
-
STIME:进程运行时间
-
TTY:当前终端号
-
CMD:当前进程执行的命令
2. pstree
以树状图的形式显示进程之间的关系
3. kill
结束或者挂起一个进程
- -9 强制结束一个进程
- -STOP 挂起进程(挂起:主动将进程执行暂停,CPU则不再主动给这个进程分配资源)
3.1 前后台
- 将进程放到前台运行:路径+可执行文件名
- 将进程放到后台运行:路径+可执行文件名+&
在前台运行的进程,会一直占用资源,导致终端接收不到其他命令,这个时候只能另起一个终端
但是在后台运行的进程,不会占用终端,可以执行其他操作,另一个好处就是不会被Ctrl+c(误触)而终止掉。
- Ctrl+d 停止输入
- Ctrl+c 结束进程
- Ctrl+z 挂起进程
3.2 演示结束进程
4. pkill
用于结束一组同名的进程(CMD一样)
演示如下:
总结:
- kill PID //结束一个进程
- kill -9 PID //强制结束一个进程
- kill -STOP PID //挂起一个进程
- kill CMD //结束CMD相同一批进程
5.jobs
显示当前终端的任务,后台执行的或者挂起的任务
6. fg
将后台执行的任务挂起到前台
将后台运行的任务放到前台:
将挂起的进程放到前台:
7. bg
将挂起的进程唤醒到后台运行
8. top
用于查看系统资源的使用情况(动态变化时),类似于Windows上的任务管理器
- top命令执行后,按f进入到top的解释页面
- 前面带*的,说明已经显示
按f后,示例如下: