https://shimo.im/docs/pQjP3JhCchCQPy3J/read
Linux 文件与目录结果
linux文件目录和作用
目 录 名 | 目录的作用 |
---|---|
/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。是/usr/bin/目录的软链 接 |
/sbin/ | 存放系统命令的目录,只有超级用户才可以执行。是/usr/sbin/目录的软链接 |
/usr/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行 |
/usr/sbin/ | 存放系统命令的目录,只有超级用户才可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件 全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的家目录。在创建用户时,每个用户要有一个默认登录和保存自己数据 的位置,就是用户的家目录,所有普通用户的宿主目录是在/home/下建立一个和 用户名相同的目录。如用户 user1 的家目录就是/home/user1/ |
/lib/ | 系统调用的函数库保存位置。是/usr/lib/的软链接 |
/lib64/ | 64 位函数库保存位置。是/usr/lib64/的软链接 |
/lost+found/ | 当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的 过程中 fsck 工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分 区中出现,例如/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录 |
/media/ | 挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘 |
/misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。我们在刚刚已经解释了挂载, 童鞋们应该知道只要是一个已经建立的空目录就可以作为挂载点。那么系统虽然 准备了三个默认挂载目录/media、/mnt、/misc,但是到底在哪个目录中挂载什么 设备都可以由管理员自己决定。例如超哥接触 Linux 的时候,默认挂载目录只有 /mnt 一个,所以养成了在/mnt 下建立不同目录挂载不同设备的习惯。如 /mnt/cdrom 挂载光盘,/mnt/usb 挂载 U 盘,这都是可以的 |
/mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。现在系统建议这个 目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
/opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装 的源码包软件都可以安装到这个目录中。不过超哥还是习惯把软件放到 /usr/local/目录中,也就是说,/usr/local/目录也可以用来安装软件 |
/proc/ | 虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保 存系统的内核、进程、外部设备状态和网络状态等。如/proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的…… |
/sys/ | 虚拟文件系统。和/proc/目录相似,该目录中的数据都保存在内存中,主要保存 与内核相关的信息 |
/root/ | root 的宿主目录。普通用户宿主目录在/home/下,root 宿主目录直接在“/”下 |
/run/ | 系统运行时产生的数据,如 ssid,pid 等相关数据。/var/run/是此目录的软链接 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。 我们建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
/usr/ | 系统软件资源目录。注意 usr 不是 user 的缩写,而是“UNIX Software Resource” 的缩写,所以不是存放用户数据的目录,而是存放系统软件资源的目录。系统中 安装的软件大多数保存在这里 |
/usr/lib/ | 应用程序调用的函数库保存位置 |
/usr/local/ | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 |
/usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 |
/usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过 超哥更习惯把手工下载的源码包保存到/usr/local/src/目录中,把内核源码保存到 /usr/src/kernels/目录中 |
/usr/src/kernels/ | 内核源码保存位置 |
/var/ | 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件 |
/var/www/html/ | RPM 包安装的 Apache 的网页主目录 |
/var/lib/ | 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/目录中 |
/var/log/ | 系统日志保存位置 |
/var/run/ | 一些服务和程序运行后,它们的 PID(进程 ID)保存位置。是/run/目录的软链接 |
/var/spool/ | 放置队列数据的目录。就是排队等待其他程序使用的数据,比如邮件队列和打印 队列 |
/var/spool/mail/ | 新收到的邮件队列保存位置。系统新收到的邮件会保存在此目录中 |
/var/spool/cron/ | 系统的定时任务队列保存位置。系统的计划任务会保存在这里 |
常用的注意事项
- 远程服务器在重启之前,要中止正在执行的服务
- 重启命令的选择 建议使用 shutdown -r row,这个命令在重启时会正常保存和中止服务器总正在运行的程序,是安全的重启命令。而且在执行之前执行几次 sync ,这条命令是数据同步命令,可以让暂时保存在内存的数据同步到硬盘上。
- 不要在服务器访问高峰运行高负载命令: 如大文件的复制、压缩或者解压大文件、大范围的硬盘搜索。
- 远程配置防火墙时候不要把自己踢出去服务器。还可以写一个系统定时任务5分钟清空一下防火墙规则再进行配置。
- 合理分配权限,给用户最小的权限。
- 定期备份重要的数据和日志。
linux常用命令
命令的基本格式
目录相关命令
ls命令
ls [选项] [文件名或目录名]
选项:
-a: 显示所有文件
--color=when: 支持颜色输出,when 的值默认是 always(总显示颜色),也可以是
never(从不显示颜色)和 auto(自动)
-d: 显示目录信息,而不是目录下的文件
-h: 人性化显示,按照我们习惯的单位显示文件大小
-i: 显示文件的 i 节点号
-l:长格式显示
[root@localhost ~]# ls -l
总用量 44
-rw-------. 1 root root 1207 1 月 14 18:18 anaconda-ks.cfg
#权限 引用计数 所有者 所属组 大小 文件修改时间 文件名
cd命令
d 是切换所在目录的命令,这个命令的基本信息如下。
命令名称:cd。
英文原意:change directory。
所在路径:Shell 内置命令。
执行权限:所有用户。
功能描述:切换所在目录。
~ 代表用户的家目录
- 代表上次所在目录
. 代表当前目录
.. 代表上级目录
pwd 命令
pwd 命令是查询所在目录的命令,基本信息如下:
命令名称:pwd
英文原意:print name of current/working directory
所在路径:/bin/pwd
执行权限:所有用户。
功能描述:查询所在的工作目录。
mkdir 命令
mkdir 是创建目录的命令,其基本信息如下。
命令名称:mkdir。
英文原意:make directories。
所在路径:/bin/mkdir。
执行权限:所有用户。
功能描述:创建空目录。
[root@localhost ~]# mkdir [选项] 目录名
选项:
-p:递归建立所需目录
rmdir 命令
既然有建立目录的命令,就一定会有删除目录的命令 rmdir,其基本信息如下。
命令名称:rmdir。
英文原意:remove empty directories。
所在路径:/bin/rmdir。
执行权限:所有用户。
功能描述:删除空目录。
root@localhost ~]# rmdir [选项] 目录名
选项:
-p: 递归删除目录
rmdir 命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。
这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用 rm
命令
文件操作命令
touch 命令
创建空文件或修改文件时间,这个命令的基本信息如下。
命令名称:touch。
英文原意:change file timestamps。
所在路径:/bin/touch。
执行权限:所有用户。
功能描述:修改文件的时间戳。
stat 命令
stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间,其基本信息如下。
命令名称:stat。
英文原意:display file or file system status。
所在路径:/usr/bin/stat。
执行权限:所有用户。
功能描述:显示文件或文件系统的详细信息
[root@localhost ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"
大小:1453
块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:33574991 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2018-11-06 23:22:23.409038121 +0800
最近更改:2018-10-24 00:53:08.760018638 +0800 #数据修改时间
最近改动:2018-10-24 00:53:08.760018638 +0800 #状态修改时间
创建时间:-
cat 命令
cat 命令用来查看文件内容。这个命令的基本信息如下。
命令名称:cat。
英文原意:concatenate files and print on the standard output。
所在路径:/bin/cat。
执行权限:所有用户。
功能描述:合并文件并打印输出到标准输出
命令格式
[root@localhost ~]# cat [选项] 文件名
选项:
-A: 相当于-vET 选项的整合,用于列出所有隐藏符号
-E: 列出每行结尾的回车符$
-n: 显示行号
-T: 把 Tab 键用^I 显示出来
-v: 列出特殊字符
more 命令
more 是分屏显示文件的命令,其基本信息如下。
命令名称:more。
英文原意:file perusal filter for crt viewin。
所在路径:/bin/more。
执行权限:所有用户。
功能描述:分屏显示文件内容。
more 命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。常
用的交互命令如下。
空格键:向下翻页。
b:向上翻页。
回车键:向下滚动一行。
/字符串:搜索指定的字符串。
q:退出。
less 命令
less 命令和 more 命令类似,只是 more 是分屏显示命令,而 less 是分行显示命令,其基本信息如
下。
命令名称:less。
英文原意:opposite of more。
所在路径:/usr/bin/less。
执行权限:所有用户。
功能描述:分行显示文件内容
head 命令
head 是用来显示文件开头的命令,其基本信息如下。
命令名称:head。
英文原意:output the first part of files。
所在路径:/usr/bin/head。
执行权限:所有用户。
功能描述:显示文件开头的内容
[root@localhost ~]# head [选项] 文件名
选项:
-n 行数: 从文件头开始,显示指定行数
-v: 显示文件名
ln命令
我们来看看 ln 命令的基本信息。
命令名称:ln。
英文原意:make links between file。
所在路径:/bin/ln。
执行权限:所有用户。
功能描述:在文件之间建立链接。
ln 命令的基本格式如下:
root@localhost ~]# ln [选项] 源文件 目标文件
选项:
-s: 建立软链接文件。如果不加“-s”选项,则建立硬链接文件
-f: 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
如果创建硬链接:
[root@localhost ~]# touch cangls
[root@localhost ~]# ln /root/cangls /tmp/
#建立硬链接文件,目标文件没有写文件名,会和原名一致
#也就是/root/cangls 和/tmp/cangls 是硬链接文件
如果创建软链接:
[root@localhost ~]# touch bols
[root@localhost ~]# ln -s /root/bols /tmp/
#建立软链接文件
硬链接与软连接的特征
硬链接特征:
1.源文件和硬链接文件拥有相同的 Inode 和 Block
2.修改任意一个文件,另一个都改变
3.删除任意一个文件,另一个都能使用
4.硬链接标记不清,很难确认硬链接文件位置,不建议使用
5.硬链接不能链接目录
6.硬链接不能跨分区
软链接特征:
1.软链接和源文件拥有不同的 Inode 和 Block
2.两个文件修改任意一个,另一个都改变
3.删除软链接,源文件不受影响;删除源文件,软链接不能使用
4.软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变
5.软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文
件权限
7.软链接可以链接目录
8.软链接可以跨分区
9.软链接特征明显,建议使用软连接
目录和文件都能操作的命令
rm命令
rm 是强大的删除命令,不仅可以删除文件,也可以删除目录。这个命令的基本信息如下。
命令名称:rm。
英文原意:remove files or directories。
所在路径:/bin/rm。
执行权限:所有用户。
功能描述:删除文件或目录
[root@localhost ~]# rm [选项] 文件或目录
选项:
-f: 强制删除(force)
-i: 交互删除,在删除之前会询问用户
-r: 递归删除,可以删除目录(recursive)
cp命令
cp 是用于复制的命令,其基本信息如下:
命令名称:cp。
英文原意:copy files and directories。
所在路径:/bin/cp。
执行权限:所有用户。
功能描述:复制文件和目录。
命令格式
[root@localhost ~]# cp [选项] 源文件 目标文件
选项:
-a: 相当于-dpr 选项的集合,这几个选项我们一一介绍
-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i: 询问,如果目标文件已经存在,则会询问是否覆盖
-p: 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
-r: 递归复制,用于复制目录
mv 命令
mv 是用来剪切的命令,其基本信息如下。
命令名称:mv。
英文原意:move (rename) files。
所在路径:/bin/mv。
执行权限:所有用户。
功能描述:移动文件或改名。
命令格式
[root@localhost ~]# mv [选项] 源文件 目标文件
选项:
-f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-v: 显示详细信息
基本权限命令
权限位的含义
[root@localhost ~]# ls -l install.log
-rw-r--r--. 1 root root 24772 1 月 14 18:17 install.log
以使用“info ls”命令查看。超哥在这里只讲一些常见的文件类型。
- “-”:普通文件。
- “b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1
就是这种文件。 - “c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘
等。 - “d”:目录文件。Linux 中一切皆文件,所以目录也是文件的一种。
- “l”:软链接文件。
- “p”:管道符文件。这是一种非常少见的特殊设备文件。
- “s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样
的文件。
第 2~4 位代表文件所有者的权限。 - r:代表 read,是读取权限。
- w:代表 write,是写权限。
- x:代表 execute,是执行权限。
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。
第 5~7 位代表文件所属组的权限,同样拥有“rwx”权限。
第 8~10 位代表其他人的权限,同样拥有“rwx”权限基本权限命令chmod
首先来看修改权限的命令 chmod,其基本信息如下。
命令名称:chmod。
英文原意:change file mode bits。
所在路径:/bin/chmod。
执行权限:所有用户。
功能描述:修改文件的权限模式。命令格式
[root@localhost ~]# chmod [选项] 权限模式 文件名
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设定权限
权限模式
chmod 命令的权限模式的格式是“[ugoa][[+-=][perms]]”,
也就是“[用户身份][[赋予方式][权限]]”
的格式,我们来解释一下。
用户身份。
- u:代表所有者(user)。
- g:代表所属组(group)。
- o:代表其他人(other)。
- a:代表全部身份(all)。
赋予方式。
- +:加入权限。
- -:减去权限。
- =:设置权限。
权限。
- r:读取权限(read)。
- w:写权限(write)。
- x:执行权限(execute)。
例如:chmod u=rwx,go=rx .bashrc
数字赋权
数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权
限的含义。
4:代表“r”权限。
2:代表“w”权限。
1:代表“x”权限
常用权限
644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组
和其他人拥有读和执行权限。
777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这
会造成一定的安全隐患。
权限的基本作用
权限对文件的作用
- 读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,
那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查
看命令。 - 写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,
那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注
意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,
则需要对文件的上级目录拥有写权限。 - 执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,
只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,
不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行
(x)权限是最高权限。
权限对目录的作用
- 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪
些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可
以在目录下执行 ls 命令,查看目录下的内容了。 - 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、
删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)
权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高
权限。 - 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果
把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入
目录。
目录的可用权限
目录的可用权限其实只有以下几个。
- 0:任何权限都不赋予。
- 5:基本的目录浏览和进入权限。
- 7:完全权限。
所有者和所属组命令
chown 命令
chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。
命令名称:chown。
英文原意:change file owner and group。
所在路径:/bin/chown。
执行权限:所有用户。
功能描述:修改文件和目录的所有者和所属组。
1)命令格式
[root@localhost ~]# chown [选项] 所有者:所属组 文件或目录
选项:
-R:
递归设置权限,也就是给子目录中的所有文件设置权限
普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
普通用户可以修改所有者是自己的文件的权限。