Linux目录详解
/ |
根目录 |
/bin |
bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等 |
/boot |
这里存放的是启动 Linux时使用的一些核心文件,如内核initrd,grub。 |
/dev |
dev是device。存放设备文件(外部设备)–黑底红字,如dvd、cdrom。1、块设备–随机访问(数据块),2、字符设备–线性访问(有顺序、字符为单位)。其功能类似DOS下的.sys和Win下的.vxd。在 Linux中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。 |
/etc |
etcetera的缩写。系统及各应用的配置文件,文本格式存放。 |
/home |
用户的主目录,比如说有个用户叫zhong,那他的主目录就是/home/zhong也可以用~zhong表示。 |
/lib |
library的缩写库文件,(静态库,动态库)这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。 注意:库文件不能直接运行,只能被程序的访问\执行接口调用。 |
/lost+found |
这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。 |
/meida |
挂载点目录–移动设备 |
/mnt |
mount缩写。这个目录是让用户临时挂载别的文件系统 |
/opt |
可选目录,有些第三方软件(即和系统无任何关系),把此目录当作默认安装位置 |
/proc |
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。 (可查看内核工作属性) |
/root |
系统管理员root的主目录。 |
/run |
存放系统运行的相关文件 |
/sbin |
s就是Super User的意思,也就是说这里存放的是系统管理员使用的管理程序。 |
/srv |
server的简写,提供一些特定服务的所在目录。 |
/sys |
伪文件系统,跟硬件设备相关的属性映射文件 |
/tmp |
用来存放一些临时文件的地方。 |
/usr |
这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。 |
/var |
存放着可变化的文件,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log/messages目录中,可以使用tail -f /var/log/messages来查看。 |
/misc |
杂项设备(misc device),杂项设备也是在嵌入式系统中用得比较多的一种设备驱动. |
/cgroup |
cgroup就是controller group。是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。Cgroups也是LXC为实现虚拟化所使用的资源管理手段. |
/dev |
dev是device。存放设备文件(外部设备)–黑底红字,如dvd、cdrom。1、块设备–随机访问(数据块),2、字符设备–线性访问(有顺序、字符为单位)。其功能类似DOS下的.sys和Win下的.vxd。在 Linux中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。 |
/dev/cdrom |
光盘设备,光盘里存放的内容都在里面,以后用来为操作系统补包 |
/dev/null |
黑洞文件,把不想要显示的内容都放在里面 |
/etc |
etcetera的缩写。系统及各应用的配置文件,文本格式存放。 |
/etc/hostname |
主机名的配置文件 |
/etc/gateways |
设定路由器 |
/etc/sysconfig/network-scripts/ifcfg-eth0 |
网卡的配置文件 |
/etc/resolv.conf |
设置DNS地址 |
/etc/hosts |
本地的域名解析文件 |
/etc/fstab |
记录开机要mount的文件系统(做磁盘配额的时候用过这个文件) |
/etc/inittab |
设定系统启动时init进程把系统设置成什么样的runlevel |
/etc/group |
设定用户的组名与相关信息 |
/etc/passwd |
帐号信息 |
/etc/shadow |
密码信息 |
/etc/exports |
设定NFS系统用的 |
/proc |
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。 (可查看内核工作属性) |
/proc/sys/net/ipv4 |
与网络优化相关的文件夹 |
/usr |
这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。 |
/usr/X11R6 |
存放X-Window的目录; |
/usr/bin |
存放着许多应用程序; |
/usr/sbin |
给超级用户使用的一些管理程序就放在这里; |
/usr/doc |
这是 Linux文档的大本营; |
/usr/include |
Linux下开发和编译应用程序需要的头文件,在这里查找; |
/usr/lib |
存放一些常用的动态链接共享库和静态档案库; |
/usr/local |
这是提供给一般用户的/usr目录,在这里安装软件最适合; |
/usr/man |
man在 Linux中是帮助的同义词,这里就是帮助文档的存放目录; |
/usr/src |
Linux开放的源代码就存在这个目录 |
/var |
存放着可变化的文件,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下。 |
/var/log |
日志文件 |
/var/run |
每个进程的PID文件 |
/var/mail |
用户的邮件未查看的用户队列 |
文件与目录命令
查看文件信息
观察文件基本数据
1
| file [文件] # 是否属于 ASCII 或者是 data 文件,或者是 binary , 且其中有没有使用到动态函数库 (share library) 等等的信息,就可以利用 file 这个指令来检阅
|
列出文件信息
1 2 3
| ls -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来 ls -d :仅列出目录本身,而不是列出目录内的文件数据(常与-l连用:ls -ld) ls -l : 长数据串行出,包含文件的属性与权限等等数据;(常用别名ll)
|
查看目录结构
1 2 3 4
| tree [目录] # 以树形方式展示目录结构 tree -a [目录] # 连带展示隐藏文件 tree -L [数字] [目录] # 展示到第几层目录 tree -F [目录] # 在结果中区分文件和文件夹(文件夹后会带 / )
|
查看目录大小
1 2
| du -h [目录] # 查看该目录下的子目录大小 du -sh [目录] # 查看该目录内所有文件占用的大小
|
显示当前的工作目录
1
| pwd # print working directory
|
1
| pwd -p # 显示完整的真实路径,而非链接路径
|
查看文本文件内容
1 2 3 4
| cat [-options] [文件] # 正向查看 tac [-options] [文件] # 反向查看 cat -n # 显示行号 cat -A # 显示控制字符
|
1 2 3 4
| head [-x] [文件] # 默认查看前10行内容,x代表数字,查看前几行 tail [-x] [文件] # 默认查看后10行内容,x代表数字,查看后几行 tail -4 a.txt | head -2 # 查看后四行的前两行,即查看倒数第4行和倒数第3行 tail -f a.txt # 动态监测文件末尾内容
|
1 2
| less [文件] # 查看文件,上下键可以翻页 more [文件] # 查看文件,空格键可以翻页
|
查阅二进制文件内容
1 2 3 4 5 6 7
| -t :后面可以接各种“类型 (TYPE)”的输出,例如: a :利用默认的字符来输出; c :使用 ASCII 字符来输出 d[size] :利用十进制(decimal)来输出数据,每个整数占用 size Bytes ; f[size] :利用浮点数值(floating)来输出数据,每个数占用 size Bytes ; o[size] :利用八进位(octal)来输出数据,每个整数占用 size Bytes ; x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size Bytes ;
|
搜寻文件
1 2 3 4 5 6
| whereis [-options] [文件或目录] # 在一些特定的目录中查找文件或目录 -l :可以列出 whereis 会去查询的几个主要目录而已 -b :只找 binary 格式的文件 -m :只找在说明文档 manual 路径下的文件 -s :只找 source 来源文件 -u :搜寻不在上述三个项目当中的其他特殊文件
|
1 2 3 4 5 6 7
| locate [-options] [文件或目录的关键字] # 在系统数据库中搜索包含关键字的文件或目录 -i :忽略大小写的差异; -c :不输出文件名,仅计算找到的文件数量 -l :仅输出几行的意思,例如输出五行则是 -l 5 -S :输出 locate 所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等 -r :后面可接正则表达式的显示方式 系统数据库每日自动更新,如果需要手动更新可以输入 updatedb
|
目录堆栈
为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录,而使用pushd
和popd
命令可以记忆多重目录。
cd
cd
命令用于切换目录
1
| cd [相对路径/绝对路径] # change directory
|
1 2 3 4
| Explaincd # 不加任何参数代表切换到当前使用者的主文件夹 ~ cd ~dengpangpang # 代表切换到某用户的主文件夹,仅限root用户使用 cd .. # 去到上层目录 cd - # 回到刚刚的那个目录
|
pushd
pushd
命令的用法类似cd
命令,可以进入指定的目录。
1 2 3 4
| Explainpushd dirname # 进入目录`dirname`,并将该目录放入栈顶 pushd # 切换栈顶第一条和第二条的目录作为自己的工作目录 pushd +n # 将从栈顶算起的n号目录(从0开始)移动到栈顶,同时切换到该目录 pushd -n # 将从栈底算起的n号目录(从0开始)移动到栈顶,同时切换到该目录
|
popd
popd
命令不带有参数时,会移除堆栈的顶部记录,并进入新的栈顶目录(即原来的第二条目录)
1 2 3
| popd # 删除栈顶元素,并进入新的栈顶目录 popd +n # 删除从栈顶算起的n号目录(从0开始),不改变当前目录 popd -n # 删除从栈底算起的n号目录(从0开始),不改变当前目录
|
dirs
dirs
命令可以显示目录堆栈的内容,一般用来查看pushd
和popd
操作后的结果。
一般使用pushd
和popd
操作后也会输出一行,显示目录堆栈,目录之间使用空格分隔。栈顶在最左边,栈底在最右边。
1 2
| dirs -v # 每行一个条目,每个条目之前显示位置编号(从0开始) dirs -c # 清空目录栈
|
文件及目录的创建、删除和移动
文件的属性与权限
查看创建文件/目录时的默认权限
改变文件拥有者
1
| chown [账号名称] [文件或目录] # change owner
|
1
| chown -R [账号名称:群组名称] [文件或目录] # 同时改变文件拥有者和群组, -R表示递归修改,用于目录的修改。
|
改变文件所属群组
1
| chgrp [-R] [群组名] [文件或目录] # change group ,-R表示递归,用于目录
|
改变文件权限
数字形式改变文件权限
1
| chmod [-R] xyz [文件或目录] # xyz分别代表文件拥有者,群组和其他人的权限
|
字母方式改变文件权限
1
| chmod [-R] u=rwx,go=rx [文件或目录] # u指user,g指代group,o指代others
|
1
| chmdo [-R] a-x [文件或目录] # a代表三种身份,a-x表示三种身份都拿掉执行权限
|
文件隐藏属性
1 2 3 4
| lsattr [-options] [文件或目录] # 查看文件隐藏属性 -a :展示文件的隐藏属性 -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名; -R :连同子目录的数据也一并列出来
|
1 2 3 4
| chattr [+/—/=] [options] [文件或目录] # 设置文件隐藏属性,+-=表示增加移除或设定属性 a :仅允许追加内容 i :禁止任何修改 A :不更改文件访问时间
|
三种文件时间
1 2 3 4 5
| ctime: change time。对文件更名,修改文件的属主等操作,会更新ctime。
mtime: 就是modify time。mtime和ctime的区别在于,只有修改了文件的内容,才会更新文件的mtime
atime: access time。这个就是每次查看文件内容的时候会更新。比如cat操作,而ls操作是不会更新的。
|