vim以及一些文本编辑命令

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
​
​
​
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值