详细信息 src 最长 mod 展开 重新启动 upper 填充 虚拟
文件管理——当你使用 Linux 时,大部分时间都会和文件打交道,我们需要了解基本的文件操作,如创建文件,删除文件,复制文件,重命名文件以及为文件创建链接等.
目录
文件的组成
目录结构
文件类型
pwd 命令
更改目录 cd
查看文件状态 stat -- 时间戳
文件通配符
复制文件和目录 cp
未完待续
详细内容
一,文件的组成
①元数据 -- 元数据就是数据的数据,用来描述一个文件的特征的系统数据,诸如访问权限,文件拥有者以及文件数据块的分布信息等;
对文件系统元数据的更改都被保存到一份单独的日志里,当发生系统崩溃时可以利用日志正确地恢复数据.除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间.
②数据 -- 普通文件中的实际数据
二,目录结构
Linux 下文件和目录组织成一个单根倒置树结构:
/ 根目录
/boot 引导文件存放目录
/bin 供所有用户使用的基本命令
/sbin 管理类的基本命令
/lib 库文件以及内核模块文件
/lib64 专用于 x86_64 系统上的辅助共享库文件存放位置
/etc 配置文件目录
/home 普通用户家目录,软件的个性化配置
如用户自己设置的别名就存放在该目录下
/root 管理员家目录
/dev 设备文件,Linux 下一切皆文件
/media 便携式移动设备挂载点
/mnt 临时文件系统挂载点
/opt 第三方应用程序的安装位置
/tmp 临时文件存储位置
/usr read-only,以后不发生变化的数据
/var 可变数据文件 如运行程序缓存的数据,日志文件等
/proc 虚拟文件系统
/proc/cpuinfo 查看 CPU 信息
/proc/meninfo 查看内存信息
/sys 虚拟文件系统
查看根目录下的文件和目录:
以. 开头的文件为隐藏文件
文件名最长 255 个字节(linux 没有文件扩展名的概念,这一点和 Windows 不同)
蓝色 -> 目录
绿色 -> 可执行文件
红色 -> 压缩文件
浅蓝色 -> 链接文件
tree-- 以树形结构列出目录结构
-d 只列子目录,不列子文件
-L+n 查看 n 级目录
******* 运行 tree 命令的时候可能会遇到命令不存在等的问题 **********
如下图所示操作:
***********************************************************************
三,文件类型
- 普通文件
d 目录文件
b 块设备
c 字符设备
l 软链接
s 套接字文件 socker
p 管道文件
四,pwd 命令
pwd-- 显示当前文件所在路径
-p 显示真实物理路径,当目录为软链接时,显示源目录
. 代表当前目录
.. 代表上一级目录 (任何目录下都有. 和.. 两个目录 ; cd ../.. 代表进入上上一级目录)
basename 显示基名(最后一项)
dirname 显示目录名(除最后一项)
五,更改目录 cd
cd 进入家目录
列出目录内容 ls
-a 显示所有文件
-A 显示所有文件,不包含. 和..
-l 显示详细信息
-R 递归展开目录
-d 不列出子目录
-1(数字 1) 以一纵列显示
-S 从大到小排列
-t 从今往前的修改时间排序
-ut 从今往前的访问时间排序
-U 按目录存放信息排序
-X 按文件后缀排序
六,查看文件状态 stat
三个时间戳
access time:访问时间 atime
midify time:修改时间 mtime (文件的数据更改的时间)
change time:改变时间 ctime (文件的元数据更改的时间,mtime 变 ctime 一定也跟着变)
touch 当文件存在时,可以更新三个时间戳
当文件不存在时,则创建
touch -a 更新 atime 和 ctime
touch -m 更新 mtime 和 ctime
touch -t [CC[YY]]MMDDHHmm[.ss] (年月日时分. 秒) 更新 atime mtime 到指定时间
touch -c 当文件已存在时,更新全部时间戳;当文件不存在时,不创建
七,文件通配符
* 0 或多个任意字符
? 一个任意字符
~ 当前用户家目录
~name 用户 name 的家目录
[0-9] 数字范围
[a-Z] 字母范围 注意:ls + 字母范围 是按 aAbBcCdD....zZ 排列的
[任意字符] 匹配方括号内的任何的一个字符
[^ 任意字符] 匹配方括号内的字符以外的任何字符
[:digit:] 任意数字 例如:ls [[:digit:]]*
[:lower:] 任意小写字母
[:upper:] 任意大写字母
[:alpha:] 任意大小写字母
[:alnum:] 任意字母或数字
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
' ' 也可以表示空格
[:punct:] 任意符号
案例:
1,显示 / etc / 目录下所有以 rc 开头,并后面是 0-6 之间的数字,其它为任意字符的文件或目录
ls -d /etc/rc[0-6]*
2,显示 / etc 目录下,所有以. d 结尾的文件或目录
ls -d /etc/*.d
3,显示 / etc 目录下,所有. conf 结尾,且以 m,n,r,p 开头的文件或目录
ls -d /etc/[mnrp]*.conf
4,只显示 / root 下的隐藏文件和目录(三种写法)
5,只显示 / etc 下的非隐藏目录
ls -a --ignore=[^.]* /root
ls -a -I "[^.]*" /root
ls -d .* /root
ls -d /etc/*/
6,显示 / etc 目录下所有以 k 开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
ls -d /etc/k*[[:digit:]]*[[:lower]]
7,显示 / etc 目录下,所有以一个大写字母开头,以两个数字结尾的文件或目录
ls -d /etc/[[:upper]]*[0-9][0-9]
8,显示 / etc 目录下,文件名至少包含一个小写字母和一个数字并以. conf 结尾的文件或目录
ls -d /etc/*[[:lower]]*[0-9]*.conf
八,复制文件和目录 cp
cp + source + dest
1,source 是单个文件
如果目标不存在,新建 dest,并将文件内容填充至 dest
如果目标存在且是文件,内容覆盖
如果目标存在且是目录,在 dest 下新建与源文件名同名的文件,并填充至新文件
2,source 是目录——要加选项 -r(此选项下面有说明)
如果目标不存在,则新建指定目录,然后复制 source 下所有文件至新建目录
如果目标存在,在 dest 下新建与源目录同名的目录,并复制源目录内容至新建目录
总结如下图
cp
-i:覆盖前提示 -n: 不覆盖,注意两者顺序
-r, -R: 递归复制目录及内部的所有内容
-a: 归档,相当于 - dR --preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
-p: 等同 --preserv=mode,ownership,timestamp
timestamp:
links
xattr
context
all
-v: --verbose 显示复制的过程
-f: --force 当普通用户对某目录有 rx 权限时,使用 - f 可以将没有修改权限的文件强制覆盖.即删除再创建.
案例
1,定义别名命令 baketc,将 / etc / 目录下所有文件,备份到 / testdir 独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见
alias baketc='mkdir -p(递归创建) /testdir/backup$(date +%F);cp -av /etc/* /testdir/backup$(date +%F)'
2,创建 / testdir/rootdir 目录,并复制 root 下所有文件到该目录内,要求保留原有权限
mkdir -p /testdir/rootdir;cp -a /root/* /testdir/rootdir/rootdir
Linux 学习 - 文件管理(1)
来源: http://www.bubuko.com/infodetail-2459470.html