2018年5月11日第3课——Linux文件系统目录与基础命令
一、Linux文件系统目录
/:根目录。
/bin:bin是binary的缩写,此目录存放的是常用的命令,不能关联至独立分区,OS启动时会用到的程序。
/sbin:存放系统管理员使用的管理类的基本命令,不能关联至独立分区,OS启动时会用到的程序。
/boot:该目录存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。引导文件、内核文件(vmlinuz)、引导加载器(BootLoader,grub)都在此目录。
/dev:dev是device的缩写,设备文件及特殊文件存储位置。在Linux中,访问设备的方式和访问文件的方式相同。
/etc:配置文件目录(纯文本文件)。
/home:普通用户家目录。
/root:管理员的家目录
/lib:基本共享库文件,以及内核模块文件(/lib/modules)。
/lib64:专用于x86_64系统上的辅助共享库文件存放位置。
/media:便携式移动设备挂载点,如光驱、U盘等,可以挂载到此目录。
/mnt:临时文件系统挂载点
/opt:第三方应用程序的安装位置
/proc:用于输出内核与进程信息相关的虚拟文件系统,该目录的内容在内存里。
/run:跟/var/run目录一样,存放的是一些服务的pid。
/srv:系统上运行的服务用到的数据。
/sys:存放的是与硬件驱动程序相关的信息。
/tmp:临时文件存放目录
/usr:类似于Windows的Program Files目录
/usr/bin:系统用户使用的应用程序
/usr/sbin:管理员使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码存放的位置
/var:存放的是不断扩充且经常修改的目录,包括日志文件或pid文件。
相对路径和绝对路径
相对路径:当前目录访问当前的文件或目录,比如:/haha/test.txt,在/haha目录中查看test.txt文件:cat test.txt
绝对路径:访问文件或目录均从根目录开始,在任何目录下查看test.txt:cat /haha/test.txt
二、常用命令介绍
1、ls命令
list的缩写,语法:ls [选项] [文件或目录]
常用选项:-a:显示所有文件,包括隐藏的文件
-l:长格式,显示详细信息
-d:查看目录熟悉
-h:human,以人类识别的方式显示
-i:显示inode
-t:按修改时间排序
-Z:显示文件或目录的安全上下文标签
[[email protected] ~]# ls -ilh
total 4.0K
68879533 -rw-------. 1 root root 1.3K Nov 4 2017 anaconda-ks.cfg
[[email protected] ~]# ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
除ls外,还有ll命令
2、文件类型
使用ls -l 文件,可以查看文件的全部信息。其中第一段-:-rwxr-xr-x中的第1个字符表示文件类型。常见的文件类型有:
-:普通文件
d:目录
b:块设备文件(block)
c:字符设备文件(character)
l:符号连接文件(Symbolic link file)
p:命令管道(pipe)
s:套接字文件(socket)
3、alias命令
设置命令别名。系统默认的命令别名:
自定义一个别名:语法:alias 自定义的命令名字='命令'
[root@myblog ~]#alias haha='ls -l'
删除别名:unalias 名字,比如上面自定义了haha这个命令,可以使用unalias haha删除。
4、cd命令
cd:change directory,切换目录。用法:cd 目录
cd:回到当前用户的家目录
cd -:回到上一所在的目录
cd ~:回到当前用户的家目录
cd ..:回到当前目录的上一级目录
cd的其他用法,可以参考man cd
5、创建和删除目录命令
mkdir:创建目录。
mkdir 目录名 -pv
-p:递归创建,-v:显示创建过程信息
rmdir:删除目录,只能删除空目录。
rm:可以删除目录、文件。
rm -rf:
-f:删除时不提示,强制删除,-r:递归删除目录。
6、环境变量PATH
查看系统环境变量:echo $PATH
可以在/etc/profile中添加自定义的环境变量,此文件为全局配置,对所有用户均生效。比如:设置jdk的环境变量。比如:设置jdk的环境变量
profile类的文件:
1、设置环境变量
2、运行命令或脚本
bashrc类的文件:
1、设定本地变量
2、定义命令别名
7、cp命令
cp:copy,复制。语法:cp [选项] [源文件] [目标文件]
常用选项:
-r:递归复制,用于复制目录
-p:保留文件属性
-a:归档复制,常用于备份
8、mv命令
移动命令。语法:mv [选项] [源文件或目录] [目标文件或目录]。有4种情况:
目标文件是目录,但该目录不存在
目标文件是目录,但该目录存在
目标文件是文件,但该文件不存在
目标文件是文件,但该文件存在
9、文档查看命令
cat、tac、head、tail
·cat 文件:全部文件内容显示在屏幕上。
-n:显示行号
-A:显示所有内容,包括特殊符号。
·tac:跟cat差不多,只是从最后一行往前显示。
·more:文件内容过多时,一屏一屏的显示,而不是全部一次显示。按空格键,显示下一屏;Ctrl+D向上翻屏,Ctrl+F向下翻屏(跟空格键),按q则退出。
·less:跟more差不多。按空格键翻页,按j键向下移动一行,按k键向上移动。使用/word,回车,可以查找word字符串,继续按n键就显示下一个word。使用?word跟使用/一样,只是?向前搜索,/向后搜索。
·head:显示文件前10行。-n 数字:显示文件前“数字”行。n可以省略。
head -n 50 文件名:显示文件前50行
head -100 文件名:显示文件前100行。
·tail:查看文件最后10行。
tail -n 数字 文件名
tail -f 文件名:动态查看文件。
tail -F:能实现tail -f的功能
Ctrl + S :停止滚屏
Ctrl + Q :恢复滚屏
Ctrl + C :中断
10、which命令
查看某个命令
[[email protected] ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
三、文件属主属组和权限
1、文件属主属组
使用ll文件可以显示文件的详细属性,如下图
·文件权限:用9个符号表示,每3个符号为一组。
读:r ,写:w,可执行:x,没有什么权限:-。前3位表示属主的权限,4-6位表示属组权限,7-9位表示除属主属组之外其他人的权限。
可读也可以用4表示,可写用2表示,可执行用1表示。
用3个二进制位表示属主、属组、其他人权限。
3个二进制位组合:
000 --> 没有权限(0,-)
001 --> 可执行权限(1,x)
010 --> 可写权限(2,w)
011 --> 可写可执行权限(3,wx)
100 --> 可读权限(4,r)
101 --> 可读可执行权限(5,rx)
110 --> 可读可写权限(6,rw)
111 --> 可读可写可执行权限(7,rwx)
这就是权限的全部组合。
2、文件权限
2.1 普通权限
·umask:遮罩码,默认是0022
目录的默认权限为777,文件的默认权限为666,而
目录的实际权限:777-umask
文件的实际权限:666-umask
注意:如果计算结果文件权限结果有可执行权限,则结果加011,如果加011之后,数字大于6,则取6。比如:666-001=665,结果有执行权限,所以665+011=676,7大于6,所以取6,最终结果是666
设置umask 0033
创建一个文件,touch haha
那么此文件的权限为:666-033=633,但文件默认情况是没有执行权限的,结果是644(633+011=644)
2.2 隐藏权限
设置隐藏权限:chattr [+|-选项] 文件|目录
选项:
i:无法修改文件,如果目录设置了此权限,则仅能修改其目录中的文件,而不能创建或删除文件。
a:只能追加内容,无法覆盖或删除内容
S:文件内容在变更后立即同步到硬盘
s:彻底从硬盘中删除,不可恢复
A:不再修改文件或目录的atime
b:不再修改文件或目录的存储时间
D:检查压缩文件中的错误
d:使用dump命令备份时忽略本文件或目录
c:默认对文件或目录进行压缩
u:删除文件后依然保留其在磁盘中的数据,方便日后恢复
t:让文件系统支持尾部合并
X:可以直接访问压缩文件中的内容
查看文件或目录隐藏权限:lsattr 文件或目录
3、文件访问控制列表ACL
setfacl:设置文件ACL规则,语法:setfacl [选项] 文件|目录
选项:
-R:递归设置
-m:针对普通文件
删除ACL:setfacl -b 文件|目录
查看ACL:getfacl 文件|目录
4、文件特殊权限SUID、SGID、SBIT
·SUID:让二进制程序的执行者临时拥有属主的权限(仅对有执行权限的二进制程序有效)。
SUID用s表示,也可以用4表示。原文件有x权限时,添加SUID后,x变为s,如果原文件没有x权限,添加后用S表示。
·SGID:让二进制程序的执行者临时拥有属组的权限(仅对有执行权限的二进制程序有效)。某个目录中创建的文件自动继承该目录的用户组。
SUID用s表示,也可以用2表示。
·SBIT:粘滞位。目录中的文件只能被其所有者可以删除,其他人不能删除,用t或1表示。如果原文件有x权限,设置后为t,如果原文件没有x权限,设置后为T。
设置SUID:
设置SGID:
设置SBIT:
test.txt文件没有x权限,设置SUID后属主权限为rwS
用数字表示权限,设置演示:
[root@localhost ~]# touch test2
[root@localhost ~]# chmod 4777 test2
第1个数字:表示特殊权限
第2个数字:属主权限
第3个数字:属组权限
第4个数字:其他人权限
上图,文件权限后面有.和+两种。
.:表示没有设置ACL
+:表示已经设置ACL
5、软、硬连接
软连接:类似于windowns的快捷方式,原文件删除后,连接文件打不开。
ln [选项] 原文件 目标文件
选项:
-s:创建软连接(默认是创建硬链接)
-f:强制创建
-i:覆盖前询问
-v:显示创建过程
硬链接:两个文件的inode是一样的。删除原文件不会影响连接文件。不支持对目录做硬链接。
四、find命令
find [选项] [查找路径] [查找条件] [处理动作]
查找路径:指定具体路径,默认为当前目录
查找条件:可以根据文件名、文件大小、类型、权限等进行查找,默认为找出指定路径下的所以文件
处理动作:对符合条件的文件做什么操作,默认为输出到屏幕。
查找条件:
1、根据文件名查找
-name 文件名
-iname 文件名:不区分大小写
-regex "模式"
2、根据属主属组查找
-user 用户名
-group 组名
-uid UID
-gid GID
-nouser:无属主
-nogroup:无属组
3、根据文件类型查找
-type 类型
f:普通文件,b:块设备,p:管道,d:目录,s:套接字文件
l:符号链接,c:字符设备
4、根据文件大小查找
-size [+ | - | ] 数字单位
数字前无符号,表示(数字-1,数字],如:
-size 3k:表示大于2k,小于等于3k
-size -3k:表示[0k,2k],大于等于0k,小于等于2k
-size +3k:表示(3,),大于3K
5、根据时间戳查找
天:-atime,-mtime,-ctime
分钟:-amin,-mmin,-cmin
例如,3天:
-3:3天之内,也就是[0,3)
3:[3,4),3到4天,包括3天,但不包括4天
+3:3天之前,也就是[4,无穷大)
6、根据权限查找
-perm [/|-] 权限
/权限:任何一类(u,g,o)对象的权限中只要有一位匹配即可。
-权限:每一类对象必须同时拥有指定的权限才匹配。
处理动作:
-print:默认处理动作,显示至屏幕。
-ls:类似ls -l
-delete:删除找到的文件
-fls 文件名:查找到的所有文件的长格式信息保存到文件中
-ok 命令 {} \; :对查找到的文件执行指定的命令,执行命令前提示用户。
-exec 命令 {} \; :对查找到的文件执行指定的命令,执行命令前不提示用户。
注意:find传递找到的文件至后面的指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令。
有些命令不能接收过多的参数,可以使用:find | xargs 命令
例子:查找/etc/目录下所有用户都没有写权限的的文件。
例2:查找/etc/目录下,最近一周内修改过,且不属于root用户的所以文件和目录
例3:查找/etc/目录中至少有一类用户没有执行权限的文件。
五、Linux与windows互传文件
安装lrzsz包,使用lz、sz命令即可。使用lz、sz传输文件,大小不能超过2G。
yum install lrzsz -y
转载于:https://my.oschina.net/logmm/blog/1808705