美文网首页
老男孩教育60期-Linux文件属性-特殊符号系列-v2

老男孩教育60期-Linux文件属性-特殊符号系列-v2

作者: 李导996 | 来源:发表于2019-04-15 17:16 被阅读0次

运维学习交流群-点我加群:598972270

零.今日课程内容目录

Linux文件属性

ls -lhi 每一列含义
文件类型
inode和block
软硬链接
用户
权限

文件属性相关命令

which
find
whereis
tar
date

特殊符号与正则表达式

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

一. 文件属性简介

老男孩教育-Linux文件属性-ls -lhi-v2-2019年4月8日.jpg

二.inode和block

1.含义

inode

inode index node 索引节点
inode号码相当于是我们每个人的身份证号码
inode空间

存放文件的属性信息(权限 所有者 大小 修改时间 硬链接数 文件类型)
block的位置
没有存放文件名

block

block 数据块 存放数据(文件内容)

2.关系

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

老男孩教育-查看文件内容过程 cat oldboy.txt (inode和block).jpg
类型 inode block
文件 文件属性信息 文件内容
目录 目录属性信息 目录下面文件名字(文件名和inode对应关系)

3.特点

inode

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

block

存放数据(文件内容)
block 4k(磁盘分区大于500MB)
创建大文件10G,占用多个block
创建小文件1k, 剩余的空间将无法给别人使用。

4.查看

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

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

[root@oldboyedu60-lnb ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        99G  1.6G   98G   2% /
devtmpfs        981M     0  981M   0% /dev
tmpfs           992M     0  992M   0% /dev/shm
tmpfs           992M  9.6M  982M   1% /run
tmpfs           992M     0  992M   0% /sys/fs/cgroup
/dev/sda1       197M  102M   95M  52% /boot
tmpfs           199M     0  199M   0% /run/user/0

查看inode总数

df -i 

软硬链接区别

  1. 如何创建:

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

  1. 含义:

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

  1. 特点:

a) 不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到
b) 软链接可以跨文件系统,硬链接不可以跨文件系统。

  1. 怎么没的(源文件,软链接,硬链接与删除)

a) 删除软链接文件,对源文件及硬链接文件无任何影响;
b) 删除文件的硬链接文件,对源文件及软链接文件无任何影响;
c) 删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
d) 同时删除源文件及其硬链接文件,整个文件才会被"真正"的删除。

老男孩教育-软硬链接区别-v2019.jpg

文件属性命令

which

find

[root@oldboyedu60-lnb oldboy]# find /oldboy/   -type f   -name "oldboy.txt"
/oldboy/oldboy.txt

找出以.txt结尾的文件

find /oldboy/   -type f   -name "*.txt"

-inum 和-samefile 了解即可
-inum找出与指定inode号码一样的文件
-samefile 找出与给定文件inode号码相同的文件


[root@oldboyedu60-lnb oldboy]# ll -i  oldboy.txt
202049772 -rw-r--r--. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# find /oldboy/ -inum 202049772
/oldboy/oldboy.txt.hard
/oldboy/oldboy.txt
[root@oldboyedu60-lnb oldboy]# find /oldboy/ -samefile  /oldboy/oldboy.txt
/oldboy/oldboy.txt.hard
/oldboy/oldboy.txt

tar

windows :winrar 压缩
Linux: tar 打包压缩

创建压缩包

tar zcf /tmp/etc.tar.gz /etc/

z 通过gzip软件进行压缩 .tar.gz tar打包 gzip 压缩
c create 创建包
v verbose 显示过程
f 指定压缩包

查看

t list 显示压缩包内容
tar tf /tmp/etc.tar.gz

解压

x extract 解压
tar xf /tmp/etc.tar.gz

解压到指定目录

tar xf /tmp/etc.tar.gz -C /opt

tar小结.png

【巨坑】tar让你迷茫的提示: Removing leading `/' from member names

【巨坑】tar让你迷茫的提示: Removing leading `/' from member names

解压压缩包中指定的文件或目录

tar zcf /tmp/etc.tar.gz   /etc 
[root@oldboyedu60-lnb opt]# ll
total 0
[root@oldboyedu60-lnb opt]# pwd
/opt
[root@oldboyedu60-lnb opt]# tar xf /tmp/etc.tar.gz   etc/hosts  etc/fstab etc/sysconfig/
[root@oldboyedu60-lnb opt]# tree 
.
└── etc
    ├── fstab
    ├── hosts
    └── sysconfig
        ├── anaconda
        ├── authconfig
        ├── cbq
        │   ├── avpkt
        │   └── cbq-0000.example
        ├── console
        ├── cpupower
        ├── crond
        ├── ebtables-config
        ├── firewalld
        ├── grub -> /etc/default/grub
        ├── init
        ├── ip6tables-config
        ├── iptables-config
        ├── irqbalance
        ├── kdump
        ├── kernel
        ├── man-db
        ├── modules
        ├── netconsole
        ├── network
        ├── network-scripts
        │   ├── ifcfg-eth0
        │   ├── ifcfg-lo
        │   ├── ifdown -> ../../../usr/sbin/ifdown
        │   ├── ifdown-bnep
        │   ├── ifdown-eth
        │   ├── ifdown-ippp
        │   ├── ifdown-ipv6
        │   ├── ifdown-isdn -> ifdown-ippp
        │   ├── ifdown-post
        │   ├── ifdown-ppp
        │   ├── ifdown-routes
        │   ├── ifdown-sit
        │   ├── ifdown-Team
        │   ├── ifdown-TeamPort
        │   ├── ifdown-tunnel
        │   ├── ifup -> ../../../usr/sbin/ifup
        │   ├── ifup-aliases
        │   ├── ifup-bnep
        │   ├── ifup-eth
        │   ├── ifup-ippp
        │   ├── ifup-ipv6
        │   ├── ifup-isdn -> ifup-ippp
        │   ├── ifup-plip
        │   ├── ifup-plusb
        │   ├── ifup-post
        │   ├── ifup-ppp
        │   ├── ifup-routes
        │   ├── ifup-sit
        │   ├── ifup-Team
        │   ├── ifup-TeamPort
        │   ├── ifup-tunnel
        │   ├── ifup-wireless
        │   ├── init.ipv6-global
        │   ├── network-functions
        │   └── network-functions-ipv6
        ├── rdisc
        ├── readonly-root
        ├── rsyncd
        ├── rsyslog
        ├── run-parts
        ├── selinux -> ../selinux/config
        ├── sshd
        ├── svnserve
        ├── trace-cmd.conf
        └── wpa_supplicant

6 directories, 65 files

【必会】vim必知必会的快捷键

https://www.jianshu.com/p/41a44acafad0

date

[root@oldboyedu60-lnb opt]# date +%F
2019-04-13
[root@oldboyedu60-lnb opt]# date +%Y-%m-%d
2019-04-13
[root@oldboyedu60-lnb opt]# date +%T
12:42:11
[root@oldboyedu60-lnb opt]# date +%H:%M:%S
12:42:25
[root@oldboyedu60-lnb opt]# date +%w
6
[root@oldboyedu60-lnb opt]# #显示当前的时间按照 年-月-日_小时-周几
[root@oldboyedu60-lnb opt]# #2019-04-13_12-6

查找根下所有以.txt 结尾、最近一天修改过、大于 1M 的文件
find / -type f -name "*.txt" -mtime -1 -size +1M

[root@oldboyedu60-lnb opt]# date -s "20111111 11:11:11"
Fri Nov 11 11:11:11 CST 2011
[root@oldboyedu60-lnb opt]# ntpdate  ntp1.aliyun.com 
13 Apr 14:56:08 ntpdate[2993]: step time server 120.25.115.20 offset 234157412.981742 sec
[root@oldboyedu60-lnb opt]# date 
Sat Apr 13 14:56:35 CST 2019

给rm命令加一个别名,让每次删除都强制提醒command not found,给出配置过程(要求配置后永久生效)

别名:
给命令起了1个昵称(小明)

作用:
1.防止执行危险命令
2.方便 省事

rm == rm -i 
cp == cp -i 
mv == mv -i 

配置别名:
第1个里程碑-查看别名

[root@oldboyedu60-lnb opt]# alias 
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'
[root@oldboyedu60-lnb opt]# alias mv
alias mv='mv -i'

第2个里程碑-配置别名 运行rm的时候屏幕显示command bny 临时
设置别名格式

alias mv='mv -i'
alias 昵称='命令'

[root@oldboyedu60-lnb opt]# alias rm='echo command bny'
[root@oldboyedu60-lnb opt]# rm /oldboy/oldboy.txt  -fr
command bny /oldboy/oldboy.txt -fr

第3个里程碑-修改配置文件 /etc/profile 永久生效

[root@oldboyedu60-lnb ~]# tail -1  /etc/profile
alias rm='echo command bny'
[root@oldboyedu60-lnb ~]# source /etc/profile

第4个里程碑-排坑

cp mv rm 
[root@oldboyedu60-lnb ~]# cat  ~/.bashrc 
# .bashrc

# User specific aliases and functions

#alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

小结

1.命令行进行配置 临时
alias rm='echo oldboyxxx '
2.修改配置文件 永久
3.检查 生效
4.临时取消别名 \rm 或 /bin/rm 使用绝对路径

用户

UID GID

用户分类

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

添加用户

[root@oldboyedu60-lnb ~]# useradd oldboy

查询用户信息

[root@oldboyedu60-lnb ~]# id oldboy 
uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)

设置密码

[root@oldboyedu60-lnb ~]# passwd oldboy
Changing password for user oldboy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

切换

[root@oldboyedu60-lnb ~]# su - oldboy 
[oldboy@oldboyedu60-lnb ~]$ whoami 
oldboy

[su]老男孩教育-用户切换命令图解.png

用户相关文件

  • /etc/passwd 存放用户信息
  • /etc/group 用户组信息
  • /etc/shadow 密码信息
  • /etc/gshadow 用户组密码

用户

UID GID
用户分类
用户相关文件
用户与某一个文件的关系

权限

rwx
r
read 是否可读
w
write 是否可写
x
execute 是否可以运行
执行
命令
脚本
计算

-rwxr-xr-x. 1 root root 117672 Apr 11 2018 /bin/ls
421401401
7 5 5

644 rw-r--r--
750 rwxr-x---
400 r--------

修改权限

chmod change mode 修改权限

方式1:数字

方式2:字母

用户与某一个文件的关系
    oldboy.txt
        主人  所有者      user  u 
        家人  所属用户组  group g 
        陌生人 其他人      other o 
[root@oldboyedu60-lnb oldboy]# chmod ugo+x oldboy.txt
[root@oldboyedu60-lnb oldboy]# ll oldboy.txt
-rwxr-xr-x. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# chmod a-x oldboy.txt
[root@oldboyedu60-lnb oldboy]# ll oldboy.txt
-rw-r--r--. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# chmod +x oldboy.txt
[root@oldboyedu60-lnb oldboy]# ll oldboy.txt
-rwxr-xr-x. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# chmod +x  /etc/rc.d/rc.local 
[root@oldboyedu60-lnb oldboy]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Apr 11  2018 /etc/rc.d/rc.local

chmod -R 递归修改权限

特殊符号

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

'' 单引号所见即所得

"" 双引号和单引号类似 里面的特殊符号会被解析(运行) $ ``
不加引号 和双引号类似,但是可以使用{}

[root@oldboyedu60-lnb oldboy]# echo '$UID $HOSTNAME {1..5}'
$UID $HOSTNAME {1..5}
[root@oldboyedu60-lnb oldboy]# echo "$UID $HOSTNAME {1..5}"
0 oldboyedu60-lnb {1..5}
[root@oldboyedu60-lnb oldboy]# echo $UID $HOSTNAME {1..5}
0 oldboyedu60-lnb 1 2 3 4 5

反引号 `` == $() 优先执行命令

[root@oldboyedu60-lnb oldboy]# which mkdir 
/usr/bin/mkdir
[root@oldboyedu60-lnb oldboy]# ls -l /usr/bin/mkdir 
-rwxr-xr-x. 1 root root 79760 Apr 11  2018 /usr/bin/mkdir
[root@oldboyedu60-lnb oldboy]# ls -l which mkdir 
ls: cannot access which: No such file or directory
ls: cannot access mkdir: No such file or directory
[root@oldboyedu60-lnb oldboy]# ls -l $(which mkdir )
-rwxr-xr-x. 1 root root 79760 Apr 11  2018 /usr/bin/mkdir
[root@oldboyedu60-lnb oldboy]# ls -l $(which ls )

管道 |

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

[root@oldboyedu60-lnb ~]# rpm -qa |grep tree 
tree-1.6.0-10.el7.x86_64
[root@oldboyedu60-lnb ~]# rpm -qa |grep ssh
libssh2-1.4.3-10.el7_2.1.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64

find 命令与管道配合

找出/oldboy下面以.txt结尾的文件 并删除(ls -l )

第1个里程碑-找出想要的文件

[root@oldboyedu60-lnb oldboy]# find /oldboy/ -type f -name "*.txt"
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
/oldboy/oldboy04.txt
/oldboy/oldboy05.txt
/oldboy/oldboy06.txt
/oldboy/oldboy07.txt
/oldboy/oldboy08.txt
/oldboy/oldboy09.txt
/oldboy/oldboy10.txt

第2个里程碑- xargs处理

[root@oldboyedu60-lnb ~]# find /oldboy/ -type f -name "*.txt"|ls -l
total 12
-rw-------. 1 root root 1503 Mar 23 14:58 anaconda-ks.cfg
-rw-r--r--. 1 root root    7 Apr 13 11:13 lidao.txt
-rw-r--r--. 1 root root   21 Mar 30 17:47 oldboy.txt
[root@oldboyedu60-lnb ~]# find /oldboy/ -type f -name "*.txt"|xargs  ls -l
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy02.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy03.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy04.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy05.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy06.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy07.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy08.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy09.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy10.txt

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

find习题多方法

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

方法2
ls -l $(find /oldboy/ -type f -name "*.txt")
ls -l find /oldboy/ -type f -name "*.txt"

方法3 熟悉
find /oldboy/ -type f -name "*.txt" -exec ls -l {} ;

例题:找出/etc/下面以.conf结尾的文件打包备份到 /tmp下面 /tmp/conf.tar.gz

find /oldboy/ -type f -name “*.txt” |xargs ls -l

'' "" . ()

‘’ ”“ 。()

方法1:
[root@oldboyedu60-lnb ~]# find /etc/ -type f -name "*.conf" |xargs tar zcf /tmp/conf-xargs.tar.gz
tar: Removing leading `/' from member names
[root@oldboyedu60-lnb ~]# tar tf /tmp/conf-xargs.tar.gz

方法2
[root@oldboyedu60-lnb ~]# tar zcf /tmp/conf-dao.tar.gz $( find /etc/ -type f -name "*.conf")
tar: Removing leading `/' from member names
[root@oldboyedu60-lnb ~]# tar tf /tmp/conf-dao.tar.gz

方法3:
无法使用 压缩包会只保留最后一次的文件
find /etc/ -type f -name "*.conf" -exec tar zcf /tmp/conf-exec.tar.gz {} ;

find /etc/ -type f -name "*.conf" -exec tar zcf /tmp/conf-exec.tar.gz {} +

管道小结:

基础用法
把前一个命令结果传递后面的命令
rpm -qa |grep tree

其他用法
find与|xargs 管道前面的文字符号通过|xargs 处理变成参数(文件名)
找出所要的文件然后删除/显示详细信息/替换
找出所要的文件然后压缩

通配符:方便我们查找文件

*.txt 以.txt结尾的文件

  • 所有

{} 生成序列

[root@oldboyedu60-lnb ~]# echo {a..z} {0..9}
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 0 1 2 3 4 5 6 7 8 9
[root@oldboyedu60-lnb ~]# echo oldboy{01..9}
oldboy01 oldboy02 oldboy03 oldboy04 oldboy05 oldboy06 oldboy07 oldboy08 oldboy09

[root@oldboyedu60-lnb ~]# touch oldboy.txt
[root@oldboyedu60-lnb ~]# cp  oldboy.txt{,.bak}
[root@oldboyedu60-lnb ~]# echo  oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[root@oldboyedu60-lnb ~]# echo  A{,C}
A AC
[root@oldboyedu60-lnb ~]# echo  A{B,C}
AB AC

() 
[]
{} 

? 任意1个字符
[]
[^]

通配符VS正则

名称 作用 支持的命令
通配符 方便我们查找文件 大部分的命令都可以使用
正则 方便我们进行过滤 三剑客 Python Go
cat oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY! 

^

[root@oldboyedu60-lnb oldboy]# grep '^m'  oldboy.txt
my blog is http://oldboy.blog.51cto.com 
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu60-lnb oldboy]# ls -l / |grep '^d'
drwxr-xr-x.   3 root root   37 Mar 23 17:07 alex
dr-xr-xr-x.   5 root root 4096 Mar 23 14:58 boot
drwxr-xr-x.  19 root root 3180 Mar 30 16:34 dev
drwxr-xr-x.  80 root root 8192 Apr 13 15:33 etc
drwxr-xr-x.   3 root root   20 Apr 13 15:32 home
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root  250 Apr 13 17:58 oldboy
drwxr-xr-x.   3 root root   17 Apr 13 14:45 opt
dr-xr-xr-x. 128 root root    0 Mar 30 16:34 proc
dr-xr-x---.   2 root root  224 Apr 13 17:58 root
drwxr-xr-x.  23 root root  620 Apr 13 14:52 run
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Mar 30 16:34 sys
drwxrwxrwt.   8 root root  267 Apr 13 17:57 tmp
drwxr-xr-x.  13 root root  155 Mar 23 14:50 usr
drwxr-xr-x.  19 root root  267 Mar 23 15:08 var
[root@oldboyedu60-lnb oldboy]# grep -n '^$' oldboy.txt
3:
8:
[root@oldboyedu60-lnb oldboy]# grep -v '^$' oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

下次:

正则
sed替换
awk取列
权限 13章
用户 14章

之前知识点的面试题

https://www.jianshu.com/c/e57d04635820

相关文章

网友评论

      本文标题:老男孩教育60期-Linux文件属性-特殊符号系列-v2

      本文链接:https://www.haomeiwen.com/subject/qzhpwqtx.html