Linux基础命令(16-30)

目录:

  1. egrep 支持扩展正则表达式的grep命令
  2. head 查看文件的前N行
  3. tail 查看文件的后N行
  4. alias 查看和设置别名
  5. unalias 取消别名
  6. seq生成序列
  7. sed 流编辑器,实现对文件的增删改查
  8. awk过滤,输出内容
  9. rmdir 删除空目录
  10. tree 显示目录树
  11. man 帮助命令
  12. –help 简单的帮助命令
  13. uname查看系统
  14. stat详细查看文件和目录的信息
  15. rz接收命令

egrep 支持扩展正则表达式的grep命令

与grep类似
主要参数:
-v 排除内容
–color=auto 对过滤的字符串加颜色
-i 不区分大小写
-o 只显示匹配到的内容
-B 除了显示匹配的一行之外,并显示该行之前的N行
-A 除了显示匹配的一行之外,并显示该行之后的N行
-C 除了显示匹配的一行之外,并显示该行之前后各N行

示例:

egrep -v jeff jeff.txt
egrep -w “oldboy” jeff.txt

head 查看文件的前N行

主要选项:
-n 后面接数字,表示查看前几行(也可以不加)
注意:head默认查看10行
示例:

head -5 /etc/passwd

tail 查看文件的后N行

主要选项:
-n 后面接数字,表示查看几行(也可以不加)
-f(循环读取)监视filename文件的尾部内容(默认10行,相当于增加参数-n 10)
刷新显示在屏幕上,退出按下ctrl+c
注意:tail默认查看10行

示例:

[root@localhost ~]# tail -f /var/log/lastlog

回到目录


alias 查看和设置别名

查看别名,直接输入alias。
设置别名:alias cp='cp -i'
	    alias rm='echo “this command does not allow to ues”'
别名的配置文件:/etc/profile或者/etc/bashrc 全局生效
		    ~/.bashrc  #当前用户生效

unalias 取消别名

示例:

unalias cp 

seq生成序列

编写shell时需要
主要选项:
-s 指定分隔符
-w 输出同宽数列,不足的位数用0补齐

示例:

seq -s : 10
1:2:3:4:5:6:7:8:9:10

seq 100 >jeff.txt
cat jeff.txt 
1
2
....100

sed 流编辑器,实现对文件的增删改查

编辑命令:
d:删除 #sed ‘2,3’d /etc/passwd
p:打印输出
a:在行后面追加文本,支持使用\n实现多行追加
i:在行前面插入文本,支持使用\n实现多行插入
c:把匹配到的行替换为此处指定的文本
w:保存模式空间匹配到的行至指定的文件中
r:读取指定文件的内容至当前文件被模式匹配到的行后面并且文件合并
!:条件取反
s///:查找替换,其分隔符可自行指定,常用的有s@@@,s###等
替换标记:g 全局替换
主要选项:
-n 取消默认输出,把我想输出的内容输出到屏幕上
-i 修改文件内容并且会破坏软链接和硬链接
-e 多项编辑
-f 每行一个编辑命令
-r 支持使用扩展正则表达式

示例:

[root@localhost ~]# sed -n '20,30'p /etc/passwd  #打印20-30行内容
[root@localhost ~]# sed -i "s#jeff#jeff1#g" jeff.txt  #将jeff替换为jeff1全局替换

注意:

  1. sed 's#内容#替换的内容#g jeff.txt
  2. sed里面有小p,前面必须接参数-n

回到目录


awk过滤,输出内容

在这里插入图片描述
区域:
$就是取什么什么引用 $1 表示第一列,$2 第二列,依次类推。但是 0 表 示 整 行 F S = = 区 域 分 隔 符 , 默 认 是 空 格 R S = = 每 个 记 录 读 入 的 时 候 的 分 隔 符 ( 行 的 结 束 标 识 ) N R = = 行 号 , 记 录 的 数 。 N F = = N F 表 示 记 录 中 的 区 域 ( 列 ) 数 量 , 0表示整行 FS==区域分隔符,默认是空格 RS==每个记录读入的时候的分隔符(行的结束标识) NR==行号,记录的数。 NF==NF表示记录中的区域(列)数量, 0FS==RS==NR==NF==NFNF表示取最后一列
awk默认以空格为分隔符
BEGIN模块在awk读取文件之前就执行,一般用来定义我们的内置变量(预定义变量:FS,RS)
END模块就是END在awk读取完所有文件的时候,再执行END模块,一般用来输出一个结果(累加,数组的结果)
awk编程思想:
1.先处理,最后再END模块输出
2.BEGIN模块用于awk内置变量FS,RS的赋值,在awk执行前
3.END模块用来最后输出,统计信息
awk几种运算表达式:a=a+1或者a++ a=a+2或者a+=2 a+=$0
主要参数:-F 指定分隔符 比如说指定:为分隔符,那么:相当于一把菜刀,把数据切成一块一块,这个就是-F的作用
在linux里面==等于等号。一个=在linux里面相当于赋值

示例:

[root@localhost ~]# awk 'NR>19 && NR<31' jeff.txt   #输出20-30行

[root@localhost ~]# awk 'NR==20,NR==30' jeff.txt  #输出20-30行

# 以:为分隔符,取第一行的第六列
[root@localhost ~]# awk -F ":" 'NR==1 {print $6}' /etc/passwd

# 以:为分隔符,取第一到第十行的第3、5、7列
[root@localhost ~]# awk -F "[:]+" 'NR==1,NR==10 {print $3,$5,$7}' /etc/passwd

# 通过管道传入
cat /etc/passwd|awk -F "[ :]+" 'NR==10,NR==20 {print $3}'

awk 'BEGIN{RS=":"} {print NR,$0}' passwd 
awk 'BEGIN{RS=":"} {print NR,$0}' passwd 
awk 'BEGIN{RS="[:/0-9 |\n]+"}{print $0}' passwd | sort | uniq -c | sort -rn 统计单词数
awk -F "[ /]+" '$1~/^(ftp|http|ssh)$/{print $1,$2}' /etc/services 
awk -F "[:]+" '$3>15{a=a+1}END{print a}' awkfile.txt 
awk 'BEGIN{oldboy["a"]="xujun";olboy["b"]="xiaoyu";oldboy["c"]="wo"
awk '{print NR,$0}' xujun.txt

print oldboy["a"]
print oldbot["b"]
print oldboy["c"]}' 这个案列引用了数组的概念:
1.awk数组的元素名(苹果名)可以是字符串
2.字符串要使用双引号引起来

echo oldboy{01..10}|xargs -n 1|awk '{print "echo "$0" >>/tmp/oldboy.txt && useradd "$0" && pa=$(mkpasswd|cut -c 1-5) && echo $pa|passwd --stdin "$0"|echo $pa >>/tmp/oldboy.txt"}'|bash 批量创建用户和随机密码
awk -F "[: ]+" '/Dan/{print $5}' reg.txt  已Dan开头的行,并且匹配第五列
awk -F "[ :]+" '$3~/^138/{print $1,$3}' reg.txt 已138开头的手机号码,取人的名字和号码(这里的~表示匹配的意思)
awk -F "[ :]+" '$3!~/^138/{print $1,$2":"$3}' reg.txt 匹配不已138开头的手机号码和人的名字
awk -F "[ :]+" '!/138/{print $1,$2":"$3}' reg.txt 匹配不已138开头的手机号码和人的名字
awk -F "[ :]+" '$1~/C|E/{print $1,$2}' reg.txt  已C或E开头的人名
awk -F "[ :]+" '$3~/(1|5)$/{print $1,$2}' reg.txt 已结尾为1或者5的手机数字,然后取对应的人名
awk 'NR==2||NR==3||NR==9{print NR,$0}' jeff.txt或者awk 'NR==2;NR==3;NR==9{print NR,$0}' jeff.txt
     2 bin:x:1:1:bin:/bin:/sbin/nologin
     3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
     9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 取第二行,第三行,第九行
awk 'BEGIN{a="abcd";print a}' awk中字母会被认为是变量,如果真的要给一个变量赋值,使用双引号
awk '/^$/{i=i+1}END{print i}' /etc/services  统计空行数量
seq 100|awk '{s=s+$0}'END'{print s}'
awk 'BEGIN{oldboy["a"]="oldgirl";oldboy["b"]="jeff";oldboy["c"]="oldbaby"

for(police in oldboy)
print police,oldboy[police]
}'
a oldgirl
b jeff
c oldbaby (awk数组)

awk -F "[/]+" '{ceshi[$2]=ceshi[$2]+1}'END'{for(police in ceshi)print police,ceshi[police]}' ceshi.txt  (数组)
mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3

awk '{a[$1]+=$2}END{for(i in a)print i,a[i]}' shuzu.txt  “a[$1]=a[$1]+$2”=”a[$1]+=$2”

awk小结:

  1. NR行号,存放着每个记录的号,读取新行时候自动+1
  2. RS是输入数据的记录的分隔符,简单理解就是可以指定每个记录的结尾标志
  3. 用RS替换\n
  4. RS作用就是表示一个记录的结束
  5. FS标识着每个区域的结束
  6. awk只有模式(条件)的时候,会默认输出整行($0)
  7. $1/正则表达式-开始/,$3/正则结束/ 行,记录
  8. awk中字母会被认为是变量,如果真的要给一个变量赋值,使用双引号

回到目录

rmdir 删除空目录

主要选项:-p 删除某目录后,如果其父目录为空,则一并删除
示例:

[root@localhost ~]# rmdir -p jeff1/jeff2

tree 显示目录树

主要选项:
-a 显示所有文件和目录
-d 只显示目录
-L 后面接上数字,表示只显示几层树结构
-f 为每个文件和目录显示完整的路径
-F 可以用来区分文件和目录
-i 不以阶梯状列出文件或目录名称

示例:

[root@localhost ~]# tree -d -L 1 /etc  # 只显示一层目录

man 帮助命令

当要搜索某个关键字的时候,输入/,然后在输入关键字搜索
其中n这个快捷键是向下翻所查找的关键字的内容,大写N是向上查找
示例:

man cp

–help 简单的帮助命令

示例:

cp --help

回到目录

uname查看系统

主要选项:
-m 查看系统是几位操作系统
-r 查看系统的内核版本
-a 查看详细的系统内核版本和系统的操作系统

示例:

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

stat详细查看文件和目录的信息

示例:

[root@localhost ~]# stat jeff.txt 
  File: ‘jeff.txt’
  Size: 292       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 74023944    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-12 17:01:24.613827956 +0800
Modify: 2019-06-12 17:01:19.805885585 +0800
Change: 2019-06-12 17:01:19.805885585 +0800
 Birth: -

rz接收命令

假如系统里面没有这个命令,则使用yum install lrzsz -y来安装次命令
主要参数:-y 覆盖
示例:

直接输入rz

注意:新版的xshell支持直接从windows把文件拖进xshell里,但是前提必须安装了rz

回到目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值