文件属性、链接、用户及正则表达式

一、

Linux文件属性

ls -lhi 每一列含义
文件类型
inode和block
软硬链接
用户
权限
相关命令:which 、whereis、date、find、tar、tr

1、文件属性简介

文件属性简介

2、inode和block

2.1 含义:

inode含义
inode index node 索引节点
inode号码相当于是我们每个人的身份证号码
inode空间
存放文件的属性信息(权限 所有者 大小 修改时间 硬链接数 文件类型)
block的位置
没有存放文件名:文件名不是文件属性

block含义:
存放数据库(文件的内容)

2.2关系:

查看一个文件file.txt背后与inode和block关系


inode与block关系
类型 inode block
文件 文件属性信息 文件内容
目录 目录信息 目录下面文件名字(文件名和inode对应关系)

2.3特点

inode

在同一个磁盘分区中是唯一的
每创建一个非空的文件就要占用inode和1个block

block

存放数据(文件内容)
block大小通常为4K(硬盘分区>500MB的情况下)
创建大文件10G,占用多个block
创建小文件1K,剩余空间将无法给别人使用。

2.4查看

inode 和block 数量是常见在磁盘分区(格式化)

查看block磁盘空间一共有多少,还剩多少

查看block

查看inode总数及使用情况

查看inode

3、软连接VS硬链接

3.1 链接文件的创建:

默认不带参数的情况,ln命令创建的是硬链接,带参数 -s的创建的是软链接。

3.2含义:

硬链接:在同一分区中inode节点号相同文件。
软连接:相当于windows中的快捷方式,存放源文件的位置,inode节点号与源文件不同。

3.3特点:

不能对目录创建硬链接,但可以创建软连接
软链接可以跨越文件系统,但硬链接不可以。

3.4源文件、软连接、硬链接的删除

1、删除软链接文件,对源文件及硬链接无任何影响;
2、删除硬链接文件,对源文件 及软连接文件无任何影响
3、删除链接文件的源文件,对硬链接文件无影响,会导致其软连接失效(红底白字闪烁)
4、同时删除源文件及其硬链接文件,整个文件才会被”真正“的删除

软连接和硬链接的区别

4、用户

分类 UID范围 说明
root 0 像皇帝一样
虚拟用户 (C7)1~999 (C6)1~499 满足每个进程要有一个用户和用户组 无法登陆
普通用户 (C7)1000以上 (C6)500以上 普通百姓

添加用户

[root@localhost ~]# useradd xiaoxi  

设置密码

[root@localhost ~]# passwd xiaoxi
Changing password for user xiaoxi.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.

切换用户

[root@localhost ~]# su xiaoxi
[xiaoxi@localhost root]$ whoami 
xiaoxi

whoami 命令是用来查看当前所登陆的用户是谁

用户切换命令关系图

删除用户

[root@localhost ~]# userdel -r xiaoxi
删除用户时 建议加上 -r 参数 否则不会删除家目录,当再次创建一模一样的用户时,会出现报错如下;

[root@localhost ~]# useradd xiaoxi
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists

用户相关文件

  • /etc/passwd 存放用户信息
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

一列:用户名称
二列:x表示密码占位符(密码配置文件存放在/etc/shadow)
三列:用户的UID(用户ID是唯一的,Linux中UID是用来判断权限)
四列:用户的GID(主组的GID)
五列:用户说明,相当于windows中的描述
六列:用户的家目录
七列:用户登录时使用的shell

  • /etc/group 用户组信息
    几乎不会用到
  • /etc/shadow 密码信息
[root@localhost ~]# cat /etc/shadow
root:$6$W7l84.hfZ92d/Xi.$lhJKODCm0wv7Dlu/y899QCPHYeZ64XEhr7.pGFO8RyfRl/ea8jYsltzUzxNzNasRgxaG/Yq.7UpCp.OBVtsft1::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:17998::::::
dbus:!!:17998::::::
polkitd:!!:17998::::::
tss:!!:17998::::::
abrt:!!:17998::::::
sshd:!!:17998::::::
postfix:!!:17998::::::
ntp:!!:17999::::::
xiaoxi:!!:18003:0:99999:7:::


一列:用户名称
二列:加密后的密码(采用SHA512散列算法加密,如密码位为“!!”or“*”表示没有密码)
三列:密码最后一次修改的时间(单位为天,以1970年1月1日为标准时间,每过一天加一天)
四列:限制两次密码修改的间隔时间(0表示不限制)
五列:密码有效期(99999表示永不过期)
六列:密码到期前警告天数
七列:密码到期宽限天数(0表示到期即失效,-1表示永不过期)
八列:账户失效时间(单位为天,以1970年1月1日为标准时间)
九列:未定义,备用列


  • /etc/gshadow 用户组密码
    几乎不会用到

5、权限

image.png

5.1 字母及含义

字母 含义
u user(所有者)
g group(所属组)
o other (其他人)
a ==u+g+o 表示所有

5.2 权限位中字母及数字含义

权限 全拼 数字 含义
- 0 没有权限
r read 4 读取权限
w write 2 写入权限
x excute 1 执行权限

5.3修改权限(chmod)
chmod change mode 修改权限

chmod命令的-R选项
chmod -R 777 /abc
-R 递归修改此目录及目录下所有的子文件和子目录的权限

方法1:数字

[root@localhost xiaoxi]# ll
total 0
-rw-r--r--. 1 root root 0 Apr 15 20:21 file1
-rw-r--r--. 1 root root 0 Apr 15 20:21 file2
-rw-r--r--. 1 root root 0 Apr 15 20:21 file3
[root@localhost xiaoxi]# chmod 777 file1
[root@localhost xiaoxi]# ll
total 0
-rwxrwxrwx. 1 root root 0 Apr 15 20:21 file1
-rw-r--r--. 1 root root 0 Apr 15 20:21 file2
-rw-r--r--. 1 root root 0 Apr 15 20:21 file3

方法2:字母

[root@localhost xiaoxi]# ll
total 0
-rw-r--r--. 1 root root 0 Apr 15 20:21 file1
-rw-r--r--. 1 root root 0 Apr 15 20:21 file2
-rw-r--r--. 1 root root 0 Apr 15 20:21 file3
[root@localhost xiaoxi]# chmod a+x file1
[root@localhost xiaoxi]# ll
total 0
-rwxr-xr-x. 1 root root 0 Apr 15 20:21 file1
-rw-r--r--. 1 root root 0 Apr 15 20:21 file2
-rw-r--r--. 1 root root 0 Apr 15 20:21 file3
[root@localhost xiaoxi]# chmod g+wx file2 
[root@localhost xiaoxi]# ll
total 0
-rwxr-xr-x. 1 root root 0 Apr 15 20:21 file1
-rw-rwxr--. 1 root root 0 Apr 15 20:21 file2
-rw-r--r--. 1 root root 0 Apr 15 20:21 file3
[root@localhost xiaoxi]# chmod o+w file3 
[root@localhost xiaoxi]# ll
total 0
-rwxr-xr-x. 1 root root 0 Apr 15 20:21 file1
-rw-rwxr--. 1 root root 0 Apr 15 20:21 file2
-rw-r--rw-. 1 root root 0 Apr 15 20:21 file3

6、命令:

6.1 which :查看命令的完整路径和别名(如果有别名的话)

[root@localhost ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

6.2 whereis:用于搜索程序名,和man说明文件

[root@localhost ~]# whereis date 
date: /usr/bin/date /usr/share/man/man1/date.1.gz

6.3 date:查看或修改时间

修改本地时间

[root@localhost dir]# date -s "20001001 19:30:00"
Sun Oct  1 19:30:00 CST 2000
[root@localhost dir]# 

+按照指定格式显示日期
%F = %Y-%m-%d

[root@localhost ~]# date +%F
2019-04-18
[root@localhost ~]#  date +%Y-%m-%d
2019-04-18
[root@localhost ~]# 

%T = %H:%M:%S

[root@localhost ~]# date +%T
17:49:07
[root@localhost ~]# date +%H:%M:%S 
17:49:36
[root@localhost ~]# 

%w 周几

[root@localhost ~]# date +%w
4

ntpdate自动同步时间:

根据网上的时间服务器同步本地时间

[root@localhost ~]# ntpdate ntp1.aliyun.com
18 Apr 17:42:08 ntpdate[7117]: adjust time server 120.25.115.20 offset 0.267318 sec

6.4 tar:打包压缩及解包解压缩

参数 释义
-c 创建打包文件
-v 显示过程
-z 压缩或解压缩(通过gzip的方式)
-f 指定压缩包
-x 解包
-t 查看压缩包的内容
-C 指定到解压目录
**用法:**

tar -zcvf file.tar.gz /dir/file 创建压缩包 file.tar.gz

[root@localhost dir]# tar -zcvf file.tar.gz file{01..05} 
file01
file02
file03
file04
file05
[root@localhost dir]# ll
total 4
-rw-r--r--. 1 root root   0 Apr 18 18:51 file01
-rw-r--r--. 1 root root   0 Apr 18 18:51 file02
-rw-r--r--. 1 root root   0 Apr 18 18:51 file03
-rw-r--r--. 1 root root   0 Apr 18 18:51 file04
-rw-r--r--. 1 root root   0 Apr 18 18:51 file05
-rw-r--r--. 1 root root 153 Apr 18 18:51 file.tar.gz

tar -tf file.tar.gz 显示压缩包内容

[root@localhost dir]# ll
total 4
-rw-r--r--. 1 root root   0 Apr 18 18:51 file01
-rw-r--r--. 1 root root   0 Apr 18 18:51 file02
-rw-r--r--. 1 root root   0 Apr 18 18:51 file03
-rw-r--r--. 1 root root   0 Apr 18 18:51 file04
-rw-r--r--. 1 root root   0 Apr 18 18:51 file05
-rw-r--r--. 1 root root 153 Apr 18 18:51 file.tar.gz
[root@localhost dir]# tar -tf file.tar.gz 
file01
file02
file03
file04
file05
[root@localhost dir]# 

tar -zxvf tar == tar -xf 解压并解包

(1)、解单个包

[root@localhost dir]# tar zxvf file.tar.gz file01 
file01
[root@localhost dir]# ls
file01  file.tar.gz
[root@localhost dir]# 

(2)、解压整包

[root@localhost dir]# tar -zxvf file.tar.gz 
file01
file02
file03
file04
file05
[root@localhost dir]# ls
file01  file02  file03  file04  file05  file.tar.gz
[root@localhost dir]# 

tar -xf file.tar.gz -C /opt 解压到 /opt 中

[root@localhost dir]# tar -zxvf file.tar.gz  -C /opt/
file01
file02
file03
file04
file05
[root@localhost dir]# ls /opt/
file01  file02  file03  file04  file05
[root@localhost dir]# 

用tar 命令配合 /dev/urandom 取随机数


#6.5  find 命令
##格式 : find /path option
**查找条件**         
option(选项、参数)|释义
:---: |:---:
-name | 以文件名查找
-iname| 以文件名查找(不区分大小写)
-type  | 以文件类型查找
-size  |  文件大小查找 (KB、MB、G) (-1M 小于1M)(+1M 大于1M)
-mtime -1 | 最近1天修改过
-inum|找出与指定inode号码一样的文件
-samefile| 找出与给定文件inode号码相同的文件
-user   |找属主为指定用户的文件:
  -group    |找属组为指定用户的文件:
 -uid   |据文件的UID进行查找
-gid    |据文件的gid 进行查找
-nouser |找没有属主的文件
-nogroup    |找没有属组的文件 

**1)、根据文件名查找**
    -name “文件名称” 
    -iname “文件名” //不区分字母大小写
**2)、根据文件类型进行查找(-type)**
-type |代表类型
:---: | :---:       
 f|普通文件
d|目录文件
l|符号链接文件
s|套接字文件
b|块儿设备文件
c|字符设备文件
p|管道文件

###示例
**1、以文件类型和文件名查找**
```html
[root@localhost dir]# find /dir/ -type f -name "file01"
/dir/file01
[root@localhost dir]# 

2、以inode号查找

[root@localhost dir]# find /dir/ -inum 16777900
/dir/file01
[root@localhost dir]# 

3、查找与给定文件inode号码相同的文件

[root@localhost dir]# find /dir/ -samefile /dir/file01 
/dir/file01
/dir/file.hart

6.6 alias 别名命令

1、查看别名

[root@localhost dir]# alias 
alias cls='clear'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

2、设置别名
设置别名格式
alias mv='mv -i'
alias 昵称='命令'

[root@localhost dir]# alias cls='clear'
[root@localhost dir]# alias cls
alias cls='clear'
[root@localhost dir]# 

3、永久设置别名

[root@localhost ~]# tail -n 1 /etc/profile
alias cls='clear'
[root@localhost ~]# 

6.7 tr 命令 做替换使用

常用参数 注释
-d 删除
-c 取反
[root@localhost tmp]# cat 1.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@localhost tmp]# tr 'a-z' 'A-Z' <1.txt 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
使用 -d参数
[root@localhost tmp]# cat 1.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 2 3 4 5 6 7 8 9
[root@localhost tmp]# tr -d '[0-9]' <1.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z      
[root@localhost tmp]# 
使用 -c 参数 ,配合-d参数使用,不然会报错
[root@localhost tmp]# cat 1.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 2 3 4 5 6 7 8 9
[root@localhost tmp]# tr -cd 'a-z'\ <1.txt   #意为除了a-z以外的都删除
a b c d e f g h i j k l m n o p q r s t u v w x y z        [root@localhost tmp]# 

二、

特殊符号与正则表达式

特殊符号
管道
单引号 双引号 不加引号区别
正则
老三 grep

1、特殊符号

特殊符号 作用
!# 调用历史中第#条命令(#表示数字)
!ls 调用历史中最近一个以ls开头的命令
!! 上一条命令
\ 强制换行
* 匹配任意数量的任意字符
匹配单个任意字符
[ ] 对范围做匹配
{ } 生成序列
> 标准输出重定向,用1表示,完整命令command file 1>file2,使用过程中可将1省略。
>> 标准输出追加重定向
< 标准输入重定向用0表示,举例:cat <0 /etc/passwd,cat等查看文件的命令默认就是使用了标准输入,只不过省略了。
<< 标准输入追加重定向
2> 错误输出重定向,[test @test test]# ls -al 1> list.txt 2> list.err
2>> 错误输出追加重定向[test @test test]# ls -al 1> list.txt 2>> list.err
2&>1 合并输出重定向,command > /path/file 2> &1
2&>>1 合并输出追加重定向,command > /path/file 2> &1

| 注释

# 标准输入用法举例:
EOF是END Of File的缩写,表示自定义终止符。
既然自定义,那么EOF就不是固定的,可以随意设置别名。
在linux按ctrl-d就代表EOF。
EOF一般会配合cat能够多行文本输出.
[root@localhost ~]#  cat <<EOF >1.txt  
2
2
2
2
2 
EOF

2管道 |

命令1 | 命令2
把命令1结果 通过管道传递给 命令2使用

[root@localhost ~]# cat /etc/passwd | head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

3、单引号 双引号 不加引号区别 反引号

' ' 单引号所见即所得

" " 双引号和单引号类似 里面的特殊符号会被解析(运行) $ ' '

不加引号 和双引号类似,但是可以使用{}
反引号 ` ` == $( 命令 ) 优先执行命令

4、正则表达式 经常用于三剑客、Python、Go

正则表达式元字符

元字符 释义
[:digit:] 匹配任意数字,相当于[0-9]
[:lower:] 匹配任意小写字符,相当于[a-z]
[:upper:] 匹配任意大写字符,相当于[A-Z]
[:alpha:] 匹配任意大小写字符
[:alnum:] 匹配任意数字或字母
[:space:] 匹配空格
[:punct:] 标点符号

正则表达式次数匹配

符号 释义
[ ] 匹配任意指定范围内的任意单个字符
[^] 匹配任意指定范围外的任意单个字符
* 匹配*号前的所有字符0次或多次;
. 点,匹配任意字符
.* 匹配任意长度的任意字符,这两个才相当于命令行中的*
+ 匹配前一个字符至少一次,至多不限
{m} 匹配前面的字符m次。m是数字
{m,n} 匹配前面的字符至少m次至多n次,m,n都是数字

正则表达式位置锚定:

符号 释义
^ 锚定行首,用于模式的最左侧
$ 锚定行尾,用于模式的最右侧
^patter$ 用于匹配模式正行
^$ 空行,(表示什么都没有,有空白字符也不能算空行)
<或\b 词首锚定,用于单词最左侧
>或\b 词尾锚定
<patter> 匹配整个单词

5、 grep命令

作用:文本搜索工具(支持正则表达式BRE)
常用选项
-v      不能被匹配到的(按照正行取反,中间有多余字符则不能匹配)
-n      显示匹配到的行号
-i      忽略字符大小写
-o      详细显示仅匹配到的
-q      静默模式,不输出任何信息
[root@localhost ~]# grep -n '^root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# 


find 与 | 配合使用

find +|xargs 管道前面的文字符号通过|xargs 处理变成参数(文件名)

#find习题:

方法1
find /dir/ -type f -name "*.txt"|xargs ls -l

[root@localhost dir]# find /dir/ -type f -name "*file01"|xargs  ls -l    
-rw-r--r--. 2 root root 0 Apr 18  2019 /dir/file01

方法2
ls -l $(find /opt -type f -name "file01")
ls -l `find /dir/ -type f -name "file01"`

[root@localhost dir]#  ls -l  `find /dir/ -type f -name "file01"`
-rw-r--r--. 2 root root 0 Apr 18  2019 /dir/file01
[root@localhost dir]#  ls -l   $(find /opt -type f -name "file01")
-rw-r--r--. 1 root root 0 Apr 18  2019 /opt/file01
[root@localhost dir]# 

方法3
find /dir/ -type f -name "*" -exec ls -l {} \ ;

[root@localhost tmp]# find /dir/ -type f -name "*"  -exec ls -l {} \;
-rw-r--r--. 1 root root 153 Apr 18 18:51 /dir/file.tar.gz
-rw-r--r--. 2 root root 0 Apr 18 18:51 /dir/file01
-rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file02
-rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file03
-rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file04
-rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file05
-rw-r--r--. 2 root root 0 Apr 18 18:51 /dir/file.hart
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 老男孩Linux运维第一阶段58期综合考试题 [笔试考试试题(总满分64分,每题4分) 在11月内,每天早上6点到...
    福娃_60ea阅读 962评论 0 0
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,831评论 0 9
  • 一个基本的计算机系统由“硬件”和“软件”组成,一台Linux设备,主要的组成如下图所示: 一般情况下,我们所说的L...
    时待吾阅读 5,623评论 0 16
  • 常用操作以及概念 求助 –help 指令的基本用法与选项介绍。 man man 是 manual 的缩写,将指令的...
    Fellers阅读 3,237评论 0 3
  • 一、常用操作以及概念快捷键求助关机PATHsudo包管理工具发行版VIM 三个模式GNU开源协议 二、磁盘HDD磁...
    为心莳萝阅读 1,495评论 0 0