03 Linux的目录结构与常见文件管理
Posted Burnov
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03 Linux的目录结构与常见文件管理相关的知识,希望对你有一定的参考价值。
Linux目录结构
根文件系统rootfs用来实现整个文件的管理;
而Linux下的所有文件都需要通过根文件系统才能访问;
FHS:Filesystem Hierarchy Standard文件层次化规范,所有的Linux系统都需要遵循FHS规定;
/ 根目录,所有文件都在根下!!!
/boot 存放与系统启动的相关文件,如内核、initrd、以及grub(bootloader,启动加载项)
initrd.img 磁盘镜像文件
vmlinux.el5 虚拟内存文件
/dev 设备文件存放的目录,设备文件注意一点,有的文件可能有多个软连接,连接到同一个文件,这是为了区分连接文件的不同权限或功能;
块设备文件:随机设备,可以实现随机访问,(磁盘(块设备)和磁带:磁带就没办法直接访问到你想要的数据,这样的设备就不是块设备了)
字符设备文件:线性访问,按字符为单位
设备号:通过主设备号(major)和次设备号(minor),一个硬件设备一定要有设备号才能够被访问到,而创建设备号这个过程就是由我们系统自动为我们来完成(ls -l 文件大小的地方,如果是设备文件,就显示的是主次设备号)
/home 用户的家目录,每个用户都有一个家目录,默认情况下,每一个用户都有一个和用户名相同的同名目录/home/USERNAME;
/root 这是root用户的家目录
/lib 库文件目录 /lib/modules 内核模块文件
库文件分为两种:静态库和动态库,动态库.dll(这是windows下的库文件) .so(sheared object共享对象)、静态库 .a ;动态库调用:如果一个程序在运行中的时候调用了某个库文件,而之后又有另外一个程序调用这个库,此时,这个库文件已经加载到了内存中去了,这样的话就不用再进行二次加载;
如果是静态库文件,这个库文件会被复制到运行文件中去,如果做程序迁移,就会带上这个库文件一起复制过去;
这里要注意的是:库文件不能单独执行,只有被其他的程序调用的时候,库文件才会运行;
/lost+found 存放系统非正常断电的时候的碎片文件
/media /mnt 这两个目录都是挂载点目录,而在FHS中/media用来挂载移动设备,/mnt用来挂载额外的临时文件系统;
/opt option可选目录,原来一直用来存放第三方程序,而现在则将第三方程序放在了/usr/local目录下
/proc 进程目录,它是一个伪文件系统,里面没有任何内容,在系统没有运行的时候是一个空目录,当系统运行起来以后会存放对应的进程映射文件;
/sys 同样是一个伪文件系统,和硬件设备相关的属性的映射文件存放在这个文件目录下,在关机的情况下也是空目录;
/tmp 临时文件,所有的用户都对这个目录拥有读写执行的权限,当时A用户写入的文件,B用户无法删除和修改,但是可以读。同时,如果/tmp目录在一个月的时间里面没有任何人访问或者修改,则里面的内容就会被清空;【通过ls -ld /tmp 可以看到/tmp的最后一位权限为t】
/var 可变文件目录
/var/cache 缓存目录
/var/lock 文件锁
/var/log 日志文件
/var/mail 邮件转存文件
/var/run 进程ID号
/var/tmp 这是另外的一个临时文件目录/tmp
/bin binary二进制文件,用来存放可执行文件--用户的命令!
/sbin 这个目录下面放置的都是管理命令;
/usr user shared read-only、unix system resources 全局的共享只读文件或者是Unix系统资源;
在这个目录下还有/usr/bin、/usr/sbin、/usr/lib、/usr/local #第三方软件存放的目录,以及第三方软件相关的命令和程序;在/usr/local下还有bin、sbin、lib等文件;
绝对路径与相对路径
文件必然会存放在一个目录下,在我们去访问这个文件的时候就会去访问这个文件的目录,而访问这个文件的目录的过程就可以通过绝对路径后者是相对路径来访问;
路径:从其实点到目的地所经过的位置,它是一种实现文件层次化管理的方式;
绝对路径:从根目录开始,这个文件存放的目录就叫做绝对路径;例如:/etc/sysconfig/network-scripte/ifcfg-eth0 对于ifcfg-eth0这个文件来说/etc/sysconfig/network-scripte就是绝对路径,它是从 / 开始算起的;
相对路径:从当前所在的目录开始算起,这个文件存放的目录。在我们linux前面会显示当前所在的目录;例如:[root@test network-scripts]#ls -ld ./ifcfg-eth0 此时ifcfg-eth0就存放在当前路径下(当前路径就是/etc/sysconfig/network-scripts/)
文件命名规则
1、文件名长度不能超过255个字符;
2、不能使用 / 做文件名(/ 表示根目录,同时它也是路径分隔符);
3、严格区分大小写
【除此以外,所有字符都可以做文件名,特别注意space空格符,如果使用空格符做文件名,一定要注意在ls的时候看到的是一个文件,而不是两个文件】
常见文件管理命令
ls、cd、pwd、mkdir、tree
rmdir、touch、stat、none(编辑器)
date、clock、hwclock、cal
rm、cp、install、cat、tac、more、less、head、tail、cut、sort、uniq、grep、正则表达式
目录管理
ls list查看文件目录列表,列出指定路径下的文件
- 文件类型,常见的文件类型还有 d 目录 l 软连接 b 块设备文件 c 字符设备文件 p 管道文件(pipe) s 套接字文件(socket)
rw- --- --- 属主权限,属组权限,其他用户权限 rwx分别代表读写执行,而-则代表没有这个权限
1 表示硬链接的次数,只有这个文件硬链接次数为0,这个文件才表示被删除了
926 表示文件大小,默认是以块来显示的 -h 则是以人能读懂的单位来显示文件大小;
Jan 26 23:47 表示最近一次为修改的时间;时间一般有三个:访问时间(access),修改时间(modify,文件内容发生改变),改变时间(change metadata 元数据发生改变,比如名字);
stat 文件名 #可以查看文件的这三个时间
anaconda-ks.cfg 文件名
-h 刚才提到过,将将文件大小换算成人类能够识别的单位
-a 显示所有文件,包括以 . 开头的隐藏文件
-A 也是显示隐藏文件,但是不显示 . 和 .. 这两个文件
-d 显示本目录的数据信息,而不是这个目录里面文件的信息
-i index node:inode值,这是文件的索引节点(在存储知识里面会详细讲到)
-R 递归recursive显示,显示该目录下的所有文件,包括子目录下的文件
-r 逆序显示
-t 按照修改时间来显示文件,一般和 -r 一起使用
cd change directory 改变目录
几个常见的用法 cd ~ 切换到当前用户的家目录 cd ~USERNAME 切换到指定用户的家目录 cd - 切换到之前的所在的一个目录(在环境变量参数有一个OLDPWD变量,它就是用来存放 - 指定的路径的)
pwd print working directory打印工作目录,这里的工作目录也就是当前目录;
mkdir 创建目录文件 -p 递归创建,同时创建多级目录 -v 查看目录创建的详细过程
rmdir 删除空目录!前提所删除的目录一定要为空才行!
tree 查看文件目录,树形结构显示处理
-L n #显示当前目录下n级子目录
默认情况下显示当前目录下所有路径
文件管理
touch 创建文件,还可以用来修改文件时间
touch -a 文件名 #修改访问时间
touch -m 文件名 #修改访问时间
touch -t 201212121212 文件名 #修改文件最近一次的修改时间,并制定为2012年12月12日12时12分
创建文件除了使用touch外,还可以使用文本编辑器比如vi或者vim,编辑完文件后保存即可,我们这里演示下none这个轻量级编辑器的使用方法:
none hellow.txt
Hellow
ctrl + o 保存 ctrl + e 退出
这样就在当前目录下创建了hellow.txt这个文件
file 查看文件类型
mv 移动并更名文件
cp 复制文件
日期时间
date 用于时间管理
管理rtc硬件实时时钟,以及时钟服务器NTP(网络时间协议);
时钟分为:硬件时钟和系统时钟,date查看的是系统时钟而clock或者hwclock查看的是硬件时钟;
date的时钟格式FORMAT(标准格式):
%D 月/日/年 %Y 年 %d 日 %T 时:分:秒 %F 年-月-日 %m 月 %d 日 %s 从元年时间(1970年1月1日)开始计数,到现在经过了多少秒 %n 换行符
clock #显示硬件时钟
hwclock -w #将系统时间同步到硬件时间上
hwclack -s #将硬件时间读取到系统时间上
cal 显示日历calendar
文本处理
查看文本:
cat 连接并显示,通过参数将文件内容一次性显示出来;
cat同时可以将两个或多个文件同时显示,并拼接在一起;
cat /etc/issue /etc/fstab
参数:
-n 显示行号
-E 显示行末结束符,Linux系统下行未结束符号为$
-T 显示制表符(tab)
-v 显示文件下其非打印字符(也就是我们看不见的符号)
-A show all显示所有内容
【其中-n 和 -E是比较常用的】
tac 和cat正好相反,它将文本倒序显示;
【cat和tac都是一次性显示文本所有内容,要想慢慢看很困难,所以就有了more和less命令】
more 查看文本内容,more的用法和cat相同
more /etc/rc.d/rc.sysinit
空格:向后翻一页
回车:向后翻一行
【缺点:到了最后一行后默认就退出了】
*less 查看文本内容,less的用法和man相同
空格:向后翻一页
p:显示到文本最上面
/ 和 ?都是用来查找文本固定内容,N 和 n用来向上或向下查找
q:中断并退出文本
【一般查看长文件均使用less来查看】
head 查看文本前n行
tail 查看文本后n行
*tail 命令有个参数 -f 可以实时查看文件内容更新
文本处理:
cut 文本内容剪切
-d: 这个意思是以 : 为分割符
-f5 这个意思是截取第5列的数据,所以-d和-f一般联合起来使用,如果要截取第1列和第3列,就是-f1,3,如果要截取第1列到第3列,就是-f1-3。
join 将两个文件中,指定列位的内容相同行连接起来,使用较少,这里就不多说了;
sed、awk、grep是我们Linux下的三剑客,这个内容在后面会详细提到;
文本排序:
sort 分类,文本排序,它不影响文件本身,只是该本文件的显示次序;
默认以每行的首字母或数字的ASCII码表的顺序来拍
-n numeric sort按照数字大小来排序
-r reverse逆序
-t 指定分割符,在cut命令下是以-d来指定分隔符
-k 指定那个字段为关键字来进行排序
-u 排序以后相同的行只能显示一次
-f ignore case 忽略大小写
uniq 报告或者略过重复的行【重复:相连的且内容相同的叫重复,不想连,但是内容一样,也不叫重复】,这个命令一般与sort命令联合起来使用;
-d repeated只显示重复的行(反选)
-D all repeated显示所有重复的行(反选,且重复内容多次显示)
-c 统计每行重复的次数
文本统计:
wc world count 字符统计,统计文本中有多少行、多少个字符、多少个单词
15行,78个单词,805个字节
-l 行 -w 单词个数 -c 文件大小
字符处理:
tr translate or delete characters 转换或者删除字符
tr [option] ... set1 [set2] 后面不能直接加文件!只能通过从定向来实现文件内容的装换;
tr \'a-b\' \'A-B\' < /etc/passwd #将/etc/passwd文件内的所有小写均装换为大写内容
-d delete删除文件中的内容
以上是关于03 Linux的目录结构与常见文件管理的主要内容,如果未能解决你的问题,请参考以下文章