Day 4
vim 文本编辑器 (vi)
命令模式:
d +enter 删除光标所在行以及光标下一行
dd 删除光标所在行
x 删除光标所在字符
Ndd 3dd 删除光标行开始一共三行
Ndd 3,5dd 删除3-5行
dG 删除光标所在行到文档尾
dgg 删除光标所在行到文档首
s 字符替换,替换光标所在字符
yy 复制光标所在行 4yy
p 粘贴在光标所在的下一行
cc 剪切光标所在行
G 跳转到文档尾的行首 15G 跳转到15行
gg 跳转到文档首的行首
^ 跳转到行首
$ 跳转到行尾
u 向左撤销
ctrl-r 向右撤销
***命令模式进入插入模式的方式***:
a 插入光标后
A 插入光标尾
i 插入到光标前
I 插入到行首
o 插入到下一行
O 插入到上一行
s 删除光标字符并进入插入模式
S 删除光标行并进入插入模式
末行模式:
:wq(write quit)(!)
:q(quit)(!)
:15 跳转到第15行
:set nu 显示行号
/root 匹配root关键字
:noh 取消高亮显示
:1,5 co 10 复制1-5行到第十行下
:% s/root/000/ 关键字符的替换,替换的是每一行中第一次匹配的root关键字
:% s/root/000/g 关键字符的替换,替换的是每一行中所有匹配的root关键字
:r FILENAME 把指定文件内容读取当前文件光标的下一行
.*
正则符:. 任意单个字符(数据内容)
*匹配前一个字符任意次
通配符:*任意长度的任意字符(文件名)
?匹配任意单个字符
文本内容处理命令
echo 打印命令(标准输入输出的命令)
[root@localhost ~]# echo helloworld
helloworld
[root@localhost ~]# echo $HOSTNAME $引用变量
localhost.localdomain
[root@localhost ~]# echo "$HOSTNAME" ”“弱应用符(可以解释特殊含义的字符)
localhost.localdomain
[root@localhost ~]# echo '$HOSTNAME' ‘’强引用(解释特殊含义的字符)
$HOSTNAME
[root@localhost ~]# echo 当前主机时间`date` ``命令替换符
当前主机时间Sat 26 Nov 14:54:02 CST 2022
[root@localhost ~]# echo 当前主机时间$(date) $() 命令替换符
当前主机时间Sat 26 Nov 14:54:25 CST 2022
Linux中文件的描述符 0标准输入 1标准输出(正确输出) 2 错误输出
> 输出重定符(将程序的内容输出重定到指定文件--将内容写入文件,会覆盖源文件内容)
>> 输出追加重定向符
< 输入重定向符
<< 终止结束符
#head /etc/passwd 1> file
#tail -2 /etc/passwd >> file
#cmd 2> file1 把cmd的错误结果输入到file1文件
#cmd &> file1 &表示1和2 把cmd正确或错误输出写入到file1文件==cmd 1>file1 2>&1
| 管道符(无名管道)前一个命令的输出结果按照字符流的形式通过管道符连接后一个命令进行处理
|tee T型管道 横向输出将前一个命令的标准输出作为后面文件的标准输入 |tee-a == >> |tee == >
纵向输出将前一个命令的标准输出直接在终端打印显示
文件的行进行处理(将处理的结果显示在终端不会编辑)
cut 剪切
-c 字符 #cut -c 1-3 FILENAME
-d 分割字符 #cut -d 符号 -f 字段 FILENAME
-f 分割字段
[root@localhost ~]#date
[root@localhost ~]# echo 当前系统的时间`date|cut -d " " -f 4`
当前系统的时间16:19:29
sort 排序
默认按照文件行的字符进行比较(从小到大)
-r 降序 从大到小
-n 按照数值比较(从小到大)
-u uniq(unique) 去重
#sort -nu FILENAME 将文件中的行按照数值从小到大显示,并且重复行只显示一次
uniq 去重(重复行必须相邻)
-c 显示重复次数
-d 显示文件重复出现的内容
-D 所有重复行
wc 文本统计(word count)
wc FILENAME 统计指定文件的行、单词数、字节数
-l 统计行数
-w 统计单词数
-m 统计字符数
-c 统计字节数
tr 字符替换命令
tr l 0 把l字符替换成0字符
tr hl 0 把hl字符都换成0字符
tr l 01 把l字符替换成0字符
tr -t hl 0 只把h字符换成0字符(等长字符替换)
tr -c l 0 把除了l字符之外的字符替换成0字符(反选定)
tr -d hl 删除字符hl
#echo 1 2 3|tr -s “ ”“ ” 将多个连续重复字符替换为单个字符
df-h
grep 文本过滤
格式: grep '关键字' FILENAME
grep 'root' /etc/passwd 过滤关键字,有root关键字行打印到终端
grep -o 'root' /etc/passwd 过滤关键字,只把root关键字打印到终端
grep -i 'ROOT' /etc/passwd 过滤关键字乎略大小写
grep -v 'root' /etc/passwd 过滤关键字,把没有关键字的行显示
#cat /etc/login.defs
grep -v '^#' /etc/login.defs ^#以#号开头
grep -v '^#' /etc/login.defs | grep -v '^$' ^$ 空白行
作业题:
1.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
#cut -d ":" -f 3 /etc/passwd|sort -n >UID
#cut -d ":" -f 4 /etc/passwd|sort -n >GIU
2.通过查看时间命令将分别将年月日时分写入A文件
#echo `date`>A
3.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
#wc -l /etc/passwd
4.不显示/etc/login.defs 文件中以#开头的行以及空白行。
#grep -v '^#|^$'/etc/login.defs