1、请总结描述用户和组管理类命令的使用方法并完成以下练习:

(1)、创建组distro,其GID为2019;

[root@centos83localdomain data]#groupadd -g 2019 distro
# 验证
[root@centos83localdomain data]#getent group distro
distro:x:2019:

(2)、创建用户mandriva, 其ID号为1005;基本组为distro;

[root@centos83localdomain data]#useradd -u 1005 -g distro mandriva
# 验证
[root@centos83localdomain data]#getent passwd mandriva
mandriva:x:1005:2019::/home/mandriva:/bin/bash

(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;

[root@centos83localdomain data]#useradd -u 1100 -d /home/linux
# 验证
[root@centos83localdomain data]#getent passwd mageia
mageia:x:1100:1100::/home/linux:/bin/bash

(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期

[root@centos83localdomain ~]#echo "mageedu" | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.

(5)、删除mandriva,但保留其家目录;

[root@centos83localdomain ~]#getent passwd mandriva
mandriva:x:1005:2019::/home/mandriva:/bin/bash
[root@centos83localdomain ~]#userdel mandriva
# 验证
[root@centos83localdomain ~]#getent passwd mandriva
[root@centos83localdomain ~]#ll /home
total 8
drwx------. 15 cc1    cc1    4096 Apr  2 20:24 cc1
drwx------. 15 cc2    cc2    4096 Apr  3 11:31 cc2
drwx------.  3 mageia mageia   78 Apr 10 10:13 linux
drwx------.  3   1005 distro   78 Apr 10 07:10 mandriva

(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

[root@centos83localdomain ~]#groupadd peguin
[root@centos83localdomain ~]#useradd -u 2002 -g distro -G peguin slackware
# 验证
[root@centos83localdomain ~]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin

(7)、修改slackware的默认shell为/bin/tcsh;

[root@centos83localdomain ~]#usermod -s /bin/tcsh slackware
# 验证
[root@centos83localdomain ~]#getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh
[root@centos83localdomain ~]#

(8)、为用户slackware新增附加组admins,并设置不可登陆。

# 设置slackware不可登陆
[root@centos83localdomain ~]#chage -E 0 slackware
# 验证用户不可登陆
[root@centos83localdomain ~]#su -slackware
su: failed to execute lackware: No such file or directory
# 新增附加组
[root@centos83localdomain ~]#groupadd admins
[root@centos83localdomain data]#usermod -a -G  admins slackware
# 验证附加组
[root@centos83localdomain data]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)

2、创建用户user1、user2、user3。在/data/下创建目录test

(1)、目录/data/test属主、属组为user1

# 创建user1..3  三个用户及/data/test目录
[root@centos83localdomain data]#useradd user1
[root@centos83localdomain data]#useradd user2
[root@centos83localdomain data]#useradd user3
[root@centos83localdomain data]#mkdir /data/test
# 验证
[root@centos83localdomain data]#tail -3 /etc/passwd
user1:x:2003:2003::/home/user1:/bin/bash
user2:x:2004:2004::/home/user2:/bin/bash
user3:x:2005:2005::/home/user3:/bin/bash
# 修改/data/test的属主为user1 属组为user1
[root@centos83localdomain data]#ls -ld /data/test/
drwxr-xr-x. 2 root root 6 Apr 10 14:32 /data/test/
[root@centos83localdomain data]#chown user1:user1 /data/test/
[root@centos83localdomain data]#ls -ld /data/test/
drwxr-xr-x. 2 user1 user1 6 Apr 10 14:32 /data/test/

(2)、在目录属主、属组不变的情况下,user2对文件有读写权限

# user2添加附加组user1
[root@centos83localdomain data]#usermod -a -G user1 user2
[root@centos83localdomain data]#id user2
uid=2004(user2) gid=2004(user2) groups=2004(user2),2003(user1)# 给/data/test目录增加w权限
[root@centos83localdomain data]#chmod g+w /data/test/
[root@centos83localdomain ~]#ls -ld /data/test/
drwxrwxr-x. 2 user1 user1 6 Apr 10 14:32 /data/test/# 给user2创建密码并切换用户user2
[root@centos83localdomain data]#passwd user2
Changing password for user user2.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@centos83localdomain data]#su - user2# 验证
[user2@centos83localdomain ~]$cd /data/test/
[user2@centos83localdomain test]$touch testa.txt
[user2@centos83localdomain test]$echo "user2 info">>testa.txt
[user2@centos83localdomain test]$ll /data/test/
total 4
-rw-rw-r--. 1 user2 user2 11 Apr 10 14:47 testa.txt

(3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除a1.sh,a2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh

# user1进入到/data/test目录创建4个文件,目录设置sticky
[user1@centos83localdomain test]$ls -ld .
drwxrwxr-x. 2 user1 user1 6 Apr 10 15:20 .
[user1@centos83localdomain test]$touch a{1..4}.sh
[user1@centos83localdomain test]$chmod o+t /data/test
[user1@centos83localdomain test]$ll -ld .
drwxrwxr-t. 2 user1 user1 58 Apr 10 15:22 .
[user1@centos83localdomain test]$ll
total 0
-rw-rw-r--. 1 user1 user1 0 Apr 10 15:22 a1.sh
-rw-rw-r--. 1 user1 user1 0 Apr 10 15:22 a2.sh
-rw-rw-r--. 1 user1 user1 0 Apr 10 15:22 a3.sh
-rw-rw-r--. 1 user1 user1 0 Apr 10 15:22 a4.sh# 此时user2无法删除目录内文件
[user2@centos83localdomain test]$ls
a1.sh  a2.sh  a3.sh  a4.sh
[user2@centos83localdomain test]$rm a3.sh
rm: cannot remove 'a3.sh': Operation not permitted# root用户对a1和a2文件设定特定属性i
[root@centos83localdomain test]#chattr +i a1.sh a2.sh
[root@centos83localdomain test]#lsattr *
----i--------------- a1.sh
----i--------------- a2.sh
-------------------- a3.sh
-------------------- a4.sh# 此时root和user1无法删除a1和a2
[root@centos83localdomain test]#rm -fr a1.sh
rm: cannot remove 'a1.sh': Operation not permitted
[user1@centos83localdomain test]$rm -fr a1.sh
rm: cannot remove 'a1.sh': Operation not permitted

(4)、user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件

# 设置/data/test的属主权限为0
[root@centos83localdomain test]#chmod 044 /data/test/
[root@centos83localdomain test]#ll -d /data/test/
d---r--r--+ 2 user1 user1 58 Apr 10 15:22 /data/test/# 验证
[user1@centos83localdomain ~]$cd /data/test/
-bash: cd: /data/test/: Permission denied
[user1@centos83localdomain ~]$ls /data/test/
ls: cannot open directory '/data/test/': Permission denied
[user1@centos83localdomain ~]$touch /data/test/a
touch: cannot touch '/data/test/a': Permission denied
[user1@centos83localdomain ~]$echo "haha" >> /data/test/a1.sh
-bash: /data/test/a1.sh: Permission denied

(5)、清理/data/test目录及其下所有文件的acl权限

[root@centos83localdomain test]#lsattr /data/test/*
----i--------------- /data/test/a1.sh
----i--------------- /data/test/a2.sh
-------------------- /data/test/a3.sh
-------------------- /data/test/a4.sh
[root@centos83localdomain test]#chattr -i /data/test/*
[root@centos83localdomain test]#lsattr /data/test/*
-------------------- /data/test/a1.sh
-------------------- /data/test/a2.sh
-------------------- /data/test/a3.sh
-------------------- /data/test/a4.sh

3、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来

[root@centos83localdomain test]#cat /etc/passwd | grep "/sbin/nologin" | wc -l
43[root@centos83localdomain test]#cat /etc/passwd | grep "/sbin/nologin" | cut -d: -f1
bin
daemon
adm
lp
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
geoclue
rtkit
pipewire
pulse
libstoragemgmt
qemu
usbmuxd
unbound
gluster
rpc
chrony
avahi
setroubleshoot
saslauth
dnsmasq
radvd
sssd
cockpit-ws
cockpit-wsinstance
flatpak
colord
rpcuser
gdm
clevis
gnome-initial-setup
sshd
rngd
tcpdump
postfix

4、查出用户UID最大值的用户名、UID及shell类型

[root@centos83localdomain test]#cat /etc/passwd | cut -d: -f1,3,7 | sort -t: -k2 -rn | head -1

5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

[root@centos83localdomain test]#ss -nt | grep "^ESTAB" | tr -s ' ' : | cut -d: -f6 | sort | uniq -c | sort -nr3 10.0.0.1541 10.0.0.1551 10.0.0.1511 10.0.0.1

6、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值

[root@centos83localdomain test]#vim dish.sh
[root@centos83localdomain test]#bash disk.sh
21# 脚本内容:
[root@centos83localdomain test]#cat disk.sh
#!/bin/bash
#
#**********************************
#Author:                laozhang
#Date:                  2022-04-10
#FileName:              dish.sh
#Description:   The test script
#**********************************
disk=`df | grep "^/dev/sd" |tr -s " " %|cut -d% -f5|sort -n|tail -1
`
echo $disk# 验证结果
[root@centos83localdomain test]#df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        947M     0  947M   0% /dev
tmpfs           976M     0  976M   0% /dev/shm
tmpfs           976M  9.4M  966M   1% /run
tmpfs           976M     0  976M   0% /sys/fs/cgroup
/dev/sda2       100G  6.0G   94G   6% /
/dev/sda1       976M  183M  727M  21% /boot
/dev/sda5        50G  390M   50G   1% /data
tmpfs           196M  1.2M  194M   1% /run/user/42
tmpfs           196M     0  196M   0% /run/user/0

7、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

root@centos83localdomain test]#vim systeminfo.sh
[root@centos83localdomain test]#bash systeminfo.sh
-----------------Host system info----------------
HOSTNAME:  centos83localdomain
IPADDR:    10.0.0.150
OSVERSION: CentOS Linux release 8.3.2011
KERNEL:    4.18.0-240.el8.x86_64
CPU:       Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
MEMORY:    1.9Gi
DISK:      200G# 脚本内容:
[root@centos83localdomain test]#cat systeminfo.sh
#!/bin/bash
#
#**********************************
#Author:                laozhang
#Date:                  2022-04-10
#FileName:              systeminfo.sh
#Description:   The test script
#**********************************
COLOR="\033[1;31m"
END="\033[0m"
echo -e "\033[1;32m-----------------Host system info----------------\033[1;0m"
echo -e "HOSTNAME:  $COLOR`hostname`$END"
echo -e "IPADDR:    $COLOR`ifconfig | egrep -o '([0-9]{1,3}.){3}[0-9]{1,3}'|head -1`$END"
echo -e "OSVERSION: $COLOR`cat /etc/redhat-release`$END"
echo -e "KERNEL:    $COLOR`uname -r`$END"
echo -e "CPU:      $COLOR`lscpu|grep 'Model name'|tr -s ' '|cut -d: -f2`$END"
echo -e "MEMORY:    $COLOR`free -h|grep Mem|tr -s ' '|cut -d" " -f2`$END"
echo -e "DISK:      $COLOR`lsblk|grep ^sd|tr -s ' ' |cut -d' ' -f4|head -1`$END"

8、20分钟内通关vimtutor(可参考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)li

学习笔记如下:

8 文本编辑vim

8.1 vi和vim

Linux中经常编辑的文本文件是由ASCII、Unicode或其他编码的纯文字文件

文本编辑种类:

  • 行编辑器: sed
  • 全屏编辑器:nano(字符工具),gedit(简单图形化工具), vi、vim

vi:Visual editor,文本编辑器

vim :Vi Improved

其他相关编辑器:gvim 一个vim编辑器的图形版本

vim小抄

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-90n5hXO4-1649580509650)(https://s2.loli.net/2022/04/04/HV4Zb3nxsRJTOB1.png)]

8.2 使用vim

8.2.1 vim格式

vim [OPTION]... FILE...
  • +# 打开文件后,让光标处于第#行的行首,+默认行尾
  • +/PATTERN 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
  • –b file 二进制方式打开文件
  • –d file1 file2… 比较多个文件
  • -m file 只读打开文件
  • -e file 直接进入ex模式,相当于执行ex file
  • -y file Easy mode (like “evim”, modeless),直接可以操作文件,ctrl+o:wq|q! 保存和不保存退出

说明:

  • 如果该文件存在,文件被打开并显示内容
  • 如果文件不存在,当编辑后第一次存盘时创建他

8.2.2 三种主要模式和转换

三种模式:

  • 命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
  • 插入(Insert)或编辑模式:修改文本
  • 扩展命令(extended command )模式:保存,退出等

模式转换:

  • 命令模式 --> 插入模式

    • i insert, 在光标所在处输入
    • I 在当前光标所在行的行首输入
    • a append, 在光标所在处后面输入
    • A 在当前光标所在行的行尾输入
    • o 在当前光标所在行的下方打开一个新行
    • O 在当前光标所在行的上方打开一个新行
  • 插入模式 ----ESC----> 命令模式
  • 命令模式 ----- : —> 扩展命令模式
  • 扩展命令模式 ----ESC,enter----> 命令模式

范例:插入颜色字符

1 切换插入模式
2 按ctrl+v+[ 三个键,显示^[
3 后续输入颜色信息,如:^[[32mhello^[[0m
4 切换至扩展命令模式,保存退出
5 cat 文件可以看到下面显示

8.3 扩展命令模式

8.3.1 扩展命令模式的基本命令

按“:”进入Ex模式

创建一个命令提示符: 处于底部的屏幕左侧

常用命令:

w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
X 为文件简单加密
q 退出
q! 不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出

8.3.2 地址定界

格式:

:start_pos,end_pos CMD

地址定界格式

# #具体第#行,例如2表示第2行
#,# #从左侧#表示起始行,到右侧#表示结尾行
#,+# #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
.  #当前行
$ #最后一行
.,$-1 #当前行到倒数第二行
% #全文, 相当于1,$/pattern/  #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/   #从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$   #向下找到第一个匹配patttern的行到整个文件的结尾的所有行

地址定界后跟一个编辑命令

d #删除
y #复制
w file #将范围内的行另存至指定文件中
r file #在指定位置插入指定文件中的所有内容

8.3.3 查找并替换

格式

s/要查找的内容/替换为的内容/修饰符

说明:

  • 要查找的内容:可使用基本正则表达式模式
  • 替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容

修饰符:

  • i #忽略大小写
  • g #全局替换,默认情况下,每一行只替换第一次出现
  • gc #全局替换,每次替换前询问

查找替换中的分隔符/可替换为其它字符,如:#,@

范例:

s@/etc@/var@g
s#/boot#/#i

8.3.4 定制vim的工作特性

扩展命令模式的配置只是对当前vim进程有效,可将配置存放在文件中持久保存

配置文件:

  • /etc/vimrc #全局
  • ~/.vimrc #个人

行号

  • 显示:set number,简写 set nu
  • 取消显示:set nonumber, 简写 set nonu

忽略字符的大小写

  • 启用:set ignorecase,简写 set ic
  • 不忽略:set noic

自动缩进

  • 启用:set autoindent,简写 set ai
  • 禁用:set noai

复制保留格式

  • 启用:set paste
  • 禁用:set nopaste

显示Tab ^I和换行符 和$显示

  • 启用:set list
  • 禁用:set nolist

高亮搜索

  • 启用:set hlsearch
  • 禁用:set nohlsearch 简写:nohl

语法高亮

  • 启用:syntax on
  • 禁用:syntax off

文件格式

  • 启用windows格式:set fileformat=dos
  • 启用unix格式:set fileformat=unix
    • 简写 set ff=dos|unix

tab用空格代替

  • 启用:set expandtab 默认为8个空格代替Tab
  • 禁用:set noexpandtab
    • 简写:set et

Tab用指定空格的个数代替

  • 启用:set tabstop=# 指定#个空格代替Tab
  • 简写:set ts=4

设置缩进宽度

  • #向右缩进 命令模式>>
  • #向左缩进 命令模式<<
  • #设置缩进为4个字符
    • set shiftwidth=4

设置文本宽度

  • set textwidth=65 (vim only) #从左向右计数
  • set wrapmargin=15 #从右到左计数

设置光标所在行的标识线

  • 启用:set cursorline,简写 set cul
  • 禁用:set nocursorline

加密

  • 启用: set key=password
  • 禁用: set key=

了解更多

  • :help option-list
  • :set or :set all

8.4 命令模式

命令你模式功能强大,但按键时不在屏幕显示

8.4.1 退出vim

扩展命令模式:

  • - :q 退出
    - :q! 强制退出,丢弃做出的修改
    - :wq 保存退出
    - :x 保存退出
    

命令模式:

  • - ZZ 保存退出
    - ZQ 不保存退出
    

8.4.2 光标跳转

字符间跳转:

h: 左
l: 右
j: 下
k: 上
#COMMAND:跳转由#指定的个数的字符

单词间跳转:

w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数

当前页跳转:

H:页首
M:页中间行
L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端

行首行尾跳转:

^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾

行间移动:

#G、 扩展命令模式下 :# 跳转至由#指定行
G:最后一行
1G, gg: 第一行

句间移动:

):下一句
(:上一句

段落间移动:

}:下一段
{:上一段

命令模式翻屏操作:

Ctrl+f 向文件尾部翻一屏,相当于Pagedown
Ctrl+b 向文件首部翻一屏,相当于Pageup
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏

8.4.3 字符编辑

字符编辑:

x: 剪切光标处的字符
#x: 剪切光标处起始的#个字符
xp: 交换光标所在处的字符及其后面字符的位置
~:转换大小写
J:删除当前行后的换行符

8.4.4 替换replace

替换命令(r, replace)

r: 替换光标所在处的字符
R:切换成REPLACE模式,esc回到命令模式

8.4.5 删除delete

删除命令:

d:  删除命令,可结合光标跳转字符,实现范围删除
d$: 删除到行尾
d^: 删除到非空行首
d0: 删除到行首
dw:
de:
db:
#COMMANDdd: 删除光标所在的行
#dd:多行删除
D:从当前光标位置一直删除到行尾,等同于d$

8.4.6 复制yank

y: 复制,行为相似于d命令
y$
y0
y^
ye
yw
yb
#COMMANDyy:复制行
#yy: 复制多行
Y: 复制整行

8.4.7 粘贴paste

p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴
至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴
至当前光标所在处的前面

8.4.8 改变change

c: 修改后切换成插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
cc:删除当前行并输入新内容,相当于S
#cc
C:删除当前光标到行尾,并切换成插入模式

命令模式操作文本总结:

8.4.9 查找

/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向

8.4.10 撤销更改

u撤销最近的更改
#u撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
按Ctrl - r重做最后的“撤消”更改
. 重复前一个操作
n.重复前一个操作n次

8.4.11 高级用法

<start position><command><end position>
  • Command:

    • y 复制
    • d 删除
    • gU 变大写
    • gu 变小写

范例:0y$命令

0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符

范例:粘贴“wang”100次

100iwang [ESC]

di" 光标在”“之间,则删除”“之间的内容

yi( 光标在()之间,则复制()之间的内容

vi[ 光标在[]之间,则选中[]之间的内容

dtx 删除字符直到遇见光标之后的第一个 x 字符

ytx 复制字符直到遇见光标之后的第一个 x 字符

8.5 可视化模式

允许选择的文本块

  • v 面向字符

  • V 面向行

  • ctrl-v 面向块

可视化键可用于与移动键结合使用:

  • -w ) } 箭头等

突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

范例:在文件行首插入#

光标在文件起始位置
输入ctrl + v 进入可视化模式
输入 G 跳到最后一行,选中第一列
输入 I 切换至插入模式
输入 #
按 ESC 键

8.6 多文件模式

vim FILE1 FILE2 FILE3 ...
  • :next 下一个
  • :prev 前一个
  • :first 第一个
  • :last 最后一个
  • :wall 保存所有
  • :qall 退出所有
  • :wqall保存所有退出

8.7 多窗口模式

8.7.1 多文件分割

vim -o|-O FILE1 FILE2 ...
  • -o: 水平分割
  • -O: 垂直分割
  • 在窗口间切换: Ctrl+w, 方向上|下

8.7.2 单文件窗口分割

Ctrl+w,s: split, 水平分割

Ctrl+w,v: vertical, 垂直分割

ctrl+w,q:取消相邻窗口

ctrl+w,o:取消全部窗口

:wqall 退出

8.8 vim的寄存器

有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享

寄存器名称a,b,…,z,格式:“寄存器 放在数字和命令之间

  • 如:

  • 3"tyy 表示复制3行到t寄存器中
    "tp 表示将t寄存器内容粘贴
    

未指定,将使用无命名寄存器

有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容

当新的文本变更和删除时,1转存到2,2转存到3,以此类推

数字寄存器不能在不同会话间共享

8.9 标记和宏

ma 将当前位置标记为a,26个字母均可做标记, mb 、 mc 等等;
'a 跳转到a标记的位置; 实用的文档内标记方法,文档中跳跃编辑时很有用
qa 录制宏 a,a为宏的名称
q 停止录制宏,
@a 执行宏 a
@@ 重新执行上次执行的宏

8.10 编辑二进制文件

以二进制方式打开文件

vim –b binaryfile

扩展命令模式下,利用xxd命令转换为可读的十六进制

  • :%!xxd

编辑二进制文件

扩展命令模式下,利用xxd命令转换回二进制

  • :%!xxd –r

保存退出

马哥教育SRE笔记【作业】week02相关推荐

  1. 马哥教育SRE笔记【作业】week05

    week05 1.简述DNS服务器原理,并搭建主-辅服务器 (1)DNS原理 客户机向本地DNS服务器发起DNS查询(递归查询),请求某域名的IP地址 本地DNS服务器向其他DNS服务器发起迭代查询 ...

  2. python训练营免费领取-马哥教育官网-专业Linux培训班,Python培训机构

    [课程第一天] [课程第二天] [课程第三天] [课程第四天] [课程第五天] [课程第六天] [课程第七天] 三.学习的具体平台和方式 1.学习的平台 以录播视频和文字版本为主,QQ社群资深工程师答 ...

  3. 马哥教育linux面授班37期第一周博客

    马哥教育linux面授班37期第一周博客   2019年5月5号晚,我怀着忐忑和激动的心情坐上了开往了北京的列车,我忐忑自己此行的目的地,马哥教育Linux第37期北京面授班,是因为我接下来五个月的时 ...

  4. linux本地agent执行脚本_github 4.4K星|马哥教育企业教练团队研发一款轻量级、无Agent自动化运维平台...

    马哥教育企业教练团队研发了一款自动化运维平台系统-Spug,上线后广受中小运维爱好者喜爱,目前github4.4k星,已经成为自动化热门项目.2020年了,运维不会搞运维自动化,都不好意思说自己做运维 ...

  5. 《马哥教育协办GIAC、GOPS顶级技术峰会完美落幕》

    GIAC.GOPS大会完美落幕 除了你.我.他,还有马哥教育陪你走过 马哥教育协办过多次全球大会,此次GIAC.GOPS全球互联网大会完美落幕,作为协办方我们也是很荣幸!马哥教育的创始人马哥带着马帮学 ...

  6. 写在马哥教育第八期开始之前

    "你不能剥夺别人思考的权力"!记得读研期间一位导师在谈到"传道.授业.解惑"时特地强调.当时身为学生,并未能完全.真切地理解这位导师表述的真正意图.而当自己独立 ...

  7. python入门到精通需要学多久-从Python入门到精通,你只需要在马哥教育待四个月...

    如果你想选择一种语言来入门编程,那么Python绝对是首选! Python非常接近自然语言,精简了很多不必要的分号和括号,非常容易阅读理解.编程简单直接,更适合初学编程者,让其专注于编程逻辑,而不是困 ...

  8. 济南python工资一般多少钱-马哥教育官网-专业Linux培训班,Python培训机构

    主角:李学员岗位:K1实施工程师地区:济南 薪资:8.5K [注:马哥教育学员喜讯旨在通过一小部分学员自主的.真实的分享,将学习方法,学习经验,学习成果分享给正在或即将进入马哥教育学习课程的小伙伴们! ...

  9. python类型转换-马哥教育官网-专业Linux培训班,Python培训机构

    今天马哥教育要跟大家分享的文章是类型转换是什么?我们要跟大家探讨的是Python课程中类型转换的相关内容,比如将小数转化为小数如何表达?整数转化为字符如何表达? Python的几种最基本的数据类型,我 ...

  10. 自动化专业学python有用吗-马哥教育官网-专业Linux培训班,Python培训机构

    今天小编要来说一下Python自动化的学习思路, 对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢? 简单的说, 做测试做的好,会了接口,会了 ...

最新文章

  1. img 服务器上的图片不显示图片,img显示服务器图片不显示
  2. AI基础:矩阵求导,你一定要收藏
  3. lvs dr模式安装
  4. mysql多表内连接查询
  5. 实时数据产品实践——美团大交通战场沙盘
  6. 用Java编写的密码翻译问题
  7. ZF环境要求及如何配置
  8. Activiti Workflow HelloWorld 示例与测试环境搭建
  9. 深度学习 --- 优化入门五(Batch Normalization(批量归一化)二)
  10. python获取cpu信息_使用python获取CPU和内存信息的思路与实现(linux系统)
  11. Python搭建简易HTTP服务(3.x版本和2.x版本的)
  12. java 抓取搜狗微信_大虾们,求帮助……用httpclient 进行获取微信搜狗公众号文章问题...
  13. Unity-URP-基于模板的延迟渲染
  14. OneNote2016安装代码高亮插件
  15. 定时器concurrent属性简单介绍
  16. 爬虫实战—拿下最全租房数据 | 附源码
  17. 指令集 x 数澜科技丨加速政企数字化转型,打造DT领域独角兽企业联盟
  18. 【学了.Net能做什么开发】
  19. STM32--STM32F051 IAP的实现
  20. css专栏 01.css简介 02.css注释及语法结构

热门文章

  1. USF MSDS501 计算数据科学中文讲义 2.7 如何阅读代码
  2. 服务器被攻击的常见手段以及解决方法
  3. android 上传图片视频教程,秒拍怎么上传长视频 秒拍APP拍长视频并上传图文教程...
  4. 自然语言处理-聊天机器人
  5. unity 安卓端输出日志神器--Reporter插件
  6. vss备份,使用批处理,每次只能备份当前打开的项目,怎么才能备份所有的项目呢...
  7. 大一总结与突然的感悟
  8. SEO基础知识简介(一)
  9. win2012服务器 注册表,第十一章 Windows Server 2012 R2 注册表域注册表编辑器 ---学习笔记...
  10. php站长统计,如何巧妙去除隐藏“站长统计”文字链接?