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/ 系统的定时任务队列保存位置。系统的计划任务会保存在这里

常用的注意事项

  1. 远程服务器在重启之前,要中止正在执行的服务
  2. 重启命令的选择 建议使用 shutdown -r row,这个命令在重启时会正常保存和中止服务器总正在运行的程序,是安全的重启命令。而且在执行之前执行几次 sync ,这条命令是数据同步命令,可以让暂时保存在内存的数据同步到硬盘上。
  3. 不要在服务器访问高峰运行高负载命令: 如大文件的复制、压缩或者解压大文件、大范围的硬盘搜索。
  4. 远程配置防火墙时候不要把自己踢出去服务器。还可以写一个系统定时任务5分钟清空一下防火墙规则再进行配置。
  5. 合理分配权限,给用户最小的权限。
  6. 定期备份重要的数据和日志。

linux常用命令

命令的基本格式

命令 [选项] [参数]

目录相关命令

ls命令

  1. ls [选项] [文件名或目录名]
  2. 选项:
  3. -a: 显示所有文件
  4. --color=when: 支持颜色输出,when 的值默认是 always(总显示颜色),也可以是
  5. never(从不显示颜色)和 auto(自动)
  6. -d 显示目录信息,而不是目录下的文件
  7. -h 人性化显示,按照我们习惯的单位显示文件大小
  8. -i 显示文件的 i 节点号
  9. -l:长格式显示
  10. [root@localhost ~]# ls -l
  11. 总用量 44
  12. -rw-------. 1 root root 1207 1 14 18:18 anaconda-ks.cfg
  13. #权限 引用计数 所有者 所属组 大小 文件修改时间 文件名

cd命令

  1. d 是切换所在目录的命令,这个命令的基本信息如下。
  2. 命令名称:cd
  3. 英文原意:change directory
  4. 所在路径:Shell 内置命令。
  5. 执行权限:所有用户。
  6. 功能描述:切换所在目录。
  7. ~ 代表用户的家目录
  8. - 代表上次所在目录
  9. . 代表当前目录
  10. .. 代表上级目录

pwd 命令

  1. pwd 命令是查询所在目录的命令,基本信息如下:
  2. 命令名称:pwd
  3. 英文原意:print name of current/working directory
  4. 所在路径:/bin/pwd
  5. 执行权限:所有用户。
  6. 功能描述:查询所在的工作目录。

mkdir 命令

  1. mkdir 是创建目录的命令,其基本信息如下。
  2. 命令名称:mkdir
  3. 英文原意:make directories
  4. 所在路径:/bin/mkdir
  5. 执行权限:所有用户。
  6. 功能描述:创建空目录。
  7. [root@localhost ~]# mkdir [选项] 目录名
  8. 选项:
  9. -p:递归建立所需目录

rmdir 命令

  1. 既然有建立目录的命令,就一定会有删除目录的命令 rmdir,其基本信息如下。
  2. 命令名称:rmdir
  3. 英文原意:remove empty directories
  4. 所在路径:/bin/rmdir
  5. 执行权限:所有用户。
  6. 功能描述:删除空目录。
  7. root@localhost ~]# rmdir [选项] 目录名
  8. 选项:
  9. -p 递归删除目录
  10. rmdir 命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。
  11. 这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用 rm
  12. 命令

文件操作命令

touch 命令

  1. 创建空文件或修改文件时间,这个命令的基本信息如下。
  2. 命令名称:touch
  3. 英文原意:change file timestamps
  4. 所在路径:/bin/touch
  5. 执行权限:所有用户。
  6. 功能描述:修改文件的时间戳。

stat 命令

  1. stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间,其基本信息如下。
  2. 命令名称:stat
  3. 英文原意:display file or file system status
  4. 所在路径:/usr/bin/stat
  5. 执行权限:所有用户。
  6. 功能描述:显示文件或文件系统的详细信息
  7. [root@localhost ~]# stat anaconda-ks.cfg
  8. 文件:"anaconda-ks.cfg"
  9. 大小:1453
  10. 块:8 IO 块:4096 普通文件
  11. 设备:803h/2051d Inode33574991 硬链接:1
  12. 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
  13. 环境:system_u:object_r:admin_home_t:s0
  14. 最近访问:2018-11-06 23:22:23.409038121 +0800
  15. 最近更改:2018-10-24 00:53:08.760018638 +0800 #数据修改时间
  16. 最近改动:2018-10-24 00:53:08.760018638 +0800 #状态修改时间
  17. 创建时间:-

cat 命令

  1. cat 命令用来查看文件内容。这个命令的基本信息如下。
  2. 命令名称:cat
  3. 英文原意:concatenate files and print on the standard output
  4. 所在路径:/bin/cat
  5. 执行权限:所有用户。
  6. 功能描述:合并文件并打印输出到标准输出
  7. 命令格式
  8. [root@localhost ~]# cat [选项] 文件名
  9. 选项:
  10. -A 相当于-vET 选项的整合,用于列出所有隐藏符号
  11. -E 列出每行结尾的回车符$
  12. -n 显示行号
  13. -T Tab 键用^I 显示出来
  14. -v 列出特殊字符

more 命令

  1. more 是分屏显示文件的命令,其基本信息如下。
  2. 命令名称:more
  3. 英文原意:file perusal filter for crt viewin
  4. 所在路径:/bin/more
  5. 执行权限:所有用户。
  6. 功能描述:分屏显示文件内容。
  7. more 命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。常
  8. 用的交互命令如下。
  9. 空格键:向下翻页。
  10. b:向上翻页。
  11. 回车键:向下滚动一行。
  12. /字符串:搜索指定的字符串。
  13. q:退出。

less 命令

  1. less 命令和 more 命令类似,只是 more 是分屏显示命令,而 less 是分行显示命令,其基本信息如
  2. 下。
  3. 命令名称:less
  4. 英文原意:opposite of more
  5. 所在路径:/usr/bin/less
  6. 执行权限:所有用户。
  7. 功能描述:分行显示文件内容

head 命令

  1. head 是用来显示文件开头的命令,其基本信息如下。
  2. 命令名称:head
  3. 英文原意:output the first part of files
  4. 所在路径:/usr/bin/head
  5. 执行权限:所有用户。
  6. 功能描述:显示文件开头的内容
  7. [root@localhost ~]# head [选项] 文件名
  8. 选项:
  9. -n 行数: 从文件头开始,显示指定行数
  10. -v 显示文件名

ln命令

  1. 我们来看看 ln 命令的基本信息。
  2. 命令名称:ln
  3. 英文原意:make links between file
  4. 所在路径:/bin/ln
  5. 执行权限:所有用户。
  6. 功能描述:在文件之间建立链接。
  7. ln 命令的基本格式如下:
  8. root@localhost ~]# ln [选项] 源文件 目标文件
  9. 选项:
  10. -s 建立软链接文件。如果不加“-s”选项,则建立硬链接文件
  11. -f 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
  12. 如果创建硬链接:
  13. [root@localhost ~]# touch cangls
  14. [root@localhost ~]# ln /root/cangls /tmp/
  15. #建立硬链接文件,目标文件没有写文件名,会和原名一致
  16. #也就是/root/cangls 和/tmp/cangls 是硬链接文件
  17. 如果创建软链接:
  18. [root@localhost ~]# touch bols
  19. [root@localhost ~]# ln -s /root/bols /tmp/
  20. #建立软链接文件
  21. 硬链接与软连接的特征
  22. 硬链接特征:
  23. 1.源文件和硬链接文件拥有相同的 Inode Block
  24. 2.修改任意一个文件,另一个都改变
  25. 3.删除任意一个文件,另一个都能使用
  26. 4.硬链接标记不清,很难确认硬链接文件位置,不建议使用
  27. 5.硬链接不能链接目录
  28. 6.硬链接不能跨分区
  29. 软链接特征:
  30. 1.软链接和源文件拥有不同的 Inode Block
  31. 2.两个文件修改任意一个,另一个都改变
  32. 3.删除软链接,源文件不受影响;删除源文件,软链接不能使用
  33. 4.软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变
  34. 5.软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文
  35. 件权限
  36. 7.软链接可以链接目录
  37. 8.软链接可以跨分区
  38. 9.软链接特征明显,建议使用软连接

目录和文件都能操作的命令

rm命令

  1. rm 是强大的删除命令,不仅可以删除文件,也可以删除目录。这个命令的基本信息如下。
  2. 命令名称:rm
  3. 英文原意:remove files or directories
  4. 所在路径:/bin/rm
  5. 执行权限:所有用户。
  6. 功能描述:删除文件或目录
  7. [root@localhost ~]# rm [选项] 文件或目录
  8. 选项:
  9. -f 强制删除(force
  10. -i 交互删除,在删除之前会询问用户
  11. -r 递归删除,可以删除目录(recursive

cp命令

  1. cp 是用于复制的命令,其基本信息如下:
  2. 命令名称:cp
  3. 英文原意:copy files and directories
  4. 所在路径:/bin/cp
  5. 执行权限:所有用户。
  6. 功能描述:复制文件和目录。
  7. 命令格式
  8. [root@localhost ~]# cp [选项] 源文件 目标文件
  9. 选项:
  10. -a 相当于-dpr 选项的集合,这几个选项我们一一介绍
  11. -d 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
  12. -i 询问,如果目标文件已经存在,则会询问是否覆盖
  13. -p 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
  14. -r 递归复制,用于复制目录

mv 命令

  1. mv 是用来剪切的命令,其基本信息如下。
  2. 命令名称:mv
  3. 英文原意:move (rename) files
  4. 所在路径:/bin/mv
  5. 执行权限:所有用户。
  6. 功能描述:移动文件或改名。
  7. 命令格式
  8. [root@localhost ~]# mv [选项] 源文件 目标文件
  9. 选项:
  10. -f 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
  11. -i 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
  12. -v 显示详细信息

基本权限命令

权限位的含义

  1. [root@localhost ~]# ls -l install.log
  2. -rw-r--r--. 1 root root 24772 1 14 18:17 install.log

image.png

以使用“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。
     执行权限:所有用户。
     功能描述:修改文件的权限模式。

    命令格式

    1. [root@localhost ~]# chmod [选项] 权限模式 文件名
    2. 选项:
    3. -R 递归设置权限,也就是给子目录中的所有文件设定权限

权限模式

  1. chmod 命令的权限模式的格式是“[ugoa][[+-=][perms]]”,
  2. 也就是“[用户身份][[赋予方式][权限]]”
  3. 的格式,我们来解释一下。
  4. 用户身份。
  5. - u:代表所有者(user)。
  6. - g:代表所属组(group)。
  7. - o:代表其他人(other)。
  8. - a:代表全部身份(all)。
  9. 赋予方式。
  10. - +:加入权限。
  11. - -:减去权限。
  12. - =:设置权限。
  13. 权限。
  14. - r:读取权限(read)。
  15. - w:写权限(write)。
  16. - x:执行权限(execute)。
  17. 例如:chmod u=rwx,go=rx .bashrc

数字赋权

数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权
限的含义。
 4:代表“r”权限。
 2:代表“w”权限。
 1:代表“x”权限

常用权限

  1. 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
  2. 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组
  3. 和其他人拥有读和执行权限。
  4. 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这
  5. 会造成一定的安全隐患。

权限的基本作用

权限对文件的作用
  • 读(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 命令

  1. chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。
  2. 命令名称:chown
  3. 英文原意:change file owner and group
  4. 所在路径:/bin/chown
  5. 执行权限:所有用户。
  6. 功能描述:修改文件和目录的所有者和所属组。
  7. 1)命令格式
  8. [root@localhost ~]# chown [选项] 所有者:所属组 文件或目录
  9. 选项:
  10. -R
  11. 递归设置权限,也就是给子目录中的所有文件设置权限
  12. 普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
  13. 普通用户可以修改所有者是自己的文件的权限。