贺胖娇的编程之旅......

操作系统(1)-基础和vim操作

2021.07.20

本系列来源于蓝桥:https://www.lanqiao.cn/courses/2610
同系列文已发布在CSDN

命令行中的shell通配符

字符 含义
* 匹配0或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[^list] 匹配 除list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2之间的任意单一字符
{string1, string2…} 匹配 string1 或 string2 (或更多)其一字符串
{c1..c2} 匹配 c1-c2 中全部字符 如{1..10}

示例

创建用户lilei

sudo adduser lilei

将lilei加入sudo组

sudo usermod -G sudo lilei

删除用户lilei

sudo deluser lilei –remove-home

问题

ls -l列出的每一行是什么意思?

例如:lrwxrwxrwx 1 root root 14 7月 6 17:12 anaconda3 -> /opt/anaconda3

示例 含义
lrwxrwxrwx 文件类型和权限
2 文件和权限
root 所有者
root 所属用户组
14 文件大小
7月 6 17:12 最后修改时间
anaconda3 -> /opt/anaconda3 文件名

vim查漏补缺

添加或修改

A在行末添加文本
a在光标之后插入文本

删除

x在正常(normal)模式下可删除光标所在的一个字符
dw可删除一个单词,从光标当前位置到下一个单词起始处,d2w删除两个
de从光标当前位置到单词结尾,d2e删除两个
d$从当前光标删除至行末

移动

2w向前移动2个单词
3e光标移动到第三个单词的末尾
0移动光标到行首

撤销

U撤销对整行的修改
CTRL+r重做,即撤销被撤销的命令

置入

p将最后一次删除的内容置入光标下一行

替换

r替换掉当前光标所在字符,例如rc代表把当前光标所谓位置字符替换为c
R连续替换多个字符
ce改变文本直到一个单词的末尾
c$替换当前光标到行末的内容
s/old/new/可替换当前光标所在行的第一个字符串
s/old/new/g替换光标坐在行匹配到的所有字符串
m,ns/old/new/g代表替换m到n行之间出现的每个匹配串
%s/old/new/g替换整个文件中出现的每个匹配串
%s/old/new/g找到整个文件中的每个匹配串并提示是否替换

定位及文件状态

ctrl+g显示当前编辑文件中当前光标所在行位置以及文件状态信息
行号+G可以直接跳转到该行(等同于:+行号)

搜索类命令

/后n查找下一个,N查找上一个
ctrl+o回到上一次查找的位置,可以重复按
%可以查找配对的括号:)]}

执行外部命令

:!+命令可以执行外部命令,例如:!ls

保存

w+文件名另存为某文件
v motion :w filename,选择性的保存文件,按v之后高亮选择文件,按:w filename保存到文件中

提取和合并文件

:r FILENAME在光标中插入FILENAME文件里的内容
:r !ls 将ls命令的结果插入当前光标之后 

复制粘贴

v光标移动选择文本,y复制文本,p粘贴文本

设置

:set ic, 设置查找时忽略大小写(ignore case),取消设置set noic
:set hls is, 匹配项高亮显示,取消设置 nohlsearch

Linux进程

fork

fork是一个系统调用,主要作用就会为当前进程创建一个新的进程,这个新的进程就是它的子进程,这个子进程除了父进程的返回值和pid以外其他的都一模一样,如进程的执行代码段,内存信息,文件描述,寄存器状态等等

exec

exec也是系统调用,作用是切换子进程中的执行程序,也就是替换其从父进程复制过来的代码段与数据段

ps -fxo user,ppid,pid,pgid,command

进程组与sessions

一般情况,进程组的 PGID 等同于进程组的第一个成员的 PID,并且这样的进程称为该进程组的领导者,也就是领导进程,进程一般通过使用 getpgrp() 系统调用来寻找其所在组的 PGID,领导进程可以先终结,此时进程组依然存在,并持有相同的PGID,直到进程组中最后一个进程终结

进程工作管理

& 命令后台运行
ctrl+z 使正在执行中的命令到后台运行

jobs命令详解

jobs命令查看被停止并被放置在后台的工作,一共四列

示例 含义
[1] 放置在后台的job的编号
+ +表示最近刚被放置到后台的job,-表示倒数第二个被放置到后台的job,其他不会有修饰
suspended 表示状态
tail -f TEST 命令

fg

将后台的工作拿到前台来
直接使用fg表示提取预设工作,fg %2表示提取job编号为2的任务

kill

kill -signal %jobnumber
kill -signal pid kill常用信号值

信号值 作用
-1 重新读取参数运行,类似于restart
-2 如同ctrl+c的操作退出
-9 强制终止该任务
-15 正常的方式终止该任务
发表评论