vim /vi 文本编辑器
vim:有颜色标记等功能(相比vi)
vim 文件名(可以创建文件)
命令模式(输入法为英文)
d+enter 删除光标所在行以及下一行
dd 删除光标所在行
4dd 从光标所在行开始一共删除四行
x 删除光标字符
dG 删除光标所在行,以及到文档尾
dgg 删除光标所在行,以及到文档首
s 替换,替换光标所在字符(删除光标所在字符)
S 替换,替换光标所在行 ——进入插入模式
G 跳转到文档末行的行首
gg 跳转到文档首行的行首
5G 跳转到文档的第五行
yy 复制光标所在行
4yy 匹配四行复制
4,8yy 复制四到八行
p 粘贴在光标的下一行
cc 剪切光标所在行
u 撤销上一次执行的操作
ctrl+r 将原来的撤销重做一遍
a 插入到光标后
A 插入到光标所在行的行尾
i 插入到光标前
I 插入到光标所在行的行尾
o 插入到光标所在行下一行
O 插入到光标所在行的下一行
命令——末行模式aa
:W 写入保存
:w 文件名
:q 退出
:q! 强制退出
:wq! 强制保存退出
:set nu 显示行号
:set nonu 取消行号
:%s /root/000 ( 可以用其他字符) 匹配所有行中第一出现root关键字替换为000
:%s /root/000/g 匹配所有行出现的所有root替换为000
:12,18 co 40 将这七行信息复制到40行之后
:r 文件名 将指定文件内容读取到光标所在下一行
:.!命令 /etc/passwd 将命令的结果显示到文档中
/关键字 快速匹配关键字
:noh 取消关键关键字的高亮显示
echo 字符
打印 标准输入输出
$ 引用变量值
echo $? 上一条命令的返回‘结果’(0-255)2为成功,其它结果失败
#echo $SHELLS 打印变量值
eg:echo $homename
“ ”弱引用 可以解析特殊字符的含义 可以显示变量的值
‘ ’强引用 不解析特殊字符的含义 不可以显示变量的值
``命令替换 $()
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo "$SHELL"
/bin/bash
[root@localhost ~]# echo '$SHELL'
$SHELL
[root@localhost ~]# echo 当前系统时间是`date`
当前系统时间是Sun Nov 27 15:12:58 CST 2022
[root@localhost ~]# echo 当前系统时间是$(date)
当前系统时间是Sun Nov 27 15:13:26 CST 2022
Linux中的程序对于文件描述符0 1 2
- 0标准输入
- 1标准输出
- 2错误输出
重定向符
- /> 输出重定向符 将程序的输出结果重定到指定文件 1> 2>
- >> 追加输出重定向符(继续写入)
echo 1234 > fff 将1234写入fff文件
echo 234 >> fff 将234写入(继续)
——————将前一个命令的输出(正确或错误)结果写入一个文件————————
< 输入重定向符
<< 终止结束符
[root@localhost ~]# cat 12345 12345 12345^H^H^H 12345 ^H^H^H^H ^C [root@localhost ~]# cat <<. > 123 > 234 > . > 123 > 234 > [root@localhost ~]#
[root@localhost ~]# cat <<.> file > 123 > . > [root@localhost ~]#
写入文件的三种方式
vim
echo 1234 > fff
cat <<终止符> file
| 管道符
将前一个程序(命令)输出结果
将结果输入head ,将结果的前五行输入tail,将结果输出
[root@localhost ~]# cat /etc/passwd | head -5 |tail -1
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
|tee T型管道 |tee -a(保证原有文件不被覆盖)
横向输出 将程序的输出结果重定到指定文件
纵向输出 将程序的输出结果显示到终端
文本内容处理相关的命令
1.通过处理命令只是将处理结果显示在终端不会对源文件更改
2.按照指定文件的行进行处理
cut 文本剪切
-c 字符
-d 分割符类型
-f 指定字段
剪切/etc/passwd里的第三段-n
[root@localhost ~]# cut -d: -f 3 /etc/passwd
0
1
2
3
等等
1000
只显示系统时间
[root@localhost ~]# date
Sun Nov 27 16:00:33 CST 2022
[root@localhost ~]# date | cut -d " " -f 4
16:01:11
[root@localhost ~]# echo 当前系统的时间是`date | cut -d " " -f 4`
当前系统的时间是16:02:20
sort 文本排序
sort 文件名 按首字符比较
sort -n 文件名 按数值大小排序
sort -u 文件名 去除重复
sort -nu 文件名 按数值大小排序且去除重复
sort -t 分隔符
sort -k 字段
将文件bbb以空格为分隔符,第二列按数值大小排序
sort -t ” “ -k 2 -n bbb
uniq 去重(重复行必须相邻)
-c 另加一列显示重复次数
-d 显示那一行的内容
-D 显示全部重复内容
sort -u 文件名 等同于sort 文件名 | uniq
wc 文件名 文本统计utf-8
(行数 单词数(每行自动算上换行符$) 字节数 文件名)
-l 行数
-w 单词数
-c 统计字节
-m 统计字符
eg:#wc -l etc/passwd
47 /etc/passwd
#cat /etc/passwd | wc -l
47
#wc -l /etc/passwd | cut -d " " -f 1
47
tr 字符 替换字符 字符替换命令
-t (按等级替换
-c 反选定
eg:1 a(把除了1以外都换成a
-d 删除指定字符
-s 将多个连续重复字符替换为单个字符
eg:把多个空格换成一个空格
#echo “1 2 3 4” | tr -s “ ” “ ”
1 2 3 4
eg:#echo 111222333 | tr 123 abcdf
aaabbbccc
#echo 111222333 | tr 123 ab
aaabbbbbb
#echo 111222333 | tr -t 123 ab
aaabbb333
grep ‘关键字’ 文件名 文本关键字关键字过滤(输出带关键字的那一行)
-i 忽略大小写
-o 只显示关键字
-v 反过滤(显示没有关键字的行)
有时#表示注释,可去注释
eg:去除注释和空白行(行首行尾没有字符)
#grep -v ’^#' /etc/login.defs | grep -v '^$'
编码模式
utf-8
字符一个字节,汉字三个,繁体字四个
一个字节8个01进制数
eg:#cut -b 1-3 文件
中
题
显示passwd文件里/sbin/nologin出现了多少次
# cut -d : -f 7 /etc/passwd | sort | uniq -c | head -4 | tail -1 | cut -d / -f 1
将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -n > UID
[root@localhost ~]# cat UID
0
1
2
3
...............
1000
65534
[root@localhost ~]# cut -d : -f 4 /etc/passwd | sort -n > GID
[root@localhost ~]# cat GID
0
0
0
0
...............
65534
通过查看时间命令将分别将年月日时分写入A文件
[root@localhost ~]# date | cut -d " " -f 2,3,4,6 > A
[root@localhost ~]# cat A
Nov 30 16:27:11 2022
告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)
[root@localhost ~]# echo 当前系统用户有$(cat /etc/passwd | wc -l)
当前系统用户有46
不显示/etc/login.defs 文件中以#开头的行以及空白行
[root@localhost ~]# grep -v '^#' /etc/login.defs | grep -v '^$'
MAIL_DIR /var/spool/mail
UMASK 022
HOME_MODE 0700
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512