您的位置:首页 > 其它

系统基础之文件结构及is cd详解

2016-07-26 21:51 197 查看
在博文开始,先放出centos6.8和centos7.2的根目录结构,大家可先做对比,看有哪些不同。有个直观的印象,下面我们来详细的讲解linux系统的文件结构。查看centos6.8和centos7.2 的根文件列表:[root@wen-7 /]# lsbin dev home lib64 mnt proc run srv tmp varboot etc lib media opt root sbin sys usr[root@wen-6 /]# ls

bin cgroup etc lib lost+found misc net proc sbin srv tmp varboot dev home lib64 media mnt opt root selinux sys usr不一样的目录不是标准目录,不符合FHS(文件系统分层标准

一、文件系统1.概论文件和目录被组织成一个单根倒置数结构文件系统从根目录开始,用“/”表示根文件系统(rootfs):root filesystem文件系统大小写不敏感,linux本身操作系统大小写敏感以 。开头的文件为隐藏文件路径分隔符为 “/”文件有两类数据: 元数据:metadate 数据:date存放数据内容的地方,叫数据块(date block) 是 linux 的最小的基本数据单位 4096字节为1单位文件系统分层结构:LSB Linux Standard Base文件名规则:包括路径在内文件名称最长4095字节,用/分隔的路径不能超过255个字节文件颜色: 蓝色-->目录 文件格式以d打头 绿色--->可执行文件 文件格式以p打头 红色--->压缩文件 文件格式以p打头 浅蓝色-->链接文件 文件格式以 "l"打头 灰色--->普通文件 文件格式以p打头 粉色--->套接字 文件格式以s打头 进程间通信使用 浅黄色---> 管道文件 文件格式以p打头 黄色黑底-->设备文件 文件格式为C大头标准文件系统(ext4),文件名称大小写敏感,如:MAIL Mail mail mAil 2.文件系统结构:根文件结构


2.目录结构:
/bin:供所有用户使用的基本命令程序文件;/sbin:供系统管理使用的工具程序;/boot:引导文件(initramfs,iniitrd)存放目录 内核文件(Vmlinuz),引导加载器(bootloader,grub)都存放在此处/dev:存储特殊文件或设备文件 b:块设备文件 block device 随机访问,块设备有缓存,物理设备 c:字符设备文件character device 顺序访问,没有缓存 空设备:/dev/null /dev/zero hexdump 命令:查看二进制文件,把二进制转化为十六进制 xxd: $RANDOM : 环境变量 随机整数 0-32767 echo ¥RANDOM/etc:系统程序的配置文件目录 只能为静态;/home:普通用户家目录的集中位置 ;一般每个普通到的家目录默认为此目录下雨用户名同名的子目录:/home/USERNAME ;/root:管理员用户家目录; 建议不用管理员登录/run:系统运行合法信息;/proc:用于输出内核与进程信息相关的虚拟文件系统,他们多为内核参数;/lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库文件以及为内核提供内核模块(/lib/modules) ; libc.so:动态链接c库; ld*:运行时链接器/加载器; modules:用于存储内核模块的目录;/lib64:专用于x86_64系统上的共享库文件存放位置 有一些文件仍放在/lib下media:便携式移动设备挂载点 centos6默认 ;/mnt:临时文件系统挂载点;/opt:第三方非关键性应用程序的安装位置;/srv:当前主机为运行的服务提供的数据‘; /tmp:临时文件存储位置 所有用户可执行写入操作,有特殊权限 30天清理;/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统;/proc的分支,能提供更为丰富的接口 其主要作用: 为linux统一设备模型提供管理接口 https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/ 参考文档 例: 添加硬盘后,不同重启设备识别,扫描硬盘即可: echo "- - - " > /sys/class/scai_host/host2/scan 扫描硬件 ls /dev/sd* /selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置/usr: universal shared read-only date 不允许普通用户有写权限 bin:保证系统拥有的完整功能而提供的应用程序 sbin: lib 32位使用 为/bin /sbin提供库文件 lib64:只存在64位系统 为/bin /sbin提供库文件 include:C程序的头文件(header files) share:结构化独立的数据,例如:doc。 src:程序源码文件的存储位置 local: 第三方应用程序的安装位置 另一个层级目录 让系统管理员安装本地应用程序,也通常用于安装第三方程序 bin,sbin,lib,lib64,etc,share /usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。 usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录 /usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间 /usr/share/dict/words linux 字典文件/var:variables date files 存储经常发生变化的数据的目录 cache:应用程序缓存数据目录 lib:库文件 local:应用程序文件 run: 程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间 log:日志文件

3.linux上的应用程序的组成部分二进制程序: /bin,/sbin,/usr/bin,/usr/sbin,/usr.local/bin,/usr/local/sbin库文件: /lib,/lib64,/usr/lib,/usr/lib64 /usr/local/lib,/usr/local/lib64配置文件:/etc/,/etc/DIRECTORY,/usr/local/rtc帮助文件: /usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/share/doc4.RHEL7 目录变化/bin/和/usr/bin /sbin和/usr/sbin/lib和/usr/lib/lib64和/usr/lib64 5.显示当前工作目录每个shell和系统进程都有一个当前的工作目录CWD:current work directory显示当前shell CWD的绝对路径#pwd:printing workingdirectory显示上一次shell CWD的绝对路径#OLDPWD 6.绝对路径和相对路径绝对:以正斜号开始完整的文件的位置路径可用于任何想指定一个文件名的时候例: /etc/sysconfig/network-scripts/ifcfg-eth0相对:

不以斜线开始指定相对当前的工作目录位置 以当前位置为参照 可以作为一个简短的形式指定一个文件名 例: [root@wen-6 network-scripts]# cd /etc/sysconfig/ [root@wen-6 sysconfig]# cd network-scripts/
3.更改目录;1.cd:改变目录为绝对火相对路径:cd /home/joshua/workcd project/docs到上一级目录cd ..到用户主目录cd到以前的工作目录;cd - 特殊选项: -p:到真实物理路径例: cd -p bin 对链接目录使用[root@wen-7 bin]# ll -d /binlrwxrwxrwx. 1 root root 7 7月 19 19:00 /bin -> usr/bin[root@wen-7 bin]# cd -p /bin-bash: cd: -p: 无效选项cd: 用法:cd [-L|[-P [-e]]] [dir][root@wen-7 bin]# cd -P /bin[root@wen-7 bin]# pwd/usr/bin相关的环境变量:PWD:当前目录OLDPWD:上一次所在目录路径 2.ls:列出目录内容:文件和目录名称可以是绝对的(表示它们以 / 开头),也可以是与当前工作目录相对的(表示它们不是以 / 开头)。文件或目录的绝对路径包含一个 /,后跟 0 或多个目录名称,每个名称后跟另一个 /,然后是最终的名称。给定一个与当前工作目录相对的文件或目录名称,简单地串联工作目录的绝对名称、/ 和相对名称。例如,创建的目录 lpi103-2 是在我的主目录 /home/ian 中创建的,所以它的完整或绝对路径是 /home/ian/lpi103-2。您可以使用
pwd
命令显示当前工作目录的名称。它通常还可用在 PWD 环境变量中。清单 1 展示了
pwd
命令的使用,以及使用
ls
命令列出此目录中的文件的 3 种不同方式。
[root@wen-7 ~]# echo "$PWD"
/root
[root@wen-7 ~]# ls
passwd.bak  shell
[root@wen-7 ~]# ls `$PWD`
-bash: /root: 是一个目录
passwd.bak  shell
[root@wen-7 ~]# ls "$PWD"
passwd.bak  shell
[root@wen-7 ~]# ls /root
passwd.bak  shell
[root@wen-7 ~]#
您可以看到,可以提供相对或绝对目录名称作为 ls 命令的参数,该命令将列出此目录的内容,下面是ls命令的详细用法。ls:列出当前目录的内容或指定目录
用法: ls [options] [file_or_dirs]Example: ls -a:包含隐藏文件 ls -l:显示额外信息 ls -R:目录地递归显示 ls -ld:目录和符号链接信息 ls -1(数字):分行显示 ls -S:从大到小排序 ls -h:以易读的方式显示文件大小 ls -i: 显示 indoe号 ls -d:只显示当前目录 清单 2 .使用 ls
-l
-a
选项显示所有文件的常用的格式化清单,包括 . 和 .. 目录条目。
[root@wen-7 ~]# ls -l
总用量 8
-rwSr--r-- 1 root root 2620 7月  24 10:10 passwd.bak
drwxr-xr-x 2 root root 4096 7月  23 14:57 shell
[root@wen-7 ~]# ls -la
总用量 96
dr-xr-x---. 11 root root  4096 7月  26 23:35 .
dr-xr-xr-x. 17 root root  4096 7月  19 23:05 ..
-rw-------.  1 root root 26888 7月  26 09:47 .bash_history
-rw-r--r--.  1 root root    18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root   176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root   176 12月 29 2013 .bashrc
drwx------. 17 root root  4096 7月  26 09:49 .cache
drwxr-xr-x. 17 root root  4096 7月  26 09:49 .config
-rw-r--r--.  1 root root   100 12月 29 2013 .cshrc
drwx------.  3 root root    24 7月  19 11:40 .dbus
-rw-------.  1 root root    16 7月  19 12:45 .esd_auth
drwx------   2 root root     6 7月  24 22:21 .gvfs
-rw-------.  1 root root  3120 7月  26 09:49 .ICEauthority
drwx------   3 root root    38 7月  20 17:53 .kde
-rw-------   1 root root    56 7月  25 18:55 .lesshst
drwx------.  3 root root    18 7月  19 12:45 .local
drwxr-xr-x   4 root root    37 7月  19 16:09 .mozilla
-rwSr--r--   1 root root  2620 7月  24 10:10 passwd.bak
drwxr-xr-x   2 root root  4096 7月  23 14:57 shell
-rw-r--r--.  1 root root   129 12月 29 2013 .tcshrc
-rw-------   1 root root  6501 7月  26 23:35 .viminfo
drwxr-xr-x   2 root root    74 7月  26 09:48 .vnc
-rw-------   1 root root    52 7月  26 09:48 .Xauthority

在 清单 2 中,第一行显示了列出的文件所使用的磁盘块总数 (96)。剩余行显示目录条目的信息。*第一个字段(在本例中为 drwxrwxr-x 或 -rw-rw-r--)告诉我们,该文件是目录 (d) 还是常规文件 (-)。您还能够看到一些特殊文件(比如 /dev 文件系统中的文件)的符号链接 (l) 或其他值。可以在教程创建和更改硬链接和符号链接 中了解符号链接的更多信息(参见 系列路线图)。类型的后面是所有者、所有者所在组的成员和每个人的 3 组权限(比如 rwx 或 r--)。这 3 个值分别表示用户、组或每个人拥有读 (r)、写 (w) 或执行 (x) 权限。其他用法(比如 setuid)已在教程 管理文件权限和所有权 中介绍。
*下一个字段是一个数字,它会告诉您该文件的硬链接 数量。我说过 inode 包含文件的信息。该文件的目录条目包含文件的 inode 硬链接(或指针),所以列出的每个条目都至少应该拥有一个硬链接。目录条目中有一个 . 条目和针对每个子目录条目的一个条目。所以我们可以从 清单 2 看到,我的主目录(表示为 ..)包含许多子目录,因为它有 15 个硬链接。
*接下来的两个字段是文件的所有者和所有者的主要组。一些系统(比如 Red Hat 或 Fedora 系统)默认情况下为每个用户提供了不同的组。在其他系统上,所有用户都可以位于一个或一些组中。
*下一个字段包含文件的长度(以字节为单位)。
*倒数第二个字段包含最后修改的时间戳。时间戳格式取决于您的语言环境和日期本身。在我的语言环境中,从今年开始到现在的天数的时间戳显示为 3 个字符的月份缩写、一月中的第几天和 HH:MM 格式的时间。更老的文件或具有未来的日期的文件会使用年份取代 HH:MM 组件。您可以在下面的 接触文件 下看到更多示例。
*最后一个字段包含文件或目录的名称。
清单3,使用ls
命令的
-i
选项将显示您的 inode 数量 文件名前面的数字就是inode。配合数字1选项,可以让信息分行显示,
[root@wen-7 ~]# ls -i1
72259313 passwd.bak
73593312 shell
清单4,列出文件的访问时间和修改时间
[root@wen-7 ~]# ll --time=atime passwd.bak
-rwSr--r-- 1 root root 2620 7月  25 16:41 passwd.bak
[root@wen-7 ~]# ll --time=ctime passwd.bak
-rwSr--r-- 1 root root 2620 7月  25 16:41 passwd.bak
当读取文件后,atime不会轻易改变,只有当atime时间大于24小时没有发生改变或者atime比mtime时间要旧,两个条件满足之一,atime时间才会改变,也可以配置atime永不改变 使用命令chattr +A file来锁定文件的Atime时间,使用命令stat+file_name可以查看文件的详细信息,包括文件的时间戳 3.centos 6 的神奇目录 [root@wen-6 ~]# cd /misc/[root@wen-6 misc]# cd cd[root@wen-6 cd]# lsCentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6EFI Packages RPM-GPG-KEY-CentOS-Security-6EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6GPL repodata TRANS.TBLimages RPM-GPG-KEY-CentOS-6[root@wen-6 cd]# mount /dev/mapper/vg_wen6-lv_root on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw)/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)/dev/sr0 on /mnt type iso9660 (ro)/dev/sr0 on /misc/cd type iso9660 (ro,nosuid,nodev) 自动挂载光盘 作业:1.博客2.课堂练习 命令操作3.显示隐藏文件 只显示隐藏
root@wen-7 ~]# ls -d .*
.              .bash_logout   .cache   .dbus      .ICEauthority  .local    .viminfo
..             .bash_profile  .config  .esd_auth  .kde           .mozilla  .vnc
.bash_history  .bashrc        .cshrc   .gvfs      .lesshst       .tcshrc   .Xauthority
只显示某目录下的目录列表
[root@wen-7 ~]# ls
passwd.bak  shell
[root@wen-7 ~]# ls -F| ls -d */
shell/

以上是我个人对文件结构的理解和对ls,cd命令使用的详解,还有一些细节没有表达清楚,以后会在逐渐补充。
本文出自 “linux系统” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: