linux基础(三)

  • Post author:
  • Post category:linux




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指令



版权声明:本文为m0_46543238原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。