文本编辑器,字处理软件
1,vi,vim(vi improved)
2,Emacs
vim ,linux 模式化的编程器:
1、输入模式
2、命令模式(编辑模式)
3、末行模式
vim如何打开文件:
vim FILE
vim +n FILE 让光标处在第n行行首
vim +/PATTERN FILE +/PATTERN 正则表达式过滤字符串本身
不支持两次打开同一编辑器,否则会报错。
vim如何关闭文件:
:wq 保存退出
:q! 不保存 退出
:q 没有输入内容,直接退出
a 转换输入模式,在当前光标处后面
A 当前光标行尾,转换输入模式
i 当前光标所在处转化到输入模式
I 行首转换到输入模式
o 开启一个新行,在当前光标下一行开启
O 在当前光标上一行开启一个新行
Esc键编辑模式转换到输入模式
: 编辑模式转换到末行模式
两下ESC
光标移动:h 左 j 下 k 上 l 右
w 跳转到下个单词词首
e 调到前一个单词词尾(本单词光标不在词尾,跳转到本单词词尾)
b 调到前一个单词词首(本单词光标不在词首,跳转到本单词词首)
^ 行首第一个非空白字符
0 行首第一个绝对字符
$ 行尾
行间跳转
G 10G 快速跳到第10行
G 调到文件底部
:n 末行模式下敲:n 快速跳到第n行
如何时间翻屏:
Ctrl+f 往尾部翻一屏
Ctrl+b 往首部翻一屏
Ctrl+d 往尾部翻半屏
Ctrl+u 往首部翻半屏
编辑操作:
x 删除当前光标所在处的字符 5x 删除当前光标之后5个字符
d 删除命令
dd 删除光标所在行
ndd 删除光标所在行一直向下的n行
dw
de
db
d^
dG
末行模式也能进行删除:
ADDR1,ADDR2d
:1,8d
:8d
. 表示当前行
$ 表示最后一行
.,$-1 当前行到倒数第二行
改写操作:
c
cc:删除光标所在行,并转换至输入模式
ncc: 删除光标所在行,并转换至输入模式
c$ 删除光标所在位置到行尾
c0 删除光标所在位置至行首
ncw
ncb
nce
复制操作:
y
yy
nyy
y$,y0
3yw 复制光标后三个字符
粘贴:
小写p 复制的行,当前光标所在行的下面粘贴
大写P 复制行,当前光标所在行的上面粘贴
撤销命令:
u (undo) 撤销上一次的操作 默认保存50次操作
U 撤销缓冲区里的操作
撤销上一次的撤消操作:
Ctrl+r
. 重复上一次的操作
r 把上一个字符替换成r后的字符
用法:a
r A
可视化模式
v小写 按字符选中
V大写 按行选中
如何一次打开多个文件:
vim FILE1 FILE2 FILE3
在多个文件之间跳转:
跳转到第一个 first
跳转到前一个 prev
跳转到下一个 next
跳转到最后一个 last
多一个文件实现分页查看
上下分页:
vim -o 文件名
窗口间切换:Ctrl w arrow
左右分页:
vim -O
对一个文件进行窗口拆分:
Ctrl+w,s 水平拆分
Ctrl+w,v 垂直拆分
设置vim的工作特征:
末行模式:set nu 显示行号
:set nonu 取消行号显示
定义缩进:
末行模式:set ai
:set noai
语法高亮(颜色显示)
:syntax on
:syntax off
全局配置:
/etc/vimrc
个人设置:
~/.vimrc
搜索具有特色特征的字符串:
/PATTERN
?PATTERN 从尾部到首部搜索
查找并替换:
在末行模式下使用s命令来实现
:ADDR1,ADDR2s/PATTERN/string/g全局替换(同一行中的相同内容)i
global:
ignore-case:
s/ab/AR/g
m,n
.,80
.,+20
%s@ftp://instructor.example.com/pub@http://192.168.0.254/yum@g 把ftp替换成hettp
%s@ @ @g 中间@是分隔符 g表示全局替换 %s表示从第一行到最后一行
vimtutor 这里有vim的教程 可以打开看看
进程 Process: 计算资源的分配单位
PID 内存结构的组成部分
cpu:32bit 64bit
cell
文本编辑器:
IO密集型:
cpu密集型:
进程状态:
运行态
就绪态
睡眠态:可中断睡眠;不可中断睡眠
停止态:由于外力的作用
僵死态:zombie
init,1
父process--》子process
进程状态之间怎么转换:
pstree 进程树
persona
security context
ps命令:
-e 显示所有进程(默认不加-e 只显示前台进程(前台是那些某个tty相关的进程;后台是跟tty无关))
-u [USER] 显示跟用户相关的进程
a 所有跟终端相关的进程
x 表示所有和终端无关的进程
-f 完全格式的列表
-F prints extra information
-axo pid,%cpu
ps aux
ps aus | grep sendmail
ps aus | wc -l
ps -eF
ps -ef
加了中括号的表示这是一个内核线程
ps ax中的STAT
S:处于睡眠 sleeping
s:会话的领导进程 session leader
<:high priority 高优先级
N:low priority 低优先级
l:多线程进程 multithread
+:前台进程组中的进程
D:不可中的的睡眠
S:可中断的睡眠
R:可以运行 running or runable
T:停止态stopped
Z:僵死态
pgrep:
-U 跟用户相关的特定进程
-G 跟组相关的特定进程
-v 显示匹配不到的进程 反向过滤
pidof 查找正在运行的进程的进程号
top
-d N 延迟
pstree
进程间通信:IPC
通过信号
通过共享内存
/proc
信号:
man 7 singal
kill -l
mywebserver /etc/mywebserver.conf
1 表示信号
SIGHUP
HUP
SIGINT
SIGKILL
SIGCONT
19SIGSTOP 让对方处于停止态
kill\killall
kill -singal PID
httpd
killall -signal command
kill 123 默认信号是15
kill -HUP httpd
pkill
kill 1
kill %1
如何改变系统的优先级:
动态优先级:内核会根据动态特征独立控制的优先级(0-99) 数字越小,优先级越高
静态优先级:(100-139)
nice值:-20-19
启动系统的nice值0,对应优先级是120
调整一个系统的nice值,有两种方式:、
1、nice -n N command 刚启动一个命令的时候
2、renice N PID 调整某个进程的PID
作业控制:
作业的运行方式:
前台运行
后台运行
前台--》后台:停止运行
Ctrl+z
将进程从前台送到后台(让送往后台并停止了的进程在后台继续运行):
bg[%jobnum]
后台送到前台:
fg[%jobnum]
作业号码:
fg %2
jobs 查看当前进程
COMMAND &
man nohup,tty
nohup COMMAND &
命令或脚本的退出状态:
0-255
正确:0
失败:1-255
1
2
7 被系统预留
$? 状态码
exit 8 定义退出的错误码是8
exit 0-255
表达式之间的逻辑关系:
!expression
expression1 && expression2
两者都为真 才真
所以判断第一个是假,一定是假
这就是短路操作
expression1 || expression2
真 或 假
!0=1
!1=0
fedora
for in {1..10}; do
useradd $user
grep "$user" |