vim 文本编辑器
1:命令模式:直接通过vi打开编辑器或文件名
d+enter 删除光标所在行以及光标下一行
dd 删除光标所在行
x 删除光标所在字符
Ndd 3dd 删除光标行开始一共三行
Ndd 3,5dd 删除3~5行的内容
dG 删除光标所在行到文档尾
dgg 删除光标到所在行的文档首
s 字符替换,替换光标所在字符()
yy 复制光标所在行 4yy:从光标开始复制四行
p 粘贴在光标所在的下一行
cc 剪切光标所在行
G 跳转到文档尾的行首
gg 跳转到文档首的行首
^ 跳转到行首
$ 跳转到行尾
U 撤销(返回到上一步)
CTRL+R 撤销(返回到下一步)
从命令格式进入插入格式的方式:
a: 插入到光标后
A: 插入到光标所在行行尾
i: 插入到光标前
I: 插入到光标所在行的行首
o: 插入到下一行
O: 插入到上一行
s: 删除光标字符进入插入模式
S: 删除光标进入插入模式
2:插入模式:
insert(终端最后一行显示insert)编辑文件内容
3:末行模式:通过esc和命令模式切换
末行格式退出:
:wq 保存退出
:q 退出
:q! 强制退出
:wq! 强制保存退出
:15 跳转到第15行
:set nu 会在每一行的前缀显示该行的行号
/root 匹配root关键字
:noh 取消高亮显示
:1,5 co 10 复制1~5行至第十行
:%5/root/000/ 关键词替换root变为000,替换的是每一行中第一次匹配到的root关键词
:%5///g 关键词替换,替换的是每一行中所有匹配到的关键词
:r 把指定文件内容读取到当前文件光标的下一行
注:多种模式切换依赖命令模式
.*(正则符.表示任意单个字符*表示匹配一个字符任意次)(针对数据内容)
*(通配符*表示任意长度的任意字符?表示匹配任意单个字符)(针对文件名)
文件内容处理命令:
echo 打印命令(标准输入输出的命令)=printf
#echo helloworld
[root@localname~]# echo $HOSTNAME $引用变量
[localhost~].localdomain
[root@localname~]# echo “$HOSTNAME” “”弱引用符(可解释特殊含义的字符)
[localhost~].localdomain
[root@localname~]# echo ‘$HOSTNAME’ ‘’强引用(不解释特殊含义的字符)
$HOSTNAME
[root@localname~]# echo 当前主机时间`date` ``命令替换符
当前主机时间Sat Nov 26 02:20:19 EST 2022
[root@localname~]# echo当前主机时间$(date) $()命令替换符
当前主机时间Sat Nov 26 02:20:19 EST 2022
Linux中文件的描述符 0标准输入 1标准输出(正确输出) 2错误输出
>输出重定符(将程序的内容输出到指定文件内—将内容写入文件,会覆盖文件内容)
>> 输出追加重定符
<输入重定向符
<<终止结束符
#head /etc/passwd 2> 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 == > |tee -a == >>
纵向输出:将前一个命令的标准输出直接在终端打印显示
cut 剪切
特点1:文件的行进行处理 2
-c 字符
-d 分割字符
-f 分割字段
[root@www ~]# echo 当前系统的时间`date | cut -d " " -f 4`
当前系统的时间03:19:28
sort 排序
默认按照文件行的字符进行比较(从小到大)
-r 降序 (从大到小)
-n 按照数据比较(从小到大)
-u unique (去重)
#sort -nu aaa 将文件中的行按照数值从小到大显示,并且重复行只显示一次
uniq 去重
# sort aaa | uniq
-c 显示重复次数
-d 显示文件重复出现的内容
-D 所有重复行
[root@localhost /]# history |cut -d " " -f 5- | sort |uniq -c | sort | tail -3
wc 文本统计 (word count)
wc FILENAME 统计指定文件的行、单词数、字节数
-l 统计行数
-w 统计单词数
-c 统计字节
-m 统计字符
#echo “bbb文件一共有`wc -l bbb| cut -d ‘ ’-f 1`行”
tr 字符替换命令
tr set1 set2
# echo helloworld | tr 1 0 把1字符替换成0字符
# echo helloworld | tr hl 0 把h以及l字符替换成0字符
# echo helloworld | tr l 01 把l字符替换成0字符
# echo helloworld | tr -t hl 0 等长字符替换;把h字符替换成0字符
# echo helloworld | tr -c l 0 反选定;除了l字符之外的字符替换成0字符
# echo 1 2 3 | tr -s “ ”“ ”
将多个连续重复字符替换成单个字符;将多了的连续重复的空额字符替换成单个空格字符
# df -h 查看文件系统使用情况
grep 文本过滤 文本三剑客 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 '^$' ^$ 空白行
作业:
2:
[root@localhost ~]# cut -d: -f 3 /etc/passwd | sort -r >UID
[root@localhost ~]# cut -d: -f 4 /etc/passwd | sort -r >GID
3:
[root@localhost ~]# echo $( date | cut -d " " -f 6,2,3,4)> A
4:
[root@localhost ~]# echo "this redhat have `wc -l /etc/passwd`users "
5:
[root@localhost ~]# grep -v '^#' /etc/login.defs| grep -v '^$'