第三章文件管理学习笔记

笔记整理起始时间:2018年3月31日16:16:55

本章内容
文件系统结构元素
创建和查看文佳
复制、转移和删除文件
使用Nautilus来管理文件
软和硬链接

文件系统
文件和目录被组织成一个单根倒置树结构
文件系统从根木兰路下开始,用"/"表示
根文件系统:rootfs,root filesystem
文件名称,默认ext4,xfs下区分大小写
以.开头的文件为隐藏文件
路径分隔的/
文件有两类数据
元数据:metadata
数据:data
文件系统分层结构:LSB,Linux Standard Base
FHS:(Filesystem Hierarchy Standard)

文件名规则
文件名最长255个字节
包括路径在内文件名最长4095个字节
蓝色-->目录
绿色-->可执行文件
红色-->压缩文件
浅蓝色-->链接文件
灰色-->其他文件
除了/和NUL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用
有些字符需要用引号来引用它们。
标准Linux文件系统ext4,xfs下区分大小写,如mail,Mail等

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

Linux上的应用程序的组成部分
二进制程序:/bin,/sbin,/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/etc
帮助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,
/usr/local/share/doc

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

CentOS 7目录变化
/bin 和/usr/bin
/sbin 和/usr/sbin
/lib 和/usr/lib
/lib64 和/usr/lib64

显示当前工作目录
每个shell和系统进程都有一个当前的工作目录
CWD:current work directory
显示当前shell CWD的绝对路径
pwd:printing working directory
-P 显示真实物理路径
-L 显示链接路径(默认)
如:cd /bin,
pwd,输出结果为:/bin,
pwd -P ,输出结果为:/usr/bin

绝对和相对路径
绝对路径
以/开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
例如:cd /root/Downloads
相对路径名
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
例如:cd ../Downloads/
基名:basename
目录名:dirname
如:
basename /root/Music/file1 输出结果为:file1
dirname /root/Music/file1 输出结果为:/root/Music

cd 更改目录
cd 更改目录,可使用相对或绝对路径
cd /home/wang
cd home/wang
cd .. 切换至父目录
cd 切换至当前用户家目录
cd - 切换至上一个工作目录
cd ~wang 切换至wang用户家目录
cd -P /bin 进入绝对路径
相关变量
PWD:当前目录路径
OLDPWD:上一次目录路径

ls 列出当前目录的内容或指定目录
用法:ls [options] [files or dirs]
ls -a 显示所有文件或目录,含隐藏
ls -l 显示文件详细信息,==ll
ls -R 递归,显示目录里面的内容
ls -ld 目录和符号链接信息
ll -d 目录/ 对于普通目录,加和不加/都会显示目录信息,但是对于链接
目录,比如/bin,加/会显示链接目的目录信息,不加/会显示链接
文件本身的信息。
ls -1 单列显示
ls -S 按大小从大到小排序
ls -t 按mtime排序
ls -u 需配合-t使用,显示并按atime从新到旧排序
ls -U 按目录存放顺序显示
ls -X 按文件后缀排序
ls -r 倒序排列

stat 查看文件状态
三个时间戳
access time, atime,表示文件的最后读取时间
modify time, mtime,表示文件的最后修改时间
change time, ctime,表示元数据发生改变的时间

文件通配符

  • 匹配零个或多个字符
    ? 匹配任何单个字符
    ~ 当前用户家目录
    ~mage 用户mage家目录
    ~+ 当前工作目录
    ~- 前一个工作目录
    [0-9] 匹配列表中的任何一个字符
    [a-Z] 匹配任意字母
    [wang] 匹配列表中的任何一个字符
    [^wang] 匹配列表中的所有字符意外的字符
    预定义的字符类:man 7 glob
    [:digit:] 任意数字,相当于0-9
    [:lower:] 任意小写字母
    [:upper:] 任意大写字母
    [:alpha:] 任意大小写字母
    [:lanum:] 任意数字或字母
    [:blank:] 水平空白字符
    [:space:] 水平或垂直空白字符
    [:punct:] 标点符号
    [:print:] 可打印字符
    [:graph:] 图形字符
    [:cntrl:] 控制(非打印)字符
    [:xdigit:] 十六进制字符

小练习:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数
字的文件或目录
ls -d /var/l[0-9][[:lower:]]
? 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9][^[:digit:]]
? 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符
的文件或目录
ls -d /etc/[^[:alpha:]][a-Z]

? 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符
的文件或目录
ls -d /etc/rc[0-6]
? 5、显示/etc目录下,所有以.d结尾的文件或目录
ls -d /etc/
.d
? 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
ls -d /etc/[mnrp].conf
? 7、只显示/root下的隐藏文件和目录
ls -d /root/.

? 8、只显示/etc下的非隐藏目录

ls -d /etc/[^.]*/

touch命令 创建空文件和刷新时间戳
touch [OPTION]...FILE...
-a 仅改变atime和ctime
-m 仅改变mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
用法:文件存在,刷新时间戳,文件不存在,则创建文件
touch file{1..5} 创建file1..file5

cp复制文件和目录
用法使用规则
cp SRC DEST
复制单个文件到单个文件
如文件名不存在,则创建
cp Music/file3 f3
如文件名已存在,则覆盖,root账号默认使用别名-i,会询问是否覆盖
cp Music/file3 f3 此时f3已存在
复制单个文件到目录
在目标DEST下新建与源SRC同名的文件,并将SRC内容填充到新文件
复制多个文件到单个文件
不管文件名是否存在,均会报错
cp: target ‘f3’ is not a directory
复制多个文件到目录
在目标DEST下新建与源SRC同名的文件,并将SRC内容填充到新文件
cp Music/file1 Music/file2 Videos/
如目标文件名已存在,则覆盖,默认root账号会询问
复制目录到单个文件
如DEST已存在,直接报错
cp: cannot overwrite non-directory ‘f3’ with directory ‘Music/’
如DEST不存在
创建指定的DEST同名目录,复制SRC目录中所有内容至新目录
复制目录到目录
在DEST中新建与SRC同名目录,且复制SRC中内容到新目录
如目录已存在,默认root账号会提示覆盖
PS:如复制目录,必须加-r选项

   cp -i       覆盖前提示
   cp -n      不覆盖,必须在-i后面才有效
   cp -a      归档,相当于-dR --preserv=all
   cp -d      --no-dereference --preserv=links 不复制源文件,只复制链接
   --preserv[=ATTR_LIST]
          mode:权限
          ownership:属主属组
          timestamp:
          links
          xattr
          context
          all
   cp -p     等同于--preserv=mode,ownership,timestamp
   cp -v      --verbose过程可视
   cp -f      --force   强制
   cp -u      --update 只复制源比目标更新文件或目标不存在的文件
   cp -=backup=numberd      如目标存在,覆盖前先备份加且加数字后缀

mv 移动和重命名文件
mv,用法规则和cp类似
mv -i 覆盖前提示
mv -f 强制

rm 删除
rm file1 删除file1
rm -i file1 删除前询问
rm -f 强制删除,不再询问
rm --no-preserve-root 删除/
如:
rm -rf / --no-preserve-root
自杀,删除根目录下-所有文件,史上最危险命令

tree 显示目录树
tree /etc 显示指定目录树
tree -d 只显示目录
tree -L level, 指定显示的层级数
tree -P pattern 只显示由指定pattern匹配到的路径
tree -p 显示tree的时候显示文件类型(-,d,b..)

mkdir 创建目录
mkdir /root/f1 在root下创空目录f1
mkdir -p /root/go1/go2/go3/go 递归创建,即父目录不存在则自动创建
mkdir -v 是过程可视
mkdir -m MODE 创建目录时直接指定权限

rmdir 删除空目录
rmdir /root/f1 删除root下空目录f1
rmdir -p /root/go1/go1/go2/go3/go
递归删除,如删除目标之后父目录空,则一起删除
rmdir -v 显示详细信息,是过程可见

索引节点:
一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组
中的唯一一个元素对应,系统给每个索引节点分配了一个号码,也就是该节点
在数组中的索引号,索引节点号。

   Linux为每个文件分配一个inode(索引节点编号),可以将inode简单理解成
   一个指针,它永远指向本文件的具体存储位置,系统是通过inode来定位每一
   个文件。
   inode(index node)表中包含文件系统所有文件列表
   一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括
          文件类型,权限,uid,gid
          链接数(指向这个文件名路径名称个数)
          该文件的大小和不同的时间戳
          指向磁盘上文件的数据块指针
          有关文件的其他数据
   文件名可以随时更改,但是索引节点对文件是唯一的,并且随文件的存在而存在

目录:
文件系统引用一个文件是用inode号
人是通过文件名来引用一个文件
一个目录的数据部分记录的信息为:
目录下文件名和文件inode号之间的映射

cp和inode:
在cp的命令执行时:
分配一个空闲的inode号,在inode表中生成新条目(inode编号)
在目录中创建一个目录项(新映射),将名称与inode编号关联
拷贝数据生成新的文件

rm和inode
rm命令执行过程:
链接数递减,从而释放的inode号可以被重用
把数据块放到空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv命令
用新的文件名创建对应新的目录项(映射)
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动。
如果目标和源在一个不同的文件系统,mv相当于cp和rm

硬链接:
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:
rm命令递减计数的链接数
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
不能跨越驱动器或分区
语法:
ln filename [linkname]
如 ln /root/f3 /root/Music/fgo1

符号(软)链接
一个符号链接指向另一个文件
ls -l 显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少
目标文件inode的引用计数
语法:
ln -s filename [linkname]
ln -s /data/f5 /root/f5_link
PS:如使用删除命令rm删除软链接
rm -rf /root/f5_link
此命令如最后不加/,会删除软链接本身,
如使用tab键补全命令,后面默认会带/,此时删除的将会是目f5下所有文件

   readlink /root/f5_link          显示软链接指向的源文件

确认文件内容
file f1 显示f1的文件类型
file -b f1 累出文件辨识结果时,不显示文件名称
file -f filelist 列出文件filelist中所有文件名的文件类型
file -F , 34 使用指定分隔符号(,)替换输出结果文件名后默认
的:分隔符
flie -L 查看对应软链接对应文件的文件类型

笔记整理完成时间:2018年4月1日15:24:49

原文地址:http://blog.51cto.com/13683480/2093537

时间: 2024-07-31 18:57:06

第三章文件管理学习笔记的相关文章

《机器学习》第三章 决策树学习 笔记加总结

<机器学习>第三章 决策树学习 决策树学习方法搜索一个完整表示的假设空间,从而避免了受限假设空间的不足.决策树学习的归纳偏置是优越选择较小的树. 3.1.简介 决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. 决策树(Decision Tree)是一种简单但是广泛使用的分类器.通过训练数据构建决策树,可以高效的对未知的数据进行分类. 决策数有两大优点: 1)决策树模型可以读性好,具有描述性,有助于人工分析: 2)效率高,决策树只需要一次构建,反复使用,每一

第三章 shell学习之正则表达式

正则表达式 \<the\>:精确匹配the,不包括包含the的单词 [^b-d]:不包含b~d a\{2\}:a出现2次 a\{2,3\}:a出现2~3次 a\{2,\}:a至少出现2次 [:upper:]:大写字母(用的时候外面加一层[]表示匹配字符集合) [:lower:]:小写字母 [:digit:]:数字 [:alnum:]:大小写字母和数字 [:space:]:表示空格或tab键 [:alpha:]:大小写字母 通配 注意通配和正则表达式不同,虽然有共同的符号 ls -l *.sh

第三章 表单笔记

第三章                                                                表单  笔记 attion 此属性指示服务器处理表单输出的程序一般来说,当用户单点击的"提交"按钮后信息发送到Web服务器上,由attion属性所指的程序处理如果action为空则默认提交到本页method此属性告诉浏览器,如何将数据发送给服务器,他指向服务器发送数据的方法.语法为method=(getpost)<form method="

邹欣老师的《构建之法》第一章“概论”学习笔记与自我随笔

刚读完了邹欣老师的<构建之法>第一章“概论”,四个字形容:酣畅淋漓. 概论将自己的一些模糊的认识清晰化,用准确的文字描述了出来,填补了脑海里的一些灰色地带. 总结一下:概论通俗地阐述了编程.软件.计算机科学.软件工程的联系与区别,简单说,编程是一项具体动作,软件是供人使用的产品,具体有很多种类型,而计算机科学是偏向理论研究,软件工程就像其他工程学一样,是在一定条件下合理配置资源达到生产软件的目的. 本人作为一名从小对编程.软件.计算机感兴趣的Nerd,虽然大学专业与此无关,但刚毕业时签了一份软

JavaScript高级程序设计(第三版)学习笔记(2)

第三章 基本概念 1.严格模式:对ES3中不确定的行为作出处理,对某些不安全的操作抛出错误.要在整个脚本中启用严格模式,可以在顶部加上"use strict":要在函数中启用严格模式,可以在函数顶部加上"use strict". 2.定义变量:有var=>局部变量:省略var=>全局变量.在严格模式下不能定义名为eval或arguments的变量,否则会导致语法错误. 3.typeof操作符的返回值有6个:undefined.boolean.string

第二、三章 开始学习C++、数据处理

第二章 main()函数: 通常main()被启动码调用,而启动码是由编译器添加到程序中的,是程序和操作系统之间的桥梁. main()函数在返回时没有遇到返回语句,则默认以 return 0 结尾. C和C++有一项不同寻常的特征--可以连续使用赋值运算符.(Python也可以) 第三章 整形: short 至少16位 int     至少比short长 long  至少32位 long long 至少64位 sizeof (int)返回类型的长度,sizeof VAR返回变量的长度,可选括号.

JavaScript高级程序设计(第三版)学习笔记20、21、23章

第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值:字符串,数值,布尔值,null,不支持js特殊值:undefined 对象:一组无序的键值对 数组:一组有序的值的列表 不支持变量,函数或对象实例 注:JSON的字符串必须使用双引号,这是与JavaScript字符串最大的区别 对象 { "name":"Nicholas"

JavaScript高级程序设计(第三版)学习笔记22、24、25章

第22章,高级技巧 高级函数 安全的类型检测 typeof会出现无法预知的行为 instanceof在多个全局作用域中并不能正确工作 调用Object原生的toString方法,会返回[Object NativeConstructorName]格式字符串.每个类内部都有一个[[Class]]属性,这个属性中就指定了上述字符串中的构造函数名. 原生数组的构造函数名与全局作用域无关,因此使用toString方法能保证返回一致的值,为此可以创建如下函数: function isArray(value)

JavaScript高级程序设计(第三版)学习笔记13、14章

第13章,事件 事件冒泡 IE的事件叫做事件冒泡:由具体到不具体 <!DOCTYPE html> <html> <head> <title>Event Bubbling Example</title> </head> <body> <div id="myDiv">Click Me</div> </body> </html> 如果你单击了<div>