MyException - 我的异常网
当前位置:我的异常网» Linux/Unix » 文件管理 一

文件管理 一

www.MyException.Cn  网友分享于:2013-10-08  浏览:0次
文件管理 1

文件管理 1

一切都是文件。--linux哲学思想

目录

1.文件目录系统结构
2.文件和目录管理

在linux中一切都可以看作是文件,即使是物理设备也不例外,所以文件对于linux来说分为重要。我们要对linux文件目录系统来个充分的了解,然后再去使用它。

1.文件目录系统结构

文件目录结构

捕获.PNG

可以看出文件系统是从根开始的,由图中“/”来代表根。系统的路径分割也是由“/”进行分割。那这些文件目录都有什么用呢?这些简要说明下:

/bin: 供所有用户使用的基本命令存放目录;不能关联至独立分区,OS启动即会用到的程序
/sbin: 管理类的基本命令,系统重要的执行文件;不能关联至独立分区,OS 启动即会用到的程序
/boot: 引导文件存放目录,内核文件(vmlinuz) 、引导加载器(bootloader, grub) 都存放于此目录
/dev: 设备文件及特殊文件存储目录。b: block device ,随机访问;c: character device ,线性访问
/etc: 系统配置文件目录
/home: 普通用户家目录
/lib: 启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)存放目录
/lib64: 专用于x86_64系统上的辅助共享库文件存放目录
/media: 便携式移动设备挂载点
/mnt: 临时文件系统挂载点目录
/opt: 第三方应用程序的安装目录
/proc: 目录本身是一个用于输出内核与进程信息相关的虚拟文件系统,它放置的数据都在内存当中,如系统内核、进程、网络状况等。
/root: 系统管理员目录
/run: 某些程序或服务启动后,会将pid放置在这里
/srv: 系统上运行的服务所需要用到的数据存放目录
/sys: 用于输出当前系统上硬件设备相关信息的虚拟文件系统,类似/proc
/tmp: universal shared, read-only data,临时文件存储目录
/usr: UNIX software rescue,与软件安装和执行相关
/var: variable data files,与系统运作过程有关,例如缓存,登录文件以及软件运行所产生的文件,包括程序文件
/var/cache: 应用程序缓存数据目录
/var/lib: 应用程序状态信息数据
/var/local: 专用于为/usr/local下的应用程序存储可变数据;
/var/lock: 锁文件
/var/log: 日志目录及文件
/var/opt: 专用于为/opt 下的应用程序存储可变数据;
/var/run: 运行中的进程相关数据, 通常用于存储进程pid 文件
/var/spool: 应用程序数据池
/var/tmp: 保存系统两次重启之间产生的临时数据
/usr/bin: 保证系统拥有完整功能而提供的应用程序,是客户端上执行的前台任务
/usr/sbin: 一般是守护进程类的后台服务
/usr/lib: 32 位使用
/usr/lib64: 只存在64 位系统
/usr/include: C程序的头文件(header files)
/usr/share: 结构化独立的数据,例如doc, man等
/usr/local: 第三方应用程序的安装位置
/selinux: security enhanced Linux ,selinux 相关的安全策略等信息的存储位置

实际上linux支持十多种的文件系统类型,如ext1,2,3,4等,以只是简单说明了下其结构模式和常用作用。
这么多文件那它们都是什么类型呢?整个文件系统中文件总共分为以下七种类型:

-: 普通文件
d: 目录文件
b: 块设备文件
c: 字符设备文件
l: 符号链接文件
p: 管道文件pipe文件
s: 套接字文件socket文件

以上这种分类除了可以通过在文件属性中权限那块来看出来,文件属性是属于元数据的,而文件有两类数据,元数据是一类,另一类就是文件内部所书写记录的数据了。除上面方式外还可以过颜色区分:

蓝色代表目录文件
绿色代表可执行文件
红色代表压缩文件
浅蓝色代表链接文件
灰色代表其他文件

对文件系统有个简单了解后,来对文件目录进行些操作。

2.文件和目录管理

当你进入linux的CLI(命令行交换系统)时,会出现到一个工作目录下,每个shell和系统进程都有一个当前的工作目录,可以通过pwd命令来确认你在那个工作目录下。

1.显示当前工作目录:pwd

pwd - print name of current/working directory
pwd [OPTION]...
-L, --logical : 显示链路路径
-P, --physical:显示真实物理路径

pwd有两个重要选项,分别显示物理路径和链路路径。
物理路径是以正斜杠开始,是完整的文件位置路径,我们也称其为绝对路径。与其相对,我们称不以正斜杠开始,但指定相对当前工作目录或某目录位置的路径为相对路径。而链路路径是由ln命令产生的当前目录文件还与那个目录文件相链接的路径(个人理解)。
当前是什么工作目录我们知道了,那这个目录下有什么东西呢?

2.列出目录内容:ls

ls- list directory contents
ls [OPTION]... [FILE]...
-a:列出包含的隐藏文件
-l:显示属性信息
-R:递归处理
-r:逆序排列
-d:显示目录名和链接文件本身
-1:单列格式输出
-S:从大到小排序
-s:从小到大排序
-t:按mtime排序
-u:配合-t,按atime从新到旧排序
-U:按目录存放顺序显示
-X:按文件后缀排序

通过以上这些都是我们经常要用到的,实际上ls的选项还有很多,大家可以通过man ls来选用自己需要的。

提示:可通过alias来都有命令都有那些别名,可以方便输入。
你可以查看目录下都有什么内容了,那怎么切换呢?

3.目录切换:cd

cd [-L|[-P [-e]]] [dir]

虽然cd也有些选项但一般不怎么用,一些用法介绍下:

父目录就是上级目录,这里介绍下:

../表示上级目录
./表示当前目录
PWD:当前目录路径的环境变量
OLDPWD:上一次目录的环境变量

cd切换时可以用相对路径也可以使用绝对路径。

上面我们说到ls可以列出目录下都有那些目录文件,但其具体属性我们就不是很清楚了。

4.查看文件状态属性:stat

stat- display file or file system status,就是来查看文件所有的元数据。
stat [OPTION]... FILE...
-L, --dereference:支持符号链接
-f, --file-system: 显示文件系统状态而非文件状
-t, --terse:简洁方式输出信息

从上图可以看到文件的元数据具体信息,其中有三个时间戳可能使人迷惑:
access:这个显示的是access time 简称atime是用户读取文件内容时的时间。
modify:这个显示的是modify time 简称mtime是用户改变文件内容(数据)的时间。
change:这个显示的是change time 简称ctime是元数据发生改变的时间。
你经过几次查看操作后发现atime怎么没有改变,这个与系统默认设置有关。
触发atime更改的条件:如果atime已经超过一天没有更新了,当你当前读取文件的时候它就会更新。另一个条件是,当mtime比atime新时,atime也会更新。
有时候你会发现一个目录下面有大量的文件,那么你怎么从这些文件中找到你需要的呢?这就需要用到文件通配符了。

5.文件通配符

* :匹配零个或多个字符
? :匹配任何单个字符
~ :当前用户家目录
~home: 用户家目录
. :当前工作目录
.. :前一个工作目录
[0-9]匹配数字范围
[a-z]:字母 大小写都会存在
[A-Z]:字母 大小写都会存在
[]:匹配列表中的任何的一个字符
[^] :匹配列表中的所有字符以外的字符
[:alnum:]:任意数字或字母
[:digit:]:任意数字,相当于0-9
[:alpha:]:任意大小写字母
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

这么多通配符怎么用呢,这举个例子来认识下:
显示/var 目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录.

知道了怎么查找文件,哪怎么创建文件呢?

6.创建空文件

实际上创建文件的方法有很多,这里简单介绍几个:
touch用于创建空文件,如果文件已经存在就不再创建,但会刷新时间。

touch [OPTION]... FILE...
-a仅改变atime和ctime
-m仅改变mtime和ctime
-t [CC]YY]MMDDhhmm[.ss]指定atime和mtime的时间戳
-c如果文件不存在就不创建


> 也可以创建空文件,要是跟已经存在的文件,会把文件给清空。

>>也可以创建空文件,要是跟已经存在的文件,并不会清空文件,只会在该文件的最后加个空行。

echo也可以创建空文件,直接跟已经存在的文件,也可以把文件清空。

还有其他许多的创建方法,这里就不再一一列举了。
当我们想要把这个目录下的某个或某些文件放到另一个目录怎么弄?这就用到了复制命令了。

7.复制文件和目录

cp - copy files and directories
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
-i:覆盖前提示 。
–n:不覆盖,注意于-i的前后顺序
-a: 归档,相当于-dR --preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]:attr_list有权限属组类的
-p:等同--preserv=mode,ownership,timestamp
-v:显示复制过程
-f: 强制复制目录和文件,不管其是否存在
-t:--target-directory=DIRECTORY
-T: --no-target-directory

上面只是列举了下常用的,实际上cp的选项有很多,大家可以用man帮助来查看所需的。
cp文件和目录时有几种情况,这里详细解释下:
cp SOURCE DEST

  • SOURCE是文件:如果目标不存在:新建DEST ,并将SOURCE 中内容填充至DEST中
  • DEST存在且为文件:将SOURCE 中的内容覆盖至DEST中基于安全,建议为cp 命令使用-i选项
  • DEST存在且是目录:在DEST下新建与原文件同名的文件,并将SRC 中内容填充至新文件中

cp SOURCE… DEST

  • SOURCE... :多个文件
  • DEST 必须存在,且为目录,其它情形均会出错

cp SOURCE DEST

  • SOURCE 是目录:此时使用-r选项
  • 如果DEST 不存在:则创建指定目录,复制SOURCE 目录中所有文件至DEST 中;且创建目录的条件是:所创建目录的上一级目录必须存在,才能创建当前目录
  • DEST存在且是文件:报错
  • DEST是目录:在DEST下新建与原目录同名的目录,并将SRC中内容复制到新目录中

以下图片可能使你理解的更清除点儿:

当我们把文件复制过后,不想要原文件了,就可以把原来的文件删除掉。

8.删除命令:rm(危险命令)

rm- remove files or directories,这命令很危险,所以一般尽量少用
rm [OPTION]... FILE...
-i:交互模式
-f:强制进行(这个选项更加危险)
-r ,-R:递归进行,特别是目录类的。
-v:显示过程

实际上这个rm命令直接删除数据的,删除的是文件目录的元数据,数据并没有被删除,只是让你找不到数据了,释放inode。

上面我们说到过>可以创建空文件,且跟存在的文件时会清空文件。实际>就是删除数据命令,可以帮我们快速清理大的文件。
除上面两个外,还有个更好更安全的删除命令。

9.安全的删除命令,粉碎命令:shred

shred - overwrite a file to hide its contents, and optionally delete it
shred [OPTION]... FILE...
shred -zvun5 FILE
-z, --zero:add a final overwrite with zeros to hide shredding
-v, --verbose :show progress
-n, --iterations=N : overwrite N times instead of the default
-f, --force : change permissions to allow writing if necessary
-u, --remove[=HOW]: truncate and remove file after overwriting

常用到的也就以上几个选项,看下效果

这样删除后的文件很难被恢复,这就保持了数据的安全性。
有关文件的些操作,知道了,哪针对目录的操作有那些呢?

10.目录操作

显示目录树:tree

tree - list contents of directories in a tree-like format
-d:只显示目录
-L:指定显示的层级数目
-P pattern:只显示由指定pattern匹配到的路径

创建目录:mkdir

mkdir - make directories
mkdir [OPTION]... DIRECTORY...
-p:存在不报错,且可自动创建所需的各目录
-v:显示详细创建过程信息
-m MODE:创建目录时直接指定权限

删除空目录:rmdir

rmdir - remove empty directories
rmdir [OPTION]... DIRECTORY...
-p:递归删除父目录
-v:显示过程信息

有关目录操作命令中也有好多选项,这里只是列出了常用的几个,切一般删除目录也不用rmdir而是用rm,这个也是那个方便就用那个。

以上是简单介绍了下文件目录系统,仅仅表面了解了文件目录,还在文件目录的外面徘徊。后面会对其再次进行更详细的了解。

文章评论

5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员都该阅读的书
程序员都该阅读的书
旅行,写作,编程
旅行,写作,编程
漫画:程序员的工作
漫画:程序员的工作
程序员的鄙视链
程序员的鄙视链
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员必看的十大电影
程序员必看的十大电影
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
Java程序员必看电影
Java程序员必看电影
 程序员的样子
程序员的样子
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
中美印日四国程序员比较
中美印日四国程序员比较
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
每天工作4小时的程序员
每天工作4小时的程序员
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
老程序员的下场
老程序员的下场
我的丈夫是个程序员
我的丈夫是个程序员
一个程序员的时间管理
一个程序员的时间管理
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
如何成为一名黑客
如何成为一名黑客
鲜为人知的编程真相
鲜为人知的编程真相
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我是如何打败拖延症的
我是如何打败拖延症的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
那些争议最大的编程观点
那些争议最大的编程观点
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员和编码员之间的区别
程序员和编码员之间的区别
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有