Linux命令强基
Hello,一只爱学习的鱼
本期带来linux命令强基,对于ls/pwd/chmod等基础命令,操作简单就略过,下面是我在学习linux命令汇总,命令在Ubuntu 20.4 lts虚拟机中可执行。
概述
1. grep/awk/sed
2. ps/top
1. grep/awk/sed
grep/awk/sed 可以对应 查找/分段/修改
在讲解命令时,我会以选项+命令+说明形式呈现
grep使用方法:[options] pattern file
-An grep -A2 var abc.txt 显示var一行及其后两行 -Cn grep -C2 var abc.txt/grep -2 var abc.txt 显示var一行及其前后两行 -Bn grep -B2 var abc.txt 显示var一行及其前两行 -c grep -c var abc.txt var在abc.txt中出现的次数 -o grep -o var abc.txt 只查找var并单行输出 -E grep -E 'var|bin' abc.txt 使用扩展正则表达式,在abc.txt文件中匹配var或bin,相当于执行egrep -z grep -o var -z abc.tar 先解包再搜索 -v grep -v var abc.txt 反向搜索 -R grep var -R --exclude='text.txt' 在当前目录下递归查询除text.txt的文件,内容含var --exclude --include grep var --include='abc.txt' 在当前目录下查询abc.txt文件,内容含var -L grep var -R -L 仅打印除含var文件的文件 -l(小写l) grep var -R -l 仅打印含var文件的文件 -I(大写i) grep var -RI 忽略二进制 -mn grep var -R -n -m2 仅显示前2个结果 -b grep -b var abc.txt 显示var第一个字符在文件中的编号 -r grep -r var /home/zhao -l 递归查询/home/zhao下含var的文件 -i grep -i "v" abc.txt 忽略大小写
awk使用方法:[options] ‘pattern{action}’ file
$0(内建变量) 完整的输入记录 $n(内建变量) 当前记录的第n个字段,字段右FS分隔,第一个FS前是$1 FS(内建变量) 字段分隔符,默认是任意空格 RS(内建变量) 记录分隔符,默认是一个换行符 -F awk -F '/' '{print $1,$2}' abc.txt 文件abc.txt中每行以字符/分隔,输出第一,第二字段(若要分隔符为\,则选项为 -F\\) awk -F'[/:]' '{print $1,$2}' abc.txt 多分隔符,文件abc.txt中每行以字符/或字符:分隔,输出第一,第二字段 -v awk -va=1 '{print $1, $(1+a)}' abc.txt 定义一个变量a=1 == awk '$1 == "bin" {print $1, $2}' abc.txt 过滤第一列等于bin的行,输出第一字段和第二字段 BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符 FILENAME 当前文件名 FNR 各文件分别计数的行号 FS 字段分隔符(默认是任何空格) NF 一条记录的字段的数目,最后一个变量 NR 已经读出的记录数,就是行号,从1开始 OFS 输出字段分隔符,默认值与输入字段分隔符一致。 ORS 输出记录分隔符(默认值是一个换行符) ARGC 命令行参数的数目 awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";\
>printf "---------------------------------------------\n"}\
>{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' abc.txt // awk '$1 ~ /re/ {print $2, $3}' abc.txt awk精准查询,空格作为分隔符,第一个变量是re IGNORECASE awk 'BEGIN{IGNORECASE=1} /this/' abc.txt 忽略大小写 ! awk '$2 !~ /th/ {print $2,$4}' log.txt 模式取反 -f awk -f cal.awk score.txt 执行cal.awk脚本,查找score.txt
sed [options] ‘command’ file(s)
-e sed -e 4a\newLine abc.txt 以选项中指定的script来处理输入的文本文件。 d sed '2,5d' abc.txt 将 abc.txt 的内容列出并且列印行号,同时,请将第 2~5 行删除! a sed '2a hhhhhhh' abc.txt 在文件abc.txt第二行后,亦即第三行加上hhhhhhh i sed '2i hhhhhhh' abc.txt 在文件abc.txt第二行前,亦即第二行加上hhhhhhh c sed '1,5c adfafsf' abc.txt 将文件1-5行的内容取代为adfafsf p sed '1,5p' abc.txt 列出文件1-5行 /p sed '/var/p' abc.txt 搜索文件中关键字var的行 -n sed -n '/bin/p' abc.txt 仅显示包含bin的行 /d sed '/bin/d' abc.txt 搜索并删除 /s sed -n '/bin/{s/bin/sbin/;p;q}' abc.txt 搜索bin,并将bin替换成sbin s///g sed 's/^.*var://g' abc.txt 搜索var并替换为空 -e sed - e '3,/4d' -e 's/bin/blue/g' abc.txt 多点编辑,删除第三行,包括第三行后的内容,将剩余的,bin替换为blue -i sed -i 's/\.$/\!/g' abc.txt 每一行以.结尾则转!,直接修改源文件 sed -i '$a This is a test' abc.txt $代表最后一行,文件最后新增This is a test
2. ps/top
ps:report a snapshot of the current processes.将当前进程做一个“快照”并显示
使用方法:ps目前有三个选项UNIX\BSD\GNU
ps axu【不建议使用ps -aux,因为它混淆了两个不同的标准,官方文档里有说明】
ps -ef 可以结合grep选择性查看某个进程信息
top:display Linux processes.显示linux进程
动态显示,类似Win下的任务管理器。界面可以输入交互命令,非常强大
按f键,然后可以选择要显示的字段
按c键,查看完整的命令字段COMMAND
按s键,设置界面刷新时间,默认3s
等等字段意思,文档也有说明,非常详细
ps和top命令,我在分享资料里有解说。其中top文档虽然基本上全是英文,但是它里面的交互命令占篇幅53%左右,不用慌
关注我的公众号(一只爱学习的鲤鱼)
回复:1226。即可获取“1226linux命令强基”的分享资料
最后,你的关注是我更新的最大动力,我们下期再见。