零.今日课程内容目录
Linux文件属性
ls -lhi 每一列含义
文件类型
inode和block
软硬链接
用户
权限
文件属性相关命令
which find whereis tar date
特殊符号与正则表达式
特殊符号
单引号 双引号 不加引号区别
管道
正则
一. 文件属性简介
二.inode和block
1.含义
inode
inode index node 索引节点
inode号码相当于是我们每个人的身份证号码
inode空间存放文件的属性信息(权限 所有者 大小 修改时间 硬链接数 文件类型)
block的位置
没有存放文件名
block
block 数据块 存放数据(文件内容)
2.关系
查看一个文件oldboy.txt 背后与inode 和block 关系?
类型 | 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
软硬链接区别
- 如何创建:
a) 默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接。
- 含义:
a) 硬链接:在同一分区中inode节点号相同文件,
b) 软链接:相当于windows下面的快捷方式,存放源文件的位置(inode节点号与源文件不同)
- 特点:
a) 不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到
b) 软链接可以跨文件系统,硬链接不可以跨文件系统。
- 怎么没的(源文件,软链接,硬链接与删除)
a) 删除软链接文件,对源文件及硬链接文件无任何影响;
b) 删除文件的硬链接文件,对源文件及软链接文件无任何影响;
c) 删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
d) 同时删除源文件及其硬链接文件,整个文件才会被"真正"的删除。
文件属性命令
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让你迷茫的提示: 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
用户相关文件
- /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/p/31428370f6f2
来源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。