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命令强基”的分享资料

         

  最后,你的关注是我更新的最大动力,我们下期再见。

原文地址:https://www.cnblogs.com/carp/p/15732618.html