Linux极速上手

171 阅读5分钟

Linux高级命令---文件相关

vi:文件编辑利器

wc、unoq、sort、head:文件内容统计相关命令

vi命令

编辑文件内容

vi 文件名

可直接创建新文件

创建后I键编辑

ESC键结束编辑

:wq

w:保存

q:退出

q!:强制退出

cat 文件名

查找文件内容

复制粘贴

双击Y键复制光标所在行内容,点击P键粘贴至下一行

查找字符串

/要查找的字符串内容

N键下一项

快速删除

双击D键删除光标所在行

连按3次9,然后双击D键,删除光标所在行以及往后的所有内容

查找某一行内容

定位到某一行

:行号

显示行号

: set nu

快速跳到文件首行和末行

小写模式下,双击g键,光标跳转第一行

大写模式下,点击G键,光标跳转最后一行

文件异常退出情况

当操作为按操作退出时,再次使用vi命令编制文件会遇见下述情况

使用Enter键可正常进入文件界面,但下一次进入,该情况依然存在

问题分析

由于文件编制异常退出,系统产生临时文件

解决方法

把生成的临时文件删掉

该临时文件为隐藏文件,ll命令无法查看,需使用ll -a命令进行查找

rm -rf .hello.txt.swp

文件统计相关命令

wc:统计字数相关信息

查看字节数

wc -c 文件名

查看字符数量

wc -m 文件名

查看行数

wc -l 文件名

查看最长的一行的字符数

wc -L 文件名

查看不重复字符数

wc -w 文件名

wc - w 及 wc -c 统计包含换行符

uniq:检查重复的行列

文件内容

直接去查

uniq 文件名

统计字段出现次数

uniq -c 文件名

删除重复项

uniq -u 文件名

不难发现,上述方法并未把最后一个is 9 重复项识别出来

解决方法

写排序再去除

sort hello.txt | uniq

|操作符(管道):把前面的数据放至后方运算

sort:排序

按首字符排序

sort 文件名

按数值大小排序

sort -n 文件名

按照数值倒序

二者等价

sort -n -r 文件名
sort -nr 文件名

按某一列数值排序

sort -k 列数 -n 文件名

head:取前N条数据

默认返回前10条数据

head -返回数

常搭配管道使用

Linux高级命令---日期相关

直接获取日期

date

时间格式化

date +"%Y-%m-%d %H:%M:%S"

若格式化之间不存在空格,可不加双引号

获取时间戳

date +%s

秒数

date +%s"000"

毫秒

获取特定时间

date --date "特定日期"

获取特定时间时间戳

date --date "特定日期" + %s

获取前几天的时间

date --date="2 days ago"

获得某一年二月份的天数

解决思路

先定位到当年的三月一号,在获取前一天日期

date --date "2022-03-01 1 days ago" +%d

Linux高级命令---进程相关

ps:显示进程信息

显示系统所有进程

ps -ef

过滤进程信息

ps -ef | grep 进程种类

top:动态监控进程信息

  • 主要作用在于动态显示系统消耗资源最多的进程信息;包含进程ID、内存占用、CPU占用等
  • 和ps命令作用基本相同,唯一的区别是top命令能够动态显示进程信息

进入监控模式

top

点击Q键退出监测模式

netstat:显示端口信息

该命令默认未安装

netstat下载安装

netstat -anp

监听某端口

netstat -anp | grep 端口

kill:杀掉进程

杀掉进程,自杀

kill PID

强制杀掉进程,它杀

非必要不使用

kill -9 PID

PID可通过ps命令获取

jps:显示Java进程信息

  • jps:类似ps命令,不同的是ps是用来显示所有进程信息的而jps只显示Java进程信息
  • 准确的说jps是显示当前用户已启动的Java进程信息,信息包括进程号和简短的进程command

jps是Java提供的命令,只有在安装配置好Java环境后才能使用

Linux三剑客

grep:查找

·常用于查找文件里符合条件的字符串

·常和管道一起使用达成过滤

查找字符串是否存在与文件中

grep 字符串 文件名
cat 文件名 | grep 字符串

查询以字母开头的字符串

grep ^字母 文件名

由此可见,grep命令支持正则表达式

忽略大小写

grep -i 字符 文件名

显示该行的行号

grep -i 字符 -n 文件名

忽略包含指定字符串的内容

grep -v 字符串

sed:编辑

用来自动编辑一个或多个文件、简化对文件的反复操作

添加内容

向指定行下方增加数据

sed '行数a\内容' 文件夹

上述命令修改的是缓存区文件的内容,而不是直接修改源文件

向指定行上方增加数据

sed '行数a\内容' 文件夹

最后一行上方添加数据

sed '$i\内容' 文件夹

删除内容

删除某一行参数

sed '行数d' 文件名

删除最后一行可把行数换为$

替换内容

hello.txt内容

sed 's/需要替换的字符/替换后的字符/flags' 文件名

flags使用

  1. 就是flags可以表示为1~512之间的任意一个数字,表示指定要替换的字符串在这一行中出现第几次时才进行替换
  1. 就是flags可以直接表示为g,这样的意识就是对每一行数据中所有匹配到的内容全部进行替换
  1. 如果flags位置的值为空,则只会在第一次匹配成功时做替换操作

替换指定行内容

sed '行数s/需要替换的字符/替换后的字符/flags' 文件名

永久修改在sed 后面加上-i即可

awk:分析

是一种处理文本的语言,是一个强大的文本分析工具

hello.txt里的内容

打印某一列数据

awk '{print $列数}' 文件名

$0 代表所有内容

指定字段分隔符

hello.txt文件内容

awk -F '{print $列数}' 文件名分隔符

正则表达式+awk

awk '/匹配内容/{操作}' 文件名

打印含有world字符的所有行

awk '/($列数 ~ 匹配内容)/{操作}' 文件名

查找某一列是否含有匹配内容