linux入门

简介

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

文件目录

在这里插入图片描述

目录结构

Bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的
Boot:存放一些Linux启动时需要用到的核心文件
Dev:该目录主要存放的是外接设备,例如:U盘、光盘。其中的外接设备不能直接使用,需要先挂载。
Etc:该目录放一些配置文件
Home:存放除了root以外的其他用户的家目录
Lib:是library的缩写,主要存放一些动态库,供应用程序调用
Root:该目录是root用户的家目录
Sbin:全程super binary,该目录存储一些可执行的二进制文件,但是必须要有super权限的用户才能执行
Tmp:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
Usr:存放用户自己安装的软件。类似于windows下的program file
Var:存放的程序/系统的日志文件的目录
Media:自动挂载一些Linux系统自动识别的设备,比如U盘、光驱
Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。
Usr:
主要存放一些用户的应用程序及文件,类似于Windows下的program file
bin 存放系统用户所使用的应用程序
sbin 存放超级用户所使用的高级程序及系统守护程序
src 内核源代码默认的放置目录

在这里插入图片描述
history:查看用过的历史命令

帮助文档

man 命令:查看命令文档

man [选项] 命令
-f: 显示给定关键字的简短描述信息
-k:根据关键词搜索帮助文档
-w:显示手册文件所在位置

在这里插入图片描述

info命令:

info 命令:查看命令的文档

whatis:查询一个命令执行什么功能,并把查询结果打印到终端上,相当于man -f

read:输入命令

read -p "input passwd" -s passwd
echo $passwd

read -p "input a word" -t 5 number
#延迟5秒,没有输入则自动退出

read -p "input a word" -n 5 word
#从输入中读取5个字符

账号管理

基本操作:

useradd [选项] 用户名  //创建用户
passwd  [选项] 用户名  //用户口令
usermod 选项 用户名  //修改用户
userdel  [选项] 用户名  //删除用户

用户组:

groupadd [选项] 用户组名
groupmod [选项] 用户组名
groups 用户名 //查询用户所属用户组名
groupdel 用户组名


gpasswd [选项] 组名//用于将一个用户添加或者从组中删除

选项:
-a:向组GROUP中添加用户USER
-d:从组GROUP中添加或删除用户
-h:显示此帮助信息并推出
-Q:要chroot进的目录
-r:remove the GROUP's password
-R:向其成员限制访问组GROUP
-M:向其成员限制访问组GROUP
-A:设置组的管理员列表

显示当前登录用户:

在这里插入图片描述

切换用户:
在这里插入图片描述

查看用户信息:
在这里插入图片描述

提高普通用户的操作权限:

在这里插入图片描述

进程管理

top //实时监控进程的信息
top -c //实时显示所有的进程信息(显示完整命令)
top -p PID//实时显示指定进程的信息

在这里插入图片描述

ps  //显示当前正在运行的进程信息
ps -A//显示系统中所有的进程信息
ps -ef//显示系统中所有的进程信息(完整信息)
ps -u 用户名//有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息

ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态

在这里插入图片描述

kill [-s <信息名或编号>][程序]  中断执行中的程序
kill [-l <信息编号>]

-l <信息编号>:若不加信息编号选项,则-l参数会列出全部的信息名称
直接加程序的PID或者PGID,也可以是工作编号
-u 用户名:杀死这个用户中所有进程

kill 进程PID //杀死指定进程
kill -9 进程PID //彻底杀死指定进程,9是一个signal,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。
kill -9 $(ps-ef|grep 用户名) //杀死指定用户的所有进程
killall -u 用户名  //杀死指定用户所有进程

kill(不加 -* 默认kill -15)命令

系统会发送一个SIGTERM信号给对应的程序。当程序接收到该signal信号后,将会发生以下事情:

程序立刻停止
当程序释放相应资源后再停止
程序可能仍然继续运行

大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待IO,可能就不会立马做出响应),也就是说,SIGTERM有可能是会被阻塞的。

关机

shutdown //不同的版本会有所差异
shutdown -h now //立马关机
shutdown +1 "警告信息" //一分钟之后关机
shutdown -r +1 "警告信息" //一分钟之后重启
shutdown -c //取消当前关机操作

文件权限

在这里插入图片描述
在这里插入图片描述

目录管理

在这里插入图片描述

ls:

ls[参数选项] 目录名称   //列出目录里的内容

选项参数:
-a:显示所有文件或目录
-d:仅列出目录本身,而不是列出目录内的文件数据(常用)
-l:长数据串列出,包含文件的属性与权限等等数据(常用)
-h:把文件大小以K、M、G的更容易观察的形式展示
-t:按时间序列出文件
-r:以相反的次序列出文件
-R:递归列出所有子目录
-S:根据文件大小排序
-F:在列出的文件名称后加一符号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ls -ls >a.txt

在这里插入图片描述

pwd:

pwd //显示当前所在的目录
pwd -P//查看当前所在目录

cd:

cd [相对路径或绝对路径] //切换目录

cd - #移动到上一次的目录

mkdir:

mkdir 文件夹名 //创建目录
mkdir -p 文件夹名/.../文件名 //创建多级目录
mkdir -m 权限数字 文件夹名 //创建文件夹并给一个初始权限

mkdir dir{5..7} 	#创建dir1……dir7
mkdir -p dir1/dir2/dir3

rmdir:

rmdir [-p] 文件夹名字  //删除空的文件夹,不是空白的不能删除

rmdir 文件夹名 //删除目录
rmdir -p 文件夹名/.../文件名 //删除文件,如果删除后目录为空也一块将目录删除

rm:

rm [选项] 文件/目录  //删除文件或者目录

选项参数:
-i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除

cp:

cp [选项] 数据源 目的地 //文件复制

选项参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-b:如果目标有该文件,就先备份一下原文件再去覆盖
-d:复制时保留链接,这里所说的链接相当于Windows系统中的快捷方式
-f:覆盖已经存在的目标文件而不给出提示
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答“y”时目标文件将被覆盖
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r/R:若给出的源文件是一个目录文件,此时将复制该目录下的所有子目录和文件
-l:不复制文件,只是生成链接文件

例:

cp aaa/a.txt ccc  //将aaa文件夹中的a.txt文件拷贝到ccc文件夹中
cp -r aaa/* ccc   //将aaa文件夹中所有内容(包括文件和文件夹)拷贝到ccc文件夹中

mv:

mv [选项] 数据源 目的地

选项参数:
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件
-f:若指定目录已有同名文件,则覆盖不显示
-b:当文件存在时,覆盖前为其创建一个备份
-u:当源文件比目标文件新,或者目标文件不存在时,才执行移动操作

在这里插入图片描述

chgrp:

chgrp -v root aaa //将aaa的属组改为root

chown:

chown 属主名 文件名 //更改属主
chown [参数选项]属主名:属组名 文件名 //更改属主和属组

选项参数:
-R 处理指定目录以及其子目录下的所有文件

例:
chown root aaa //将aaa的所有者改成root
chown root:root bbb//把bbb的所有者和用户组改为都改为root
chown -R root:root aaa //将aaa文件夹和里面所有的属主和属组改为root

chmod:修改属主、属组、其他用户的权限

chmod [参数选项] 数字权限|符号权限 文件或目录

参数选项:
-c:若该档案权限确实已经更改,才显示其更改动作
-f:若该档案权限无法被更改也不要显示错误讯息
-v:显示权限更改的详细资料
-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help:显示辅助说明
--version:显示版本

例:
chmod -R 770 aaa
chmod -R u=rwx,g=rwx aaa
chmod ugo+rwx aaa

在这里插入图片描述
在这里插入图片描述

文件操作练习

在这里插入图片描述

useradd java
useradd erlang
useradd golang

groupadd dev-group

gpasswd -a java dev-group
gpasswd -a erlang dev-group
gpasswd -a golang dev-group

grep 'dev-group'  /etc/group

mkdir -p work

chgrp -R dev-group work

chmod -R 770 work

文件管理

touch:

touch [参数选项] 文件名 //如果文件不存在就创建文件,如果存在就修改时间属性
参数选项:
	-a:改变文件的读取时间记录
	-m:改变文件的修改时间记录
	-r:使用参考文件的时间记录
	-c:不创建新文件
	-d:使用指定字符串表示时间式
	-t:设定文件的时间记录,格式与date命令相同
	--no-create:不创建新文件

例:
touch a.txt //创建a.txt
touch a{1..10}.txt //批量创建,创建a1~a10.txt
stat a.txt //查看文件的详细属性

touch file.txt -r ref_file.txt
stat file.txt //file.txt跟ref_file.txt的属性一模一样

vi/vim编辑器:
1.只能是编辑文本内容,不能对字体、段落进行排版
2.不支持鼠标操作
3.没有菜单
4.只有命令

vim:是从vi发展出来的一个文本编辑器。
代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用

简单的来说:
vi是老式的文字处理器,不过功能已经很齐全了。但是还是有可以进步的地方。
vim则可以说是程序开发者的一项很好用的工具。

vim 文件名
如果文件已经存在,会直接打开该文件
如果文件不存在,打开一个临时文件,在保存且退出后,就会新建一个文件

在这里插入图片描述

vim 文件名+行数 //查看文件并定位到具体行数

在这里插入图片描述
在这里插入图片描述
rename:更改文件名

rename 's/old-name/new-name/' files
原字符串:将文件名需要替换的字符串
目标字符串:将文件名中含有的原字符串替换成目标字符串
文件:指定要改变文件名的文件列表

文件查看:

在这里插入图片描述

cat:

cat a.txt //查看a.txt的内容
cat -n a.txt //查看a.txt的内容(加入行号)

文件合并:

cat 文件1 文件2 …… >保存的文件

head:从头开始查找文件的若干行
tail:从后开始查找文件的若干行

head file
head -n 2 file
#查看file的前2行
head -n -2 file
#从头展示到倒数第2行

tail file
tail -n 2 file
#查看file的后2行
tail -n +2 file
#从第二行开始展示到最后一行

cat file | head -n -2 | tail -n +2
#展示文件从第二行开始到倒数第二行

提取文件名:

basename /etc/passwd
basename -a path1 path2

#提取后删除后缀
basename /etc/sysctl.conf .conf

提取目录路径名:

dirname /usr/bin/cat

less:

less [参数选项]文件

例:
less a.txt //查看a.txt的内容
less -N a.txt //查看a.txt的内容(加入行号)

对查询结果的操作:
1.全屏导航
ctrl+F - 向前移动一屏
ctrl+B - 向后移动一屏
ctrl+D - 向前移动半屏
ctrl+U - 向后移动半屏
2.单行导航
j - 向前移动一行
k - 向后移动一行
3.其他导航
G - 移动到最后一行
g - 移动到第一行
q/ZZ - 退出less命令

tail:

tail [参数选项]文件  //查看文件的最后部分

参数选项:
-数字:显示文件的最后几行
-f:循环读取文档最后10行
-n<行数>:显示文件的内容,从指定行至文件末尾
-c:显示最后指定的字节数

例:
tail -3 test.txt  //显示文件最后3行
tail -f test.txt  //动态显示最后10行
tail -4f test.txt //动态显示最后4行
tail -n +2 test.txt //显示文件test.txt的内容,从第2行至文件末尾
tail -c 45 test.txt //显示最后一些字符

wc:

wc [参数选项] 需要统计的文件路径

参数选项:
-l:表示lines,行数
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数

chattr:对文件进行保护

chattr [-RVf] +-= files
-R:递归处理目录下的所有文件
-v:设置文件或目录版本
-V:显示指令执行过程
+:开启文件或目录的该项属性
-:关闭文件或目录的该项属性
=:指定文件或目录的该项属性

chattr +i file #防止某个关键文件被修改
chattr -i file #解锁
chattr +a file #只允许文件追加内容
chattr -R +i dir #对一个目录中的所有文件添加限制
lsattr file #查看文件属性

grep:

*代表多个字符,?代表一个字符,[0-9]代表0-9区间,^word以word开头

grep [参数选项] 关键字 文件 //根据关键字,搜索文本文件内容

参数选项:
-n:把包含关键字的行展示出来
-i:把包含关键字的行展示出来,搜索时,忽略大小写
-v:把不包含关键字的行展示出来

与ps一块使用:
ps -ef|grep 关键字 //查找指定的进程信息,包含grep进程
ps -ef|grep 关键字|grep -v "grep" //查找指定的进程信息,不包含grep进程
ps -ef|grep -c sshd //查找进程个数 

echo:

echo 字符串 //展示文本
echo 字符串>文件名 //将字符串写到文件中(覆盖文件中内容)
echo 字符串>>文件名 //将字符串写到文件中(不覆盖文件中内容)
cat 不存在的目录 &>> error.log //将命令的失败结果追加error.log文件的后面

awk:

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

在这里插入图片描述
在这里插入图片描述

例:
cat a.txt|awk '/zhang|li/' //查询a.txt中包含zhang和li字符串的行

cat a.txt|awk -F ' ' '{print $1,$2,$3,$4}' //将文件按照空格符分割后,打印1、2、3、4列

cat a.txt|awk -F ' ' '{OFS="==="}{print $1,$2,$3,$4}'//用===来间隔1、2、3、4列

cat a.txt|awk -F ' ' '{print toupper($1)}' //将第一段进行大写

cat a.txt|awk -F ' ' '{print tolower($1)}' //将第一段进行小写

cat a.txt|awk -F ' ' '{print len($1)}' //输出字符数

cat a.txt|awk -F ' ' 'BEGIN{}{total=total+$4}END{print total,NR}' //将每一行的第四列加起来打印,并打印总人数

sed:文档的快速增删改查

sed [选项] [sed内置命令字符] [输入文件]

选项:
在这里插入图片描述
内置命令字符:

在这里插入图片描述
匹配范围:
在这里插入图片描述

sed 's/stringa1/stringa2/g' example.txt #将example.txt文件中的 "string1" 替换成 "string2"

sed '/^$/d' example.txt #从example.txt文件中删除所有空白行

sed -i '1i\a new line' file #从第一行前面插入a new line

sed -in '2,5s/^/#/p' file #从第二行到第5行加注释

sed -in '/^$/d' file #删除空行

sed -in '1,3d' file #删除1到3行

 sed -i '/#/d' hello.txt #删除带#的行

ln:软连接:

ln -s 目标文件路径 快捷方式路径

例:
ln -s aaa/bbb/ccc/ddd/eee/a.txt  a.txt //创建快捷方式到当前文件夹

find:

find [参数选项]<指定目录><指定条件><指定内容> //在指定目录下查找文件

参数选项:
-name filename 查找名为filename的文件
-ctime -n或+n  按时间来查找文件,-n指n天以内,+n指n天以前

例:
find . -name "*.txt" //查找当前目录下的txt文件

find . -ctime -1//最近1天之内操作过的文件

find / -name "*.txt" //查找全盘中的txt文件

find / -user user1 #搜索user1的文件和目录

sort:排序文件内容

sort file1 file2 排序两个文件的内容

sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)

sort file1 file2 | uniq -u 删除交集,留下其他的行

sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)

comm:删除公共部分内容

comm -1 file1 file2 比较两个文件的内容只删除 ‘file1’ 所包含的内容

comm -2 file1 file2 比较两个文件的内容只删除 ‘file2’ 所包含的内容

comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分

gzip:压缩文件

gzip[参数选项][文件] //压缩文件,压缩完源文件消失

例:
gzip a.txt //压缩文件
gzip *     //压缩当前目录下所有文件
gzip -dv * //解压当前文件并列出详细信息

gunzip:解压文件

gunzip[参数][文件] //解压文件

tar:

本身不具有压缩功能,他是调用压缩功能实现的

tar [必要参数][选择参数][文件] //打包、压缩和解压(文件/文件夹)

tar -cvf 打包文件名 文件名  //打开文件并指定打包之后的文件名
tar -zcvf 压缩文件名 文件名/文件夹名 //压缩文件或者文件夹并指定压缩文件名
tar -ztvf 压缩文件名  //查看压缩文件中有哪些文件
tar -zxvf 压缩文件名  //解压

参数选项:
-c 建立新的压缩文件
-v 显示指令执行过程
-f<备份文件> 指定压缩文件
-z 通过gzip指定处理压缩文件
-t 列出压缩文件的内容
-x 解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中

例:
tar -cvf a.tar a.txt //将a.txt打包为a.tar

tar -zcvf b.gz b.txt //将b.txt压缩打包成b.gz

tar -zxvf b.gz //将b.gz解压

zip:

zip是一个广泛的压缩程序,文件将它压缩后会产生具有“.zip”扩展名的压缩文件

zip [必要参数][选择参数][文件]  //压缩

参数选项:
-q 不显示指令执行过程
-r 递归处理,将指定目录下的所有文件和子目录一并处理

例:
zip -q -r aaa.zip aaa //将aaa.zip压缩成aaa

unzip:

unzip [必要参数][选择参数][文件] //解压

参数选项:
-l显示压缩文件内所包含的文件
-d<目录>指定文件解压缩后所要存储的目录

例:
unzip -l aaa.zip //显示aaa.zip中的文件

unzip -d bbb aaa.zip //将aaa.zip解压到bbb文件夹

bzip2/bunzip2:

使用新的压缩算法,压缩后的文件比原来的要小,但是花费时间变长。
若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始文件。

bzip2 [参数选项] 文件 //压缩
bunzip2[参数选项] 文件 //解压

dd:文件拷贝

dd if=输入文件名 of=输出文件名
if=文件名:输入文件名,缺省为标准输入。即指定源文件。
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数

sed:根据正则表达式对文件进行操作

a       在当前行后添加一行或多行
c       用新文本修改(替换)当前行中的文本
d       删除行
i       在当前行之前插入文本
l       列出非打印字符
p       打印行
n       读入下一输入行,并从下一条命令而不是第一条命令处理
q       结束或退出sed
!       取反
s       用一个字符串替换另一个字符串
      s 替换标识
      g 全局替换
      i 忽略大小写
r       从文件中读
w       将行写入文件
y       将字符转换成另一字符(不支持正则表达式)
h       把模式空间里的内容复制到暂存缓冲区

-e      允许多项编辑
-f      指定sed脚本文件名
-n      取消默认的输出
-i      inplace 直接修改
-r      支持扩展元字符


示例:
# sed ''  passwd (这里将passwd中的内容放到模式空间处理,因为没有执行任何命令,所以原封不动的返回值)
# sed 'd' passwd  (读到每一行都执行删除的操作,所以不返回任何值)
# sed '1,9d' passwd  (读1-9行的内容,然后删除,最后输出的就只剩第十行)
# sed -r 'p' passwd  (内容会重复两次,因为到模式空间处来会打印一次。然后print会再打印一次)
# sed -rn 'p' passwd (以静默的方式显示,进入模式空间被命令处理过的可以输出,原先内容就不输出)
# sed -rn '/root/p' passwd (打印带root的行)
# sed -rn '/^[rot]/p' passwd (打印包含r,o,t开头的行)
# sed -rn '/^[^root}/p' passwd (打印不包含以r,o,t开头的行)
# sed -r 's/root/alice/' passwd  (替换root为alice,只替换了每行第一个)
# sed -r ’s/root/alice/g‘ passwd  (全局替换,都改)
# sed -r 's#/sbin/nologin#/bin/ok#' passwd    (使用#号或者@也可以,一般是带有/的 替换目录之类的操作,看起来更清晰)

网络管理:

ifconfig:

ifconfig [参数选项] //显示或配置网络设备的命令

例:
ifconfig //显示激活网卡信息
ifconfig ens37 down //关闭网卡
ifconfig ens37 up  //启动网卡
ifconfig ens37 192.168.23.199 //配置ip地址
ifconfig ens37 192.168.23.133 netmask 255.255.255.0 //配置ip地址和子网掩码

ping:

ping [参数选项]  //检测是否与主机连通

参数选项:
-c<完成次数>设置完成要求回应的次数

netstat:显示网络状态

netstat [参数选项] //显示网络状态

参数选项:
-a 显示所有连线中的Socket
-n 禁止使用域名解析功能。链接以数字形式展示,而不是通过主机名或域名形式展示
-o 显示计时器
-i 显示网卡列表

磁盘管理

lsblk:

lsblk //列出磁盘的使用情况
lsblk -f //显示系统情况

df:

df[参数选项] //显示目前在linux系统上,硬盘的使用情况

参数选项:
--total 显示所有信息
-h 换算成KB,MB,GB等形式进行展示(方便阅读)

mount/unmount:

“挂载点”的目录需要以下几个要求:
目录事先存在,可以用mkdir命令新建目录;
挂载点目录不可被其他进程使用到;
挂载点下原有文件将被隐藏。

例:
mkdir 文件夹 //创建文件夹
mount -t auto /dev/cdrom 文件夹 //开始挂载
unmount 文件夹 //卸载

losetup:可以将文件或者block device与loop device关联、分离以及查询loop device的当前状态。循环设备可把文件虚拟成块设备(block device),借以模拟整个文件系统,让用户能使其为硬盘光驱或软盘等设备、并挂载(mount)来使用。losetup可用于文件块或者loop device的连接或者设置。

losetup [ -e encryption ] [ -o offset ] loop_device file
losetup [ -d ] loop_device
-a 显示所有循环设备的状态。
-d 卸除设备。
-e <加密选项> 启动加密编码 。
-f 寻找第一个未使用的循环设备。
-o <偏移量>设置数据偏移量,单位是字节。

mkfs:磁盘格式化

mkfs [tab] [tab]:按下两下tab键查看系统支持哪些文件系统的格式化功能
mkfs -t [文件系统格式名] 等同于mkfs.文件系统格式名
mkfs -t xfs 与 mkfs.xfs相同

mkfs.xfs:创建xfs文件系统
参考地址

du:计算出单个文件或者文件夹的磁盘空间占用

查看占用磁盘空间最大的前10个文件或者文件夹

du -a /var | sort -n -r | head -n 10

下载软件

yum:

在这里插入图片描述

yum -y install tree
yum remove tree

yum list tom*//查找名字以tom开头所有的软件

yum源:
在这里插入图片描述

面试题

linux命令,一个日志文件中,有很多行http请求日志,每一行数据是这样的[姓名 状态码 账号],问如何获取状态码为404的用户账号。

grep " 404 " logfile.log | awk '{print $3}'

首先使用grep来过滤出包含“404”的行,然后使用awk来提取每行的第三列(即账号),并打印输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值