Day4
vim
vim filename
vim
命令模式
d+enter 删除光标所在行以及下一行
dd 删除光标所在行
4dd 从光标所在行开始一共删除四行
dG 删除光标所在行,以及到文档尾
dgg 删除光标所在行,以及到文档首
s 替换,替换光标所在字符(删除光标所在字符)
S 替换,替换光标所在行 ----进入插入模式
G 跳转到文档末行的行首
gg 跳转到文档首行的行首
5G 跳转到文档第五行
^ 光标跳转到行首 $ 光标跳转到行尾\ (在英文模式下按shift键)
yy 复制光标所在行 4yy 4,8yy
p 粘贴在光标下一行
cc 剪切光标所在行
u向左撤销
:q! 退出编辑界面
ctrl+r 向右撤销
命令模式--进入插入模式
s 删除光标所在字符进入插入模式
S 删除光标所在行进入插入模式
a 插入到光标后
A 插入到光标所在行的行尾
i 插入到光标前
I 插入到光标所在行的行首
o 插入到光标所在下一行
O 插入到光标所在行上一行
命令模式--末行模式(在英文模式下编辑,只识别英文符号)
:w 写入保存
:w FILENANME (写入某文件)
:q 退出
:q! 强制退出
:wq! 执行保存退出
:set nu 显示行号
:set nonu 取消行号
:s /要替换的字符/替换成的字符/ eg: :s /root/000/ 即把光标所在行的root字符替换为000字符
:%s /root/000/ 匹配所有行中第一次出现的root关键字,替换为000
:% /root/000/g 匹配所有行中的root关键字,替换为000
:12,18 co 40 将十二到十八行的内容复制到40行
:r FILENAME 将指定文件内容读取到光标所在下一行
:!cat /etc/passwd 将cat /etc/passwd 命令的结果显示在文档中
/关键字 快速匹配关键字 eg: /root 快速匹配到root关键字
:noh 取消关键字的高亮显示(not highlight)
echo 打印 (标准输入输出) eg: echo 1234567 按回车打印出1234567 $引用变量 格式:echo $变量 打印(查看)变量值 eg: # x=2 # echo $x 2 echo $HOSTNAME 也可查看主机名、 echo $? 查看上一条命令的返回值 得到结果零表示成功,非零表示失败 eg: [root@localhost ~]# echo $SHELL /bin/bash [root@localhost ~]# echo $? 0 [root@localhost ~]# hhh bash: hhh: command not found... [root@localhost ~]# echo $? 127
" "(双引号) 弱引用 可以解析特殊字符的含义 可以显示变量的值 ‘’(单引号) 强引用 不可以解析特殊字符的含义 不可以显示变量的值 eg: [root@localhost ~]# echo "$SHELL" /bin/bash [root@localhost ~]# echo '$SHELL' $SHELL [root@localhost ~]# ``(反引号) 命令替换 可以解释反引号中的命令信息 $() 也可以实现命令替换 eg: [root@localhost ~]# date Mon Nov 28 16:19:15 CST 2022 [root@localhost ~]# echo `date` Mon Nov 28 16:19:36 CST 2022 [root@localhost ~]# [root@localhost ~]# date Mon Nov 28 16:21:49 CST 2022 [root@localhost ~]# echo `date` Mon Nov 28 16:22:06 CST 2022 [root@localhost ~]# echo 当前系统时间是`date` 当前系统时间是Mon Nov 28 16:24:04 CST 2022 [root@localhost ~]# echo 当前系统时间是$(date) 当前系统时间是Mon Nov 28 16:24:46 CST 2022
Linux中的文件描述符0 1 2
0标准输入 1标准输出 2错误输出
------将一个命令的输出(正确或错误)结果写入一个文件------- 用到> 和>> > 输出重定向符 将程序的输出结果重定到指定文件 1> 2> eg: [root@localhost ~]# echo 1234 > fff [root@localhost ~]# cat fff 1234 >> 追加输出重定向符 #echo 1234 > file #echo 234 >> file >将1234覆盖到file文件中 >>将234写于file文件中的下一行 < 输入重定向符 (可放在cat后用于查看文件内容) eg: [root@localhost ~]# cat file 1234 [root@localhost ~]# cat < file 1234 << 终止结束符 语法格式: cat << 指定字符(作为结束标记) eg: [root@localhost ~]# cat 123 123 456 456 ^C [root@localhost ~]# cat << . > aaaa > bb > c > . aaaa bb c 输入结束标记.后将标准输入内容显示到了终端
编辑文件内容的方式
1.vim 文件编辑器 2.echo 配合输入重定向符>使用,将一条较短内容写入指定文件 格式: echo 输入内容 > 文件名 3.cat 配合终止结束符<< 和输入重定向符>使用,将一些输入内容写入指定文件 格式: cat << 指定字符(作为结束标记) > 指定文件名、
eg: [root@localhost ~]# cat << . > file > aaa > bb > c > . > 将“aaa”、"bb"、"c"三行内容写入到了file文件
|管道符 (在键盘回车键上方)
作用:将一个程序(命令)输出结果通过管道符按照字符流的形式传递给后面程序继续对字符流进行处理
可以将多个程序命令连接起来
|tee T型管道
横向输出:将程序的输出结果重定到指定文件
纵向输出:将程序的输出结果显示到终端
文本内容处理相关的命令
(1)通过处理命令只是将处理结果显示在终端不会对源文件更改
(2)按照指定文件的行进行处理
cut 文本剪切 -c 字符 -d 指定分割符类型 -f 指定字段 eg: [root@localhost test]# date Tue Nov 29 16:58:38 CST 2022 [root@localhost test]# date | cut -d " " -f 4 17:00:25 解释: -d指定分割符类型为空格字符 -f指定第4个字段查看主机“时分秒”时间 通过|管道符连接date和cut两个程序命令 sort 文本排序 按照行的字符数进行比较,从小到大排序 -n 按数值从小到大进行排序 -nr 按数值 从大到小进行排序 -u 过滤重复行,只留下一行(排序并去重) -t 指定分隔符 -k 指定字段 uniq 去重(但仅对相邻重复行) 格式: uniq 指定文件 -c 显示出每一行的重复次数 -d 仅将重复行内容显示出来,且只显示一行 -D 将所有重复行内容显示出来
利用反引号剪切命令 eg: [root@localhost test]# echo 当前系统的时间是`date | cut -d " " -f 4` 当前系统的时间是17:05:51
[root@localhost ~]# cut -d : -f 7 /etc/passwd /bin/bash /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/sync /sbin/shutdown /sbin/halt /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/bash /bin/bash [root@localhost ~]# cut -d : -f 7 /etc/passwd | sort /bin/bash /bin/bash /bin/bash /bin/sync /sbin/halt /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/shutdown [root@localhost ~]# cut -d : -f 7 /etc/passwd | sort | uniq /bin/bash /bin/sync /sbin/halt /sbin/nologin /sbin/shutdown [root@localhost ~]# cut -d : -f 7 /etc/passwd | sort | uniq -c 3 /bin/bash 1 /bin/sync 1 /sbin/halt 41 /sbin/nologin 1 /sbin/shutdown [root@localhost ~]# cut -d : -f 7 /etc/passwd | sort | uniq -c |head -4 | tail -1 41 /sbin/nologin [root@localhost ~]# cut -d : -f 7 /etc/passwd | sort | uniq -c |head -4 | tail -1 | cut -d / -f 1 41
wc (word count) 文本统计
格式:
wc FILENAME
默认统计的是行数、单词数、字节数(存储空间大小),后跟文件名
-l 只统计行数
-c 只统计单词数
-w 只统计单词数
-m 只统计字符
eg:
[root@localhost ~]# wc -l /etc/passwd
47 /etc/passwd
[root@localhost ~]# cat /etc/passwd | wc -l
47
[root@localhost ~]# wc -l /etc/passwd | cut -d " " -f 1
47
tr 字符替换命令
语法格式:
tr 要被替换的字符 替换成的字符
tr -f 等长字符替换
eg:
[root@localhost ~]# echo 112233 | tr 123 abc
aabbcc
[root@localhost ~]# echo 112233 | tr 123 abcdef
aabbcc
[root@localhost ~]# echo 112233 | tr 123 ab
aabbbb
[root@localhost ~]# echo 112233 | tr -t 123 ab
-d 删除指定字符
-s 将多个连续重复字符替换为单个字符
-c 反选定
eg:
[root@localhost ~]# echo 112233 | tr -c 1 a
11aaaaa[root@localhost ~]#
[root@localhost ~]# echo 112233 | tr -d 1
2233
[root@localhost ~]# echo 1 2 3 4
1 2 3 4
[root@localhost ~]# echo "1 2 3 4"
1 2 3 4
[root@localhost ~]# echo "1 2 3 4" | tr -s " " " "
1 2 3 4
tr -s 将连续的空格符替换为单个的空格符
grep 文本关键字过滤显示
grep "模式匹配" FILENAME
-i 忽略大小写 -o 只显示关键字 -v 反选定过滤 [root@localhost ~]# grep -i 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]# grep -i 'ROOT' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]# grep -o 'root' /etc/passwd root root root root [root@localhost ~]# grep -v 'root' /etc/passwd 将除了root字符外的字符进行过滤显示 [root@localhost ~]# grep -v '^#' /etc/login.defs 将除了#作行首的行进行过滤显示
”^“该符号表示行首 “$" 该符号表示行尾 ”^$" 表示空行
作业:
1.告诉用户当前系统有多少用户
[root@localhost ~]# wc -l /etc/passwd 48 /etc/passwd [root@localhost ~]# cat /etc/passwd | wc -l 48 [root@localhost ~]# echo 当前系统用户的个数为`wc -l /etc/passwd | cut -d " " -f 1` 当前系统用户的个数为48
2.通过查看时间命令分别将年月日时分写入A文件
[root@localhost ~]# date Wed Nov 30 18:51:17 CST 2022 [root@localhost ~]# date | cut -d " " -f 2,3,4,6 Nov 30 18:53:13 2022 [root@localhost ~]# date | cut -d " " -f 2,3,4,6 | cut -d : -f 1,2 Nov 30 18:54 [root@localhost ~]# date | cut -d " " -f 6 > A [root@localhost ~]# cat A 2022 [root@localhost ~]# date | cut -d " " -f 2,3,4 | cut -d : -f 1,2 Nov 30 18:57 [root@localhost ~]# date | cut -d " " -f 2,3,4 | cut -d : -f 1,2 >> A [root@localhost ~]# cat A 2022 Nov 30 18:59
3.不显示/etc/login.defs 文件中以#开头的行以及空白行
[root@localhost ~]# grep -v "^#" /etc/login.defs | grep -v "^$" /etc/login.defs
4.将文件中3,4字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示
[root@localhost ~]# touch UID [root@localhost ~]# touch GIU [root@localhost ~]# date | cut -d " " -f 3 > UID [root@localhost ~]# cat UID [root@localhost ~]# date Fri Dec 2 14:17:51 CST 2022 [root@localhost ~]# date | cut -d " " -f 4 > GIU [root@localhost ~]# cat GIU 2 [root@localhost ~]# sort -rn UID | sort -rn GIU 2