2.1/2.2 系统目录结构
2.3 ls命令
2.4 文件类型
2.5 alias命令
2.6 相对和绝对路径
2.7 cd命令
2.8 创建和删除目录mkdir/rmdir
2.9 rm命令
2.10 环境变量PATH
2.11 cp命令
2.12 mv命令
2.13 文档查看cat/more/less/head/tail
2.14 文件和目录权限chmod
2.15 更改所有者和所属组chown
2.16 umask
2.17 隐藏权限lsattr/chattr
2.18 特殊权限set_uid
2.19 特殊权限set_gid
2.20 特殊权限stick_bit
2.21 软链接文件
2.22 硬连接文件
2.23/2.24/2.25 find命令
2.26 文件名后缀
2.27linux和windows互传文件
2.1/2.2 系统目录结构
ps:root用户的家目录再/root/下,普通用户username的家目录都在/home/username/下
yum install -y tree #tree是树形结构显示目录
tree -L 2 / #显示树状2层目录
man 命令 #显示命令的帮助文档
/bin/ #普通用户用的命令 /sbin/ #超级用户(root)用的命令
/bin/ /sbin/ /usr/bin/ /usr/sbin/ :用来储存系统命令的文件目录
/boot/ : 系统启动相关文件目录(Grub)
/lib/ :/库文件目录(ldd查看命令依赖的库文件,例:ldd/bin/ls)
/home/:用户家目录
/media/:媒介目录(默认为空)
/mnt/:临时挂载目录
/opt/:空目录
/proc/:系统启动进程目录
/run/:一些用户产生的临时文件(开机关机都会消失的文件)
/srv/:空目录(存服务产生的一些文件)
/sys/:有系统内核文件
/tmp/:系统的临时目录(任何目录都可以在里面读写)
/usr/:存储用户文件
/var/:存储系统日志(/var/log/messages系统重要日志存储的地方)
很重要、常用目录
/usr/bin/ /usr/sbin/ /bin/ /sbin/ /etc/ /var/ /usr/local/
描述所有目录的作用,图片如下
http://www.apelearn.com/study_v2/linux_dir_tree.jpg
2.3 ls命令
ls -l #列出文件属性 ##ls -l 缩写为ll
[[email protected] ~]# ls -l
ls -lh #加h,自动变换单位
ls -d #列出文件目录
ls -ld #列出文件目录的属性
ls -la #查看目录所有文件(包括隐藏文件(带一个点 .))
ls -lta #加t,文件按时间排序,越早越排在下面
2.4 文件类型
权限第一个“-”的是普通文件,“d”指的是目录
ps:带颜色的文件是二进制编译过的,无法直接cat查看
/dev/:文件权限第一个表示“c”的为字符串设备是黄色的,“b”的为块设备文件 (光盘磁盘)
粉绿色的表示软连接文件
粉色的表示“s”的是用来通信的
2.5 alias命令
定义命令
alias 定义命令名='系统命令'
取消定义命令
unalias xin
ps: which 命令 #可以用来看命令的绝对路径
/usr/bin/ls #绝对路径 (ls所在的路径)
ps:使用别名代替命令的三种方法
例:/root/abc/123
1、添加到PATH
将/tmp/加入到PATH内,然后cp /root/abc/123到/tmp/目录下,cp过程可随意命名,cp /root/abc/123 /tmp/xin ,然后就可以直接使用xin或者/tmp/xin 代替/root/abc/123
2、使用alias alias 别名= '原本命令路径'
alias xin=’/root/abc/123‘
3、使用软连接: ln
ln /root/abc/123 xin
2.6 相对和绝对路径
绝对路径指的是从根目录开始的路径
相对路径是从当前目录开始的路径
pwd #查看当前目录(路径)
ps:
* 表示通配
history #查看最近使用的命令
!tree #从history中找最近使用tree的命令
!$ #使用上次命令行最后的参数
2.7 cd命令
cd #回到用户的家目录
cd - #返回上次所在的目录
cd ~ #~相当于/root
cd .. # 返回上层目录
2.8 创建和删除目录mkdir/rmdir
mkdir 目录名 #只能一层一侧目录创建
mkdir -p 目录名 #一次性创建多层目录
mkdir -pv 目录名 #+v可看目录创建过程
touch 文件名 #创建文件
touch 文件名1 文件名2 文件名3 #创建多个文件
rmdir 目录名 #只能删除空目录(里面没有文件和目录)
rmdir -p 目录名
#多个非空目录一起删除(很危险,只要非空都会把目录删除,所以一般不用这个命令)
2.9 rm命令
rm 文件名 #删除文件
rm -f 文件名 #强制删除文件(跳过询问)
ps: *.txt # 表示所有后缀为*.txt的文件 “*”为通配
rm -r 目录 #删除目录所有文件和目录(需要询问)
rm -rf 目录 #删除目录所有文件和目录
rm -rfv 目录 #加v可看删除过程
ps:rm -f #即使所选的文件不存在,也不会报错
2.10 环境变量PATH
#which 主要是从/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin这几个路径里面找的命令
echo $PATH #查看环境变量
临时加入PATH
[[email protected] ~]# PATH=$PATH:/tmp/
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
设置永久环境变量
vi /etc/profile #系统或终端开机时都会通过这个文件加载命令
在最后一行写上PATH=$PATH:/tmp/即可
PATH的用法
#可以将自己定义的目录添加到PATH环境变量里,然后将原来的命令的绝对路径文件复制到定义的目录里重新命名命令名称,然后就能使用重新命名的命令了
恢复原来的PATH
2.11 cp命令
cp 原文件名 目标文件名 #若目标已存在,会问是否覆盖
[[email protected] ~]# cp /etc/passwd /tmp/1.txt
[[email protected] ~]# cp /etc/passwd /tmp/1.txt
cp:是否覆盖"/tmp/1.txt"? y
/usr/bin/cp 原文件名 目标文件名
#使用绝对路径可跳过询问,因为-i是安全参数
cp -r 原目录 目标目录
#如果目标目录存在,则将原目录复制到目标目录下;若不存在,则直接将原目录名改为目标目录名
不存在情况
存在情况
2.12 mv命令(移动)
mv 原文件 目标文件 #若目标已存在,会问是否覆盖;
目标不存在
目标存在
要想跳过询问,用mv绝对路径
mv 原目录 目标目录 # 如果目标目录存在,则将原目录复制到目标目录下;若不存在,则直接将原目录名改为目标目录名
目标存在
目标不存在
#如果原目标和目标都是在同一目录下,相当于改名字
2.13 文档查看cat/more/less/head/tail
cat用法
cat 文件名
cat -A 文件名 #显示所有的字符($表示文件行尾结束符)
cat -n 文件名 #显示行号
cat 文件名1 >> 文件名2 #将文件1的内容添加到文件2(从文件2内容结尾追加)
wc -l #可以查看文件的行数
[[email protected] ~]# wc -l /tmp/host.txt
19 /tmp/host.txt
more用法(看完后自动退出)
more 文件名
#一页一页显示 ;空格键往下翻页 CTRL+B往前看 CTRL+F往后看
less用法(看完不会自动退出)
less 文件名
# 一页一页显示;空格键往下翻页 CTRL+B往前看 CTRL+F往后看
#支持方向键 看到最后不会自动退出文件,要按Q键退出
#可以搜索(按/往后搜,按?往前搜);按n键往下搜索 ,按shift+n键(就是N)往下搜索
#按g定位到行首,按G定位到行尾
head用法
head 文件名 #查看文件开头10行
[[email protected] ~]# head /tmp/host.txt
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
head -n 2 文件名 #查看开头前两行
[[email protected] ~]# head -n 2 /tmp/host.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
tail用法
tail 文件名 #查看文件行尾10行
[[email protected] ~]# tail /tmp/host.txt
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tail -n 2 文件名 #查看结尾2行
[[email protected] ~]# tail -n 2 /tmp/host.txt
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tail -f 文件名 #加f可以显示动态文件(看日志) #退出可按CTRL+C
例:先用tail -f 查看一个文件,然后通过xshell复制ssh渠道,出现一个新的会话窗口,在新的会话窗口往刚刚查看的文件追加内容,可以发现原来的会话窗口查看的文件多出了追加内容
tail -f /tmp/host.txt
复制SSH渠道,新建会话窗口
在新的会话窗口输入 cat 2.txt >> /tmp/host.txt ,开始的会话窗口fail更新了
2.14 文件和目录权限chmod
文件、目录权限
r #可读 r=4
w #可写 w=2
x #可执行 x=1
例如:-rw-r--r--=644 drw-r-xr-x=655
有11位,第一位是文档属性,其它三位一段,最后一位是一个点(有点说明sexLinux防火墙开启,没点就防火墙彻底关闭,改配置文件重启),
文档权限有三段,第一段是文档所有者,第二段是所属组,第三段是其他用户
设置权限
第一种方式:
chmod 700 文件/目录 #700=rwx,可读可写可执行
[[email protected] ~]# ls -l 2.txt
-rwx------. 1 root root 306 7月 26 19:04 2.txt
第二种方式:
a表示所有用户(文档所有者、所属组、其它用户)
a+x #该目标的三段权限都加上x(即可执行)
u+x #文档所有者加上x(即可执行)
g+x #所属组加上x(即可执行)
o+x #其它用户加上x(即可执行)
chmod u=rwx,g=r,o=r 文件/目录 #rwxr--r--=744
[[email protected] ~]# ls -l 3.txt
-rwxrwxrwx. 1 root root 0 7月 26 15:04 3.txt
[[email protected] ~]# chmod u-x,g-wx,o-x 3.txt
[[email protected] ~]# ls -l 3.txt
-rw-r--rw-. 1 root root 0 7月 26 15:04 3.txt
[[email protected] ~]# ls -l 3.txt
-rwxr--r--. 1 root root 0 7月 26 15:04 3.txt
[[email protected] ~]# chmod u-x 3.txt
[[email protected] ~]# ls -l 3.txt
-rw-r--r--. 1 root root 0 7月 26 15:04 3.txt
[[email protected] ~]# chmod g+wx 3.txt
[[email protected] ~]# ls -l 3.txt
-rw-rwxr--. 1 root root 0 7月 26 15:04 3.txt
[[email protected] ~]# chmod a+rwx 3.txt
[[email protected] ~]# ls -l 3.txt
-rwxrwxrwx. 1 root root 0 7月 26 15:04 3.txt
chmod -R 777 目录 #-R可改目录下的所有文件的权限为777
2.15 更改所有者和所属组chown
chown username 文件/目录 #更改文件/目录的文件所有者
[[email protected] ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 root root 26 7月 26 16:53 /tmp/xin3
[[email protected] ~]# chown xin /tmp/xin3
[[email protected] ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin root 26 7月 26 16:53 /tmp/xin3
chown -R 目录 #-R,指定目录下的所有文件目录一起改
chown username:group 目标 #更改所有者和所属组 (在所有者后面接“:”后面加所属组)
[[email protected] ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin user1 26 7月 26 16:53 /tmp/xin3
[[email protected] ~]# chown root:root /tmp/xin3
[[email protected] ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 root root 26 7月 26 16:53 /tmp/xin3
chgrp 组名 文件/目录 #更改所属组
[[email protected] ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin root 26 7月 26 16:53 /tmp/xin3
[[email protected] ~]# chgrp user1 /tmp/xin3
[[email protected] ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin user1 26 7月 26 16:53 /tmp/xin3
2.16 umask
umask #决定默认文件/目录的权限值
未改umask(默认0022)(开头第一个0默认省略)
drwxr-xr-x. 2 root root 6 7月 15 21:17 1 #目录权限=755
-rw-r--r--. 1 root root 0 7月 15 21:17 1.txt #文件权限=644
改umask=005
[[email protected] ~]# umask 005
drwxrwx-w-. 2 root root 6 7月 15 21:20 1
-rw-rw--w-. 1 root root 0 7月 15 21:20 1.txt
目录权限=772
文件权限=662
计算修改后的目录权限=777(rwxrwxrwx)-005(------r-x)=(rwxrwx-w-)772
计算修改后的文件权限=666(rw-rw-rw-)-005(------r-x)=(rw-rw--w-)662
2.17 隐藏权限lsattr/chattr
chattr +i 文件/目录
# 如果是更改目录隐藏权限,不影响该目录下的文件进行操作
#加i表示设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。不能删除
chattr +a 文件/目录
#加a表示只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性
ps:
编辑文件的时候回产生一个缓存文件,在你保存文件的时候缓存文件会覆盖原来的文件,因为加了I隐藏权限保存不了,缓存文件无法覆盖,所有会保存出一个带波浪号的缓存文件
lsattr
-R:递归列示目录及文件属性。
-v:显示文件或目录版本。
-V:显示程序版本号。
-a:显示所有文件属性,包括隐藏文件(.)、当时目录(./)及上层目录(../)。
-d:仅列示目录属性。
-l:(此参数目前没有任何作用)。
lsattr 文件 #查看隐藏权限
#正常文件的隐藏权限为空的
lasttr 目录 #看当前目录下第一层的不隐藏文件的隐藏权限
lsattr -R 目录 #看当前目录的所有不隐藏文件的隐藏权限
lasttr -d 目录 #查看目录本身的隐藏权限
[[email protected] ~]# lsattr -d 123
---------------- 123
lasttr -a 目录 #看当前目录的所有文件(包括隐藏文件)的隐藏权限
2.18 特殊权限set_uid(作用于所有者)
#让普通用户执行命令时,临时拥有该命令所有者的身份
#set_uid使用前提:文件是一个二进制文件(带颜色的文件)且可执行
添加set_uid权限
chmod u+s 文件(命令绝对路径)
普通用户没有打开/root/的权限
将ls命令添加set_uid 权限
然后普通用户在尝试一次,成功打开了
#当文件的所有者添加set_uid权限时,没有执行权限,s会变成S
#但是普通用户使用set_uid权限时,他们有执行权限时,大写S不影响操作
2.19 特殊权限set_gid(作用于所属组)
1、当权限附加给文件时,普通用户时拥有所属组的身份
2、当权限附加给目录时,普通用户时拥有所属组的身份,且在该目录下创建的子文件/目录的时候,创建子文件/目录的所属组与父目录的所属组保持一致
当目录有set_gid权限时,该目录下创建的子文件/目录的所属组与父目录保持一致
chmod g+s 文件或者目录
2.20 特殊权限stick_bit(作用于普通用户)
(该特殊权限在/tmp/目录下)
#防删除位
#SBit一般用于目录上,对文件的意义不大。SBit对目录的作用是:在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权利删除。SBit可以理解为防删除位
#又叫防删除位t,防止别人删除自己的文件(root用户除外)(可更改、创建、查看,不能删除,)
[[email protected] tmp]$ touch 1.txt
[[email protected] tmp]$
[[email protected] tmp]$ ls
1.txt
host.txt
[[email protected] tmp]$ rm host.txt
rm:是否删除有写保护的普通文件 "host.txt"?y
rm: 无法删除"host.txt": 不允许的操作
[email protected] tmp]$ vi hsot.txt
[[email protected] tmp]$ mv hsot.txt host.txt
mv:是否覆盖"host.txt",而不理会权限模式0644 (rw-r--r--)? y
mv: 无法将"hsot.txt" 移动至"host.txt": 不允许的操作
普通用户是否能删除其它普通用户的目录下的子目录/文件,靠父级目录的权限决定
例:用户xin再/tmp/创建目录xin,权限为 777;用户user1访问/tmp/xin/,
#一个文件能否被删除,取决于该文件的父目录的权限,/tmp/目录是777,任何人都可写的,所以理 论上任何人都可以删除/tmp/下的所有文件,但是,user2是不可以删除user1的文件的,可以修改,只有 user1和root可以删除,这就是因为/tmp/目录有一个stick_bit。
2.21 软链接文件(重要知识点)
软链接(可以跨分区)
ln -s 源文件或目录 目标文件或目录 #源文件或目录内存大,换成软链接后内存小
这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报 错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指 向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因 此发生变化。
df -h #可查看挂载点空间占用情况
软链接实例
#将一个由于内存大导致这分区空间满了的文件,通过软链接,将空间释放
首先cp一份内存大的文件到空闲的磁盘下,然后删除该文件,然后通过软链接将在空闲磁盘下的文件放回原来磁盘,由于软链接文件占用内存下小,所以空间就被释放了
2.22 硬连接文件(重要知识点)
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。
但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
ln 源文件 硬链接文件 #硬链接文件直接创建
#不能硬链接目录;硬链接文件不能跨分区;可删除
#硬链接文件不占用空间,因为与原文件用同一个inode
源文件与目标文件的inode号码相同,都指向同一个 inode。inode信息中有一项叫做"链接数",记录指向该inode的文件名 总数,这时就会增加1。 反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减 到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其 所对应block区域。
创建目录时,默认会生成两个目录 项:"."和".."。前者的inode号码就是当前目录的inode号码,等同于当前目录 的"硬链接";后者的inode号码就是当前目录的父目录的inode号码,等同于父 目录的"硬链接"。所以,任何一个目录的"硬链接"总数,总是等于2(某一目录 的目录名和该目录的当前目录名)
ls -i #查看ionde号
#软链接和硬链接的区别(面试常考)
其中每个dentry都有一个唯一的inode,而每个inode则可能有多个dentry,这种情况是 由ln硬链接产生的。
1)硬链接:其实就是同一个文件具有多个别名,具有相同inode,而dentry不同。
-
文件具有相同的inode和data block;
-
只能对已存在的文件进行创建;
-
.不能交叉文件系统进行硬链接的创建(硬链接不能跨分区,因为inode号会冲突)
-
不能对目录进行创建,只能对文件创建硬链接
-
删除一个硬链接并不影响其他具有相同inode号的文件;
2)软链接:软链接具有自己的inode,即具有自己的文件,只是这个文件中存放的 内容是另一个文件的路径名。因此软链接具有自己的inode号以及用户数据块。
-
软链接有自己的文件属性及权限等;
-
软链接可以对不存在的文件或目录创建;
-
软链接可以交叉文件系统;(可以跨分区软链接,因为软链接访问的是源文件路径)
-
软链接可以对文件或目录创建;
-
创建软链接时,链接计数i_nlink不会增加;
-
删除软链接不会影响被指向的文件,但若指向的原文件被删除,则 成死链接,但重新创建指向的路径即可恢复为正常的软链接,只是源文件的内容可能变了。
2.23/2.24/2.25 find命令(重点)
ps:其他几种搜寻命令
which #通过PATH查找
[[email protected] ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
whereis #在准备的一个库里面找
[[email protected] ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
locate
yum install -y mlocate 安装locate
updatedb #手动生成数据库
locate 文件
常用快捷键
CTRL +l #把光标定位到第一行 CTRL +d #退出终端
CTRL +u #将光标前面的全删掉 CTRL +e #将光标定位到行尾
CTRL +a #将光标定位到行首
1、find 目录 -name “文件名或部分” #name查找文件名
2、find 目录 -type -d/f /l/b/c #type指定类型
d 目录 f 文件 l 软连接 b 块设备文件 c 字符串设备文件
3、
-atime #访问时间
-mtime #最近更改(改内容)
-ctime #最近改动(改内容、权限、名字、inode号、大小)
#更改文件内容ctime一定会变
stat 文件 #查看文件mtime,atime,atime
追加修改了文件内容,所以mtime会变化;也更改了文件大小:所以ctime也会变化。
修改文件权限只涉及到了inode属性更改,不会更改文件内容,所以更改文件权限mtime是不会变化的
find 目录 -mtime +1 #+1表示大于一天的;-1表示小于一天的
#多个条件可以一起使用查找(但是条件是且)
在条件之间加 -o 就是或者
例:find /etc -type f -o -mtime -1 -o -name "sshd"
find /etc -type f -mtime -1 -name "sshd"
补充:时间单位更小 -mmin -数字 #表示分钟
[[email protected] ~]#
[[email protected] ~]# find /root/ -type f -cmin -60
/root/3.txt
[[email protected] ~]#
4、-inum #指定inode号
find -inum 33608749
[[email protected] ~]# find /root/ -inum 33608749
/root/3.txt
[[email protected] ~]#
5、-exec 加命令 #选项
-exec ls -l {} \ ; #{}表示find出来的列表之一,一个{},表示一个文件位
find /root/ -type f -mmin -150 -exec mv {} {}.bak \;
6、-size #文件大小
-size +10k/M #大于10k/M
四剑客之Find工具实战,Find工具主要用于操作系统文件、目录的查找,其语法参数格式为:
find path -option [ -print ] [ -exec -ok command ] { } /;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式 为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命 令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
option 选项:
-
-name filename #查找名为filename的文件
-
-perm #按执行权限来查找
-
-user username #按文件属主来查找
-
-group groupname #按组来查找
-
-mtime n +n #按文件更改时间来查找文件,n指n天以内,+n指n天以前
-
-atime n +n #按文件访问时间来查GIN: 0px">
-
-ctime n +n #按文件创建时间来查找文件,n指n天以内,+n指n天以前
-
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-
-newer f1 !f2 找文件,n指n天以内,+n指n天以前
-
-ctime n +n #按文件创建时间来查找文件,n指n天以内,+n指n天以前
-
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-
- size n[c] #查长度为n块[或n字节]的文件
-
-depth #使查找在进入子目录前先行查找完本目录
-
-fstype #查更改时间比f1新但比f2旧的文件
(1)Find工具-name参数案列:
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件;
find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件;
find /data/ -name "test*" #查找/data/目录以test开头的文件;
(2)Find工具-type参数案列:
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ ! -type d #查找/data/目录下的非文件夹;
find /data/ -type l #查找/data/目录下的链接文件。
find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
(3)Find工具-size参数案列:
find /data/ -size +1M #查文件大小大于1Mb的文件;
find /data/ -size 10M #查文件大小为10M的文件;
find /data/ -size -1M #查文件大小小于1Mb的文件;
(4)Find工具-perm参数案列:
find /data/ -perm 755 #查找/data/目录权限为755的文件或者目录;
find /data/ -perm -007 #与-perm 777相同,表示所有权限;
find /data/ -perm +644 #文件权限在644以上;
(5)Find工具-mtime参数案列:
atime,access time 文件被读取或者执行的时间;
ctime,change time 文件状态改变时间;
mtime,modify time 文件内容被修改的时间;
find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;
find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;
find /data/ -mtime 30 -name "*.txt"#查找第30天的log文件;
find /data/ -mmin +30-name "*.log" #查找30分钟以前修改的log文件;
find /data/ - -30 -name "*.txt" #查找30分钟以内被访问的log文件;
find /data/ -cmin 30 -name "*.txt"#查找第30分钟改变的log文件。
(6)Find工具参数综合案列:
#查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录;
find /data/ -name "*.log" –type f -size +10k -exec cp {} /tmp/ /;
#查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件;
find /data/ -name "*.log" –type f -size +10k -m perm 644 -exec rm –rf {} /;
#查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录;
find /data/ -name "*.log" –type f -mtime +30 –size +10M -exec mv {} /tmp/ /;
2.26 文件名后缀
常用的文件后缀名:
-
.php 这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;
-
.so 这类是库文件;
-
.doc 、.obt 这是OpenOffice 能打开的文件;
-
.bz2 bzip2的压缩文件
-
.gz gzip的压缩文件
-
.tar tar打包文件(是包文件不是压缩文件)
-
.tbz tar打包并用bzip压缩文件
-
.tgz tar打包并用gzip压缩的文件
-
.au audio文件
-
.gif gif图象文件
-
.html .htm HTML文件
-
.jpg JPEG图象文件
-
.pdf 电子文档(PDF格式的)
-
.png PNG图象文件
-
.ps postscinpt文件(打印格式文件)
-
.txt 纯文本文件
-
.wav audio文件
-
.xpm 图象文件
-
.conf 配置文件
-
.lock LOCK文件(用来判断一个文件或设备是否被使用)
-
.rpm REDHATPackage.Manager文件(套件包或软件包)
-
.c C源程序代码文件
-
.cpp C++源程序代码文件
-
.h C或C++程序的头文件
-
.o 程序目标文件
date #显示时间
系统语言
$LANG=EN #表示英文
$LANG=zh_CN.UTF-8 #都表示中文 (使用中文需要有中文的支持(也就是装系统的时候选择中文))
echo $LANG #查看系统语言
LANG=en #系统改为英文
LANG=zh_CN.UTF-8 #系统改为中文
2.27linux和windows互传文件
yum install -y lrzsz #安装lrzsz工具(需要xshell才能传或securecrt(putty不支持))
sz 文件名 #将文件传到windows
rz #将Windows的文件选择传到Linux
注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是 用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。
-b binary 用binary的方式上传下载,不解释字符为ascii
-e 强制escape 所有控制字符,比如Ctrl+x,DEL等
#inode (重要知识点)
1)什么是inode
理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存 512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性 连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成 的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。 文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元 信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元 信息的区域就叫做inode,中文译名为"索引节点"。 每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
2)inode的内容
inode包含文件的元信息,具体来说有以下内容: (除了文件名)
-
文件的字节数
-
文件拥有者的User ID
-
文件的Group ID
-
文件的读、写、执行权限
-
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime 指文件内容上一次变动的时间,atime指文件上一次打开的时间。
-
* 链接数,即有多少文件名指向这个inode
-
* 文件数据block的位置
3)查看inode
1、查看文件/目录inode信息
stat 文件/目录
[[email protected] ~]# stat 3.txt #语言环境为中文
文件:"3.txt"
大小:79 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:33608749 硬链接:1
权限:(0777/-rwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-07-27 21:59:14.989956601 +0800
最近更改:2018-07-28 09:46:17.209296401 +0800
最近改动:2018-07-28 09:46:17.209296401 +0800
创建时间:-
[[email protected] ~]# stat 3.txt #语言环境为英文
File: '3.txt'
Size: 79 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33608749 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-07-27 21:59:14.989956601 +0800
Modify: 2018-07-28 09:46:17.209296401 +0800
Change: 2018-07-28 09:46:17.209296401 +0800
Birth: -
2、查看硬盘分区的inode总数和已经使用的inode数
df -i
[[email protected] ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 14577152 35119 14542033 1% /
devtmpfs 122026 403 121623 1% /dev
tmpfs 124743 1 124742 1% /dev/shm
tmpfs 124743 771 123972 1% /run
tmpfs 124743 16 124727 1% /sys/fs/cgroup
/dev/sda1 102400 332 102068 1% /boot
tmpfs 124743 1 124742 1% /run/user/0
3、查看inode号
ls -i 文件/目录
[[email protected] ~]# ls -i 3.txt
33608749 3.txt
4)inode的大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式 化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘 中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
5)inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。 这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识 别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。 表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首 先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取 inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
6)inode的特殊作用
由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现 象。
-
有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节 点,就能起到删除文件的作用。
-
移动文件或重命名文件,只是改变文件名,不影响inode号码。
-
打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。 第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重 启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文 件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的 inode则被回收。
7)如何增加inode数?
-
删除无用的文件,释放出inode
-
把文件挪走,然后重新格式化,格式化的时候,指定inode的比例(改变block块大小),让它多分一些,再把文件挪回来