1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
grep -vc '/sbin/nologin' /etc/passwd ;\
grep -v '/sbin/nologin' /etc/passwd |cut -d: -f1
2、查出用户UID最大值的用户名、UID及shell类型
cut -d: -f1,3,7 /etc/passwd|sort -t: -k2 -nr|head -n1
3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
ss -nt | tr -s " " : |cut -d: -f6 | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" |sort -nr |uniq -d -c
4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
df | grep -Eo '[0-9]{1,3}\%' | sort -nr |head -n1
5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
echo '主机系统信息:'
echo '主机名:' `hostname`
echo 'ipv4地址:' `ifconfig ens33|grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'|head -n +1`
echo '操作系统版本:' `cat /etc/redhat-release`
echo '内核版本:' `uname -r`
echo 'cpu型号:' `lscpu |grep -Ei "\bmodel name"|tr -s " "|cut -d: -f2`
echo '内存大小:' `free -h |grep -i "\bmem"|tr -s " " |cut -d" " -f2`
echo '硬盘大小:' `lsblk |grep -i "disk" |tr -s " "|cut -d" " -f4`
6、20分钟内通关vimtutor(可参考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)
vim主要模式有:普通模式(命令模式),输入模式,末行模式(拓展命令模式),可视化模式
h(左)j(上)k(下)l(右)
命令模式–>输入模式
i insert,在光标前输入
I 在当前光标所在的行首输入
a append,在光标所在处后面输入
A 在当前光标所在的行尾输入
o 在当前光标所在的下方打开一个新行
O 在当钱光标所在的上方打开一个新行
i insert/ I:在光标前面 / 行首插入
a append/ A:在光标后面 / 行尾插入
o / O:在下 / 上一行行首插入
拓展命令模式基本命令
w 写(存)磁盘文件
wq 写入并退出
x 是写入并退出此文件,
X 是加密此文件。
q 退出
q! 不保存退出,使更改的内容丢失
r filename 该文件的内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
地址定界格式
# 具体第#行,例如2表示第2行
#,# 从左侧#表示起始行,右侧#表示结尾行
. 当前行
$ 最后一行
.,$-1 档期那行到倒数第二行
% 表示全文
地址j界定后跟一个编辑命令
d 删除
y 复制
p 粘贴
大写p 上一行粘贴
w file 将范围内的行另存至指定文件中
r file 在指定位置插入指定文件的所有内容
查找并替换
格式
/可以换成其他符号@、# 三个都换 更改目录的时候这样用,不然只能转译了,
s/要查找的内容/替换为的内容/修饰符
说明:
要查找的内容:可使用基末正则表达式
替换的内容:不能使用模式,但可以使用\1, \2, ...等向后引用符号,还可使用"&"引用前面查找时查找的整个内容
命令模式
命令模式:又称Normal模式,功能强大,只是此模式输入指令并在屏幕上显示,所以需要强大的记忆大量的快捷键才能更好的使用,此模式按键是看不见的
退出vim
ZZ 保存退出 大写
ZQ 不保存退出
光标跳转
字符键跳转:
h(左)j(下)k(上)l(右)
#command:一次向某个方向移动#个字符
单词键跳转:
w:下一个单词的词首
e:当前或下一个单词的词尾
b:当前或前一个单词的词首
#command:由#指定一次跳转的单词数
当前页跳转:
H:当前屏幕的第一行
M:当前屏幕的中间行
L:当前屏幕的最下面一行
zt:当前行移动到当前屏幕的顶端(指移动屏幕,不更改内容)
zb:当前行移动到当前屏幕的底端(指移动屏幕,不更改内容)
行首行尾跳转
^:当前行非空白行的行首
0(数字0):真正的行首空格也算
$:当前行非空白行的行尾
行间移动
#G 或者阔转命令模式下
:# 跳转至第#行
G 最后一行
1G,gg 第一行
句间移动 有一个 . 空格 隔开
) 下一句
( 上一句
段落间移动 有空行
} 下一段
{ 上一段
命令模式翻屏操作
ctrl+f 向文件尾部翻一屏,相当于pagedown
ctrl+b 向文件首部翻一屏,相当于pageup
ctrl+d 向文件尾部翻半屏
ctrl+u 向文件首部翻半屏
字符编辑
x 删除光标处的字符,准确的说是剪切
#x 光标处起始处器的#个字符
xp 交换光标处的字符和器后面字符的位置
~ 转换大小写,大写转小写小写转大写,
J 删除当前行后的换行符 (在光标处,按J(大写j),把下一行移到光标行的最后边)
替换命令(replace)
r 只替换光标所在处的一个字符
R 切换成REPALACE模式(在末行出现-- REPLACE --提示),按esc回到命令模式, 此时可以替换很多个
复制命令(delete)
d 删除命令可结合光标跳转字符,实现范围剔除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw
de
db
#COMMAND
dd 剪切光标所在行
#dd 多行删除
D 从当前光标位置一直删除到行尾,等同于d$
复制命令(yank)
y 复制,行为相似于d命令
y$
y0
ye
yw
yb
#COMMAND
yy 复制行
#y 复制多行
Y 复制整行
粘贴命令(paste) 大小写p
P 缓冲区存的如果为整行,则粘贴当前光标的下方,否则,则粘贴至当前光标所在处的后面
p 缓冲区存的如果为整行,则粘贴当前光标的上方,否则,则粘贴至当前光标所在处的前面
改变命令(change)
命令c删除后切换成插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
cc 删除当前行并输入新内容,相当于s
#cc
C 删除当前光标到行尾,并切换成插入模式,相当于c$
可视化模式
子末行有”–VISUAL–”指示,表示在可视化模式
允许选择的文本框
- v面向字符,–VISUAL–
- V面向整行,–VISUAL LINE–
- ctrl+v面向块,–VISUAL BLOCK–
可视化键可用于移动键结合使用
w))箭头等
突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
范例:在文件指定的行首插入# 加注释用很方便
1、先将光标移动到指定的第一行的行首
2、输入ctrl+v,进入可视化模式
3、向下移动光标,选中希望操做的每一行的第一个字符
4、输入大写字母 I 切换至插入模式
5、输入 #
6、按 ESC
范例:在指定的块位置插入相同的内容
1、光标定位为到要操作的地方
2、ctrl+v进入"可视化 块"模式,选取这一列操作多少行
3、shift+i(I)
4、输入要插入的内推
5、按 ESC
多文件模式
vim file1 file2 file3...
:next下一个
:prew前一个
:first第一个
:last最后一个
:wall保存所有
:qall不保存退出所有
:wqall保存退出所有
多窗口模式
多文件分割
vim -o|-O file1 file2...
-o:水平或上下分割
-O:垂直或左右分割(vim only)
在窗口键切换:ctrl+w,Arrow 就是ctrl+w松手后按方向键
单文件窗口分割
ctrl+w,s:split水平分割,上下分屏
ctrl+w,v:vertical,垂直分割,左右分配
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall退出
vim寄存器
有26个命名寄存器和一个无命名寄存器,常存放不同的剪切板的内容,可以在同一个主机的不同会话(终端窗口)键共享
寄存器的名称a,b,…,z,格式:”寄存器 放在数字和命令之间
范例:
3”tyy表示复制3行到t寄存器中,末行显示3 lines yanked into “t
“tp 表示将寄存器内容粘贴
未指定,将使用无命名寄存器
有10个数字寄存器,用0,1,…,9表示,0存放最近复制的内容,1存放最近删除内容。当新的文本变革和删除时,1转存到2,2转存到3,以此类推。数字寄存器,能在不同的会话间共享
标记和宏(macro)
ma 将当前位置标记为a,26个字母均可做标记,mb、mc等等
'a 跳转到啊标记的位置,实用的文档内标记方法,文档中跳跃编辑时很有用
qa 录制宏a,a为宏的名称,末行提示:recording @a
q 停止录制宏
@a 执行宏a
@@ 重新执行上次执行的宏
编辑二进制文件
#以二进制方式打开文件
vim -b binaryfile
#扩展命令模式下,利用xxd命令转译为可读的十六制文件
:%!xxd
#切换至插入模式下编辑,二进制文件
#切开扩展命令模式下,利用xxd命令转回二进制
:%!xxd -r
#保存退出
00 00 改为616263 ,退出再查看就是abc。
vimtutor是一个vim的专门练习用的工具,
不用担心损坏。
定制vim的工作特性(写脚本可会用)
配置文件
/etc/vimrc #全局
~/.vimrc #个人
行号
显示:set nu set number
取消显示:set nonu set nonumber
忽略字符的大小写
启用:set ic set ignorecase
不启用:set noic
自动对齐(缩进,用于写脚本的时候换行自动缩进,vim中不设置会自动到顶头开始)
启用:set ai set autoindeent
禁用:set noai
复制保留格式(粘贴的时候保持原格式)
set paste
set nopaste
显示tab^|和换行符和$显示
启用:set list
禁止:set nolist
高亮搜索
启用:set hlsearch
禁用:set nohlsearch 或nohl
语法高亮
启用:syntax on
禁用:syntax off
文件格式 用 file 文件名 查看
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写 set ff=dos/unix
tab用空格代替 不太的版本的tab键可能不一样,把这两个都设置上,
启用:set expandtab 默认为8个空格代替tab
禁用:set noexpandtab
简写:set et
tab用指定空格的个数代替
启用:set tabstop=# 指#个的空格代替tab
简写:set ts=4
设置文本宽度 主要是看显示器的大小的话,自动换行的长度,
set textwidth=65(vim only)
set wapmargin=15
设置光标所在行的标识线(显示的位置比较明显)
启用:
set cursorline 简写 set cur
禁用:set nocursorline
加密 vim的加密,进入文件输入密码,破解不了(忘了密码就没招了)
启用:set key=password
禁用:set key=
set all 可以看到所有的vim指令