day4
vim 文本编辑器 vi
命令模式:
d+Enter :删除光标所在行以及光标下一行
dd:只删除光标所在行
x:删除光标所在字符
Ndd ndd:删除从光标行开始一共n行 3,5表示删除3-5行内容
dG:删除光标所在行到文档尾
dgg:删除光标所在行到文档首
s:字符替换,替换光标所在字符
yy:复制光标所在行 4yy
p:粘贴在光标所在的下一行
cc:剪切光标所在行
G:跳转到文档尾的行首
gg:跳转到文档首的行首
^:跳转到行首
$:跳转到行尾
u:向左撤销
Ctrl+r:向右撤销
命令模式进入插入模式的方式
a:插入光标后
A:插入到行尾
i:插入到光标前
I:插入到行首
o:插入到下一行
O:插入到上一行
s:删除光标字符进入插入模式
S:删除光标行进入插入模式
末行模式: :
:wq 保存退出
:q 退出不保存
:q! 强制退出(不保存退出)
:wq! 强制保存退出
:set nu
/root 匹配关键字
:noh
:1,5co 10
:% s/root/000/ 关键字符替换,替换的是每一行中第一次匹配的root关键字
:% s/root/000/ g 关键字符替换,替换的是每一行中所有匹配的root关键字
:r FILENAME 把指定文件内容读取到当前文件光标的下一行
正则符:.任意单个字符 (数据内容)
*匹配前一个字符任意次
通配符:*任意长度的任意字符 (文件名)
?匹配任意单个字符
文本内容处理命令
echo:打印命令(标准输入输出的命令,即输什么是什么)
[root@localhost zhoutao]# echo helloworld helloworld [root@localhost zhoutao]# echo $HOSTNAME $引用变量 localhost.localdomain [root@localhost zhoutao]# echo "$HOSTNAME" “” 弱引用符(可以解释特殊含义的字符) localhost.localdomain [root@localhost zhoutao]# echo '$HOSTNAME' ‘’强引用(不解释特殊含义的字符) $HOSTNAME [root@localhost zhoutao]# echo 当前主机时间`date` ``命令替换符 当前主机时间Sat Nov 26 14:51:45 CST 2022 [root@localhost zhoutao]# echo 当前主机时间$(date) $( ) 命令替换符 当前主机时间Sat Nov 26 14:52:17 CST 2022
linux中文件的描述符: 0标准输入 1标准输出(正确输出) 2错误输出
大于号(>):输出重定向符 将程序的内容输出重定到指定文件--将内容写入文件,会覆盖源文件内容
两个大于号(>>):输出追加重定向符
< : 输入重定向符
<<:终止结束符
#head /etc/passwd > file #tail -2 /etc/passwd >> file #cmd 2> file1 把cmd的错误结果输入到file文件 #cmd &> file1 & 表示1和2 把cmd正确或者错输出写入到file文件 == cmd 1>file1 2>&1
| 管道符(无名管道):前一个命令的输出结果安装字符流的形式通过管道符连接后一个命令进行处理
|tee : T型管道 横向输出将前一个命令的标准输出作为后面文件的标准输入 |tee == > |tee -a == >>
纵向输出将前一个命令的标准输出直接在终端打印显示
[root@localhost /]# head -2 /etc/passwd |tee file.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost /]# head -2 /etc/passwd |tee -a file.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost /]# cat file.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
3.文本内容处理命令
文件的行进行处理:将处理的结果显示在终端不会对源文件更改
cut:剪切
-c:字符 -d:分割字符 -f:分割字段
sort:对文本内容排序
默认按照文件行的字符进行比较(从小到大) -r 降序 从大到小 -n 按照数值比较 -u(unique)去重 #sort -nu aaa:将文件中的行按照数值从小到大显示,并且重复行只显示一次
uniq:去重 ,重复行必须相邻
[root@localhost /]# sort aaa | uniq -c:显示重复次数 -d:显示文件重复出现的内容 -D:所有重复行 [root@localhost /]# sort aaa | uniq -d 34 [root@localhost /]# sort aaa | uniq -D 34 34 34 34
wc:文本统计 word count
wc FILENAME: 统计指定文件的行、单词数、字节数 -l:统计行数 [root@localhost /]#wc -l bbb 1 bbb [root@localhost /]#echo "bbb文件一共有'wc -1 bbb" -w:统计单词数 -m:统计字符数 -c:统计字节数
tr:字符替换命令
tr set1 set2
[root@localhost zhoutao]# echo helloworld | tr l 0 把l字符替换成0字符 he00owor0d [root@localhost zhoutao]# echo helloworld | tr hl 0 把h以及l字符替换成0字符 0e00owor0d [root@localhost zhoutao]# echo helloworld | tr l 01 把l字符替换成0字符 he00owor0d [root@localhost zhoutao]# echo helloworld | tr -t hl 0 -t:等长字符替换 把h字符替换成0字符 0elloworld [root@localhost zhoutao]# echo helloworld | tr -c l 0 -c:反选定,除了l字符之外的字符全部替换成0字符 00ll0000l00[root@localhost zhoutao]# [root@localhost zhoutao]# echo helloworld | tr -d hl -d:删除字符,删除hl字符 eoword [root@localhost zhoutao]# echo 1 2 3 | tr -s " " " " -s:将多个连续重复字符替换为单个字符;将多个连续重复的空格字符替换成单个空格字符 1 2 3 #df -h:查看文件系统使用情况 [root@localhost zhoutao]# df -h | tr -s " " " " | cut -d " " -f 4
grep:文本过滤显示命令***shell 文本三剑客grep sed awk
格式: 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 '^$' ^$ 空白行