linux day10 三剑客初识以及文件类型

一、grep命令

1.语法

grep [OPTION]... PATTERN [FILE]...
命令	选项		 内容		文件

2.作用:

过滤关键字,并且把关键字所在行打印出来

3.简单应用

#过滤出shi.txt中,含有卧槽的行打印出来
[root@Centos7 ~]# grep '卧槽' shi.txt 
卧槽
一句卧槽风好大。

|:管道符:
	作用:将管道符前面的内容作为标准输出交给管道符后面的命令作为标准输入
		将管道符前面命令执行的结果,交给管道符后面的命令进一步处理
		
^:  以.....开头
$:	以.....结尾

#过滤出shi.txt中,以弯字开头的行
[root@Centos7 ~]# grep '^弯' shi.txt 
弯弓射大雕,

#过滤出shi.txt中,以。号结尾的行
[root@Centos7 ~]# grep '。$' shi.txt 
本想吟诗赠天下。
一句卧槽风好大。
就这么地吧。
清明上河图。
造血干细胞。

#正则简单的使用
#过滤有小写字母的行
[root@Centos7 ~]# grep '[a-z]' shi.txt 
My name is Qiu Dao
This year 250
Very narcissistic
Very lustful
Don't like bathi

#过滤有大写字母的行
[root@Centos7 ~]# grep '[A-Z]' shi.txt 
My name is Qiu Dao
This year 250

#过滤大小写所有字母所在的行,大写不能在前
[root@Centos7 ~]# grep '[A-z]' shi.txt 
grep: Invalid range end
[root@Centos7 ~]# grep '[a-Z]' shi.txt 
My name is Qiu Dao
This year 250
very narcissistic
very lustful
don't like bathi

4.grep常用参数

-n: 过滤文件内容,并且打印出行号
-o: 只显示过滤的内容,不显示其他内容
-i: 不区分大小写
-v: 取反,反向取值,排除
-w: 精确匹配(取值的内容前后没有字符时可以匹配)
-A(after): 查找关键字以下多少行的内容
-B(before): 查找关键字以上多少行的内容
-C(center):	查找关键字以上和以下各多少行的内容
-r:	递归
-E: 扩展正则(过滤多个关键字)   #等于 egrep 命令

二、sed命令

1.作用

过滤数据,使用最多的情况时替换数据

2.常用参数

-n: 取消默认输出
p:	打印行,可以指定行数
d: 	过滤,排除

#打印第一行数据
[root@Centos7 ~]# sed -n '1p' shi.txt 

#打印指定行,打印第一行和第四行
[root@Centos7 ~]# sed -n '1p;4p' shi.txt

#打印指定行,打印第一行到第四行
[root@Centos7 ~]# sed -n '1,4p' 1.txt

#过滤内容
[root@Centos7 ~]# sed -n '/10/p' 1.txt 

#默认输出排除指定字符
[root@Centos7 ~]# sed '/i/d' shi.txt

#默认输出,排除第一行数据
[root@Centos7 ~]# sed '1d' shi.txt

#默认输出,排除第一行和第四行
[root@Centos7 ~]# sed '1d;4d' shi.txt

#默认输出,排除第一行到第四行
[root@Centos7 ~]# sed '1,4d' shi.txt

3.替换

#在输出内容时进行替换
[root@Centos7 ~]# sed 's#250#38#g' shi.txt

#修改文件中内容,不会打印出来
[root@Centos7 ~]# sed -i 's#250#38#g' shi.txt

三、awk命令

1.作用

擅长取列的数据

2.用法

#取第一行数据
[root@Centos7 ~]# awk 'NR==1' shi.txt

#取第一行数据和第四行数据
[root@Centos7 ~]# awk 'NR==1;NR==4' shi.txt

#取第一行数据到第四行数据
[root@Centos7 ~]# awk 'NR==1,NR==4' shi.txt

#过滤指定内容
[root@Centos7 ~]# awk '/卧槽/' shi.txt

#取反
[root@Centos7 ~]# awk '!/卧槽/' shi.txt

#取列
[root@Centos7 ~]# awk -F ':' '{print $1}' passwd

awk			#命令
-F			#指定分隔符
':'			#分隔符
'{print $1}'	#打印内容
passwd		#文件名字

3.取IP

#方法一:
[root@Centos7 ~]# ifconfig eth0 | awk 'NR==2 {print $2}'
10.0.0.100

#方法二:
[root@Centos7 ~]# ip a | grep 10.0.0.100 | awk -F '[ ,/]+' '{print $3}'
10.0.0.100

四、Linux文件属性及类型

1.查看文件

[root@Centos7 ~]# ll error.txt 
-rw-r--r-- 1 root root 21121 Jun 22 15:24 error.txt

[root@Centos7 ~]# ll -d dev
drwxr-xr-x 2 root root 24 Jun 22 15:35 dev

d			#文件类型
rwx r-x r-x  #权限				r:读权限	w:写权限  x:执行权限
2 			#硬连接数
root		#属主
root		#属组
24			#文件的大小
Jun 22		#日期
15:35 		#时间
dev			#目录名字

2.文件类型

#经常接触
-   普通文件(文本, 二进制, 压缩, 图片, 日志等) 
d   目录文件 dir directory
s   安全 套接字文件, 进程间通信(socket)
l   链接文件

#不经常接触
b   设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c   设备文件(字符设备)打印机,终端 /dev/tty1, /dev/zero
p   管道文件  pipe

[root@zls ~]# ll -d /etc/hosts /tmp /bin/ls  /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x.  1 root root 117656 Jun 30  2016 /bin/ls
srw-rw-rw-.  1 root root      0 Jan 20 10:35 /dev/log
brw-rw----.  1 root disk   8, 0 Jan 20 10:36 /dev/sda
crw--w----.  1 root tty    4, 1 Jan 20 10:36 /dev/tty1
lrwxrwxrwx.  1 root root     22 Jan 13 11:31 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--.  1 root root    199 Jan 20 11:03 /etc/hosts
prw-------.  1 root root      0 Jan 20 10:36 /run/dmeventd-client
drwxrwxrwt. 61 root root   8192 Jan 21 13:01 /tmp

3.查看文件类型命令file

[root@zls ~]# file /etc/hosts
/etc/hosts: ASCII text

[root@zls ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped

[root@zls ~]# file /dev/sda
/dev/sda: block special

[root@zls ~]# file /dev/tty1
/dev/tty1: character special

[root@zls ~]# file /etc/grub2.cfg
/etc/grub2.cfg: broken symbolic link to `../boot/grub2/grub.cfg'

[root@zls ~]# file /home
/home: directory

[root@zls ~]# file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)

3.链接文件

#所有文件分为两部分
真实数据:文件里面写的内容就是真实数据
元数据:用来描述文件属性的数据,由计算机和命令决定的

block:真实数据存放空间		#df -h
inode:元数据存储空间		#df -i

1)软连接

当我们访问这个软链接文件时,其实就是在访问源文件的本身。
1.那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block。
2.那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。
3.如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。

软链接.png

2)软连接的应用场景

1)软件升级
2)代码发布
3)不方便移动的目录
4)数据回滚
5)程序读取

3)硬链接

若一个inode号对应多个文件名,则称这些文件为硬链接。换句话说,硬链接就是同一个文件使用了多个别名,如下图所示hard link就是file的一个别名,他们有共同的inode

硬链接.png

4)软连接和硬链接的区别

1)创建命令不同
    软链接:ln -s
    硬链接:ln
2)目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以
3)硬链接文件与源文件inode相同,软链接文件与源文件inode不同
4)删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
5)删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响
posted @ 2020-06-24 14:06  nick_xm  阅读(198)  评论(0编辑  收藏  举报