二.文件管理

一.文件管理

二.文件管理_第1张图片

文件系统的目录结构

文件和目录被组织成一个单根倒置树结构

  • 文件系统从根目录下开始,用 " / " 表示
  • 根文件系统(rootfs):root filesystem
  • 标准linux 文件系统(如:etx4) ,文件名称大小敏感,例如:MAIL, Mail, mail, mAiL
  • 以 .开头的文件为隐藏文件
  • 路径分隔的 /
  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 蓝色–>目录 绿色–>可执行文件 红色–>压缩文件 浅蓝色–>链接文件 灰色–>其他文件
  • 除了斜杠和NULL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用
  • 每个文件都有两类相关数据:元数据:metadata,即属性, 数据:data,即文件内容
  • Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard

常见的文件系统目录功能

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

应用程序文件位置

二进制程序:/bin, /sbin, /usr/bin, /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 目录文件     directory
b 块设备       blok
c 字符设备     character
l 符号链接文件  link
p 管道文件      pipe
s 套接字文件    socket

二. 文件操作命令

pwd 显示当前工作目录

pwd命令: printing working directory

  • -P 显示真实物理路径
  • -L显示链接路径 (默认)
[root@VM-0-9-centos ~]# pwd
/root

相关的环境变量:
PWD:当前目录路径
OLDPWD:上一次目录路径

绝对路径和相对路径
  • 绝对路径
    以正斜杠 / 即根目录开始
    完整的文件的位置路径
    可用于指定任何一个文件名
  • 相对路径
    不以斜线开始
    指定相对于当前工作目录或某目录的位置
    可以作为一个简短的形式指定一个文件名

文件名 基名:basename,只取文件名而不要路径
所在目录名:dirname,只取路径,不要文件名

[root@VM-0-9-centos ~]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig

dirname   就是这个文件所在的上级目录   /etc/sysconfig


[root@VM-0-9-centos ~]# basename /etc/sysconfig/network-scripts
network
basename  基名,文件名的本身   network-scripts

cd 切换目录

命令 cd : change directory 改变目录
选项:-P 切换至物理路径,而非软链接目录

可以使用绝对或相对路径

切换至父目录 :  cd ..
切换至当前用户主目录: cd
切换至以前的工作目录: cd - 

相关的环境变量

  • PWD: 当前目录路径
  • OLDPWD :上一次目录路径
[root@CentOS6 ~ 09:57:23]#echo $OLDPWD                  $OLDPWD  显示上一次目录的路径
/bin
[root@CentOS6 ~ 09:57:38]#cd -                            cd -   切换到以前的工作目录 
/bin
[root@CentOS6 /bin 09:57:44]#pwd                          pwd    显示当前路径
/bin
[root@CentOS6 /bin 09:57:54]#

ls 列出目录内容

ls 命令可以列出当前目录的内容或指定目录

用法:

ls   选项    目录

常选项:

-a   显示所有隐藏文件
-l   显示额外的信息
-R   目录递归
-ld  目录和符号链接信息
-d   代表目录
-1   文件分行显示
-S   按从大到小排序
-t   按mtime排序
-u   配合-t选项,显示并按atime从新到旧排序
-U   按目录存放顺序显示
-X   按文件后缀排序
-F   对不同类型文件显示时附加不同的符合: */=>@|
-C   文件多时,以多列的方式显示文件,默认时一列(标准输出)

ls 查看不同后缀文件时的颜色由 /etc/DIR_COLORS 和@LS_COLORS变量定义

stat 查看文件状态

文件相关信息:metadata, data
每个文件有三个时间戳:

  • access time 访问时间,atime,读取文件内容
  • modify time 修改时间,mtime,改变文件内容(数据)
  • change time 改变时间,ctime,元数据发生改变
[root@centos8 ~]#stat /etc/passwd 
File: /etc/passwd 
Size: 1306 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 134792556 Links: 1 
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) 
Access: 2019-12-09 20:37:12.830991350 +0800 
Modify: 2019-12-09 20:37:12.826991351 +0800 
Change: 2019-12-09 20:37:12.826991351 +0800 
Birth:

file辨别文件类型

文件可以包含多种类型的数据,使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使

file [options] <filename>...

常用选项:

-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
--help 显示命令在线帮助
[root@centos8 ~]#file linux.txt 
linux.txt: ASCII text

文件通配符

文件通配符可以用来匹配符合条件的多个文件,方便批理管理文件
通配符采有特定的符号,表示特定的含义,此特符号称为元字符

常见的通配符如下;

字符 代表意思
* 匹配零个或者多个字符
? 匹配任何单个字符
~ 当前用户家目录
~tang 用户tang家目录
~+和. 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 字母
[A-Z] 字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
另外还有在Linux 系统中预定义的字符类: man 7 glob
字符 代表意思
:--------: :-------------:
[:digit:] 任意数字,相当于0-9
[:lower:] 任意小写字母,表示 a-z
[:upper:] 任意大写字母,表示 A-Z
[:alpha:] 任意大小写字母
[:alnum:] 任意数字或字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:punct:] 标点符号
[:print:] 可打印字符
[:cntrl:] 控制(非打印)字符
[:graph:] 图形字符
[:xdigit:] 十六进制字符时间

touch 创建空文件和刷新文件时间

touch命令可以用来创建空文件或刷新文件的时间

格式:

touch  选项   文件

选项说明:

-a 仅改变 atime和ctime          
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
[16:11:03 root@centos8 data]#touch `date -d "-1 day" +%F_%T`.log
[16:11:48 root@centos8 data]#ls 
2019-12-12_16:11:48.log 
[16:11:55 root@centos8 data]#touch $(date -d "1 year" +%F_%T).log
[16:13:11 root@centos8 data]#ls 
2019-12-12_16:11:48.log 2020-12-13_16:13:11.log

cp 复制文件和目录

利用 cp (copy) 命令可以实现文件或目录的复制

格式:

cp [选项]... [-T] SOURCE源   DEST目标
cp [选项]... SOURCE... DIRECTORY     把多个源复制过去,目标必须是个文件夹
cp [选项]... -t DIRECTORY SOURCE..

常用用选项:

- i   覆盖前提示
- n   不覆盖,注意两者顺序
- r ,-R 递归复制目录及内部的所有内容
-a    归档,相当于-dR --preserv=all
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
  mode: 权限
  ownership: 属主属组
  timestamp: 
  links
  xattr
  context
  all
-p 等同--preserv=mode权限,ownership所有者,timestamp时间戳     保留文件,属性
-v --verbose
-f --force      如果目标不存在,就删除了在复制
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,形式为 filename~
--backup=numbered 目标存在,覆盖前先备份加数字后缀
源\目标 不存在 存在且为文件 存在且为目录
一个文件 新建DEST,并将SRC中,内容填充至DEST中 将SRC中的内容覆盖至DEST中 注意数据丢失风险!建议用 -i 选项 在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
多个文件 提示错误 提示错误 在DEST下新建与原文件同名的文件,并将原文件内容复制进新文件中
目录需使用-r选项 创建指定DEST同名目录,复制SRC目录中所有文件至DEST下 提示错误 在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中
cp -av /etc/ .   复制并显示进度

mv 移到和重命名文件

mv 命令可以实现文件或目录的移到和改名
同一分区移到数据,速度很快:数据位置没有变化
不同分区移动数据,速度相对慢:数据位置发生了变化

格式:

mv [选项]... [-T] SOURCE DEST 
mv [选项]... SOURCE... DIRECTORY
mv [选项]... -t DIRECTORY SOURCE...

常见选项:

-i 交换式
-f 强制
-b 目标存在,覆盖前先备份

rename 批量修改文件名称

格式:

rename [options] <expression> <replacement> <file>...
#为所有的conf文件加上.bak后缀: 
rename 'conf' 'conf.bak' f* 
解析: 搜索文件名中的conf   把他变成conf.bak    f* 查找文件中是否有conf,有则修改全部修改为conf.bak

#去掉所有的bak后缀: 
rename '.bak' '' *.bak

在这里插入图片描述

rm 删除文件

rm 命令可以删除文件

格式:

rm 选项  文件

常用选项:

-i   交互式              交互式就是会问你是删,还是不删
-f   强制删除
-r   递归
--no-preserve-root 删除/

范例:
删除根目录下所有文件

rm -fr /* 删除根目录下所有文件

删除隐藏文件和非隐藏文件

rm -rf * .[^.]*

rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件

shred 彻底删除文件 ,粉碎文件

shred是一条终端命令,功能是重复覆盖文件,使得即使是昂贵的硬件探测仪器也难以将数据复原,(参见”shred –help”)。这条命令的功能足够适合实现文件粉碎的功效。

shred格式

shred   选项     文件

常见选项:

-z    最后一次覆盖添加0,以隐藏覆盖操作
-v    能够显示操作进度
-u    覆盖后截断并删除文件
-n   指定覆盖文件内容的次数(默认值是3)

范例:

shred  -zvun 5   文件.txt

tree显示目录树

常用选项:

-d         只显示目录
-L level:  指定显示的层级数目
-P pattem:  只显示由指定wil-card pattern匹配到的路径

mkdir 创建目录

常见选项:

-p      确保目录名称存在,不存在就创建
-v      显示详细信息
-m      创建目录时可以直接指定权限
mkdir -m 777  test

rmdir 删除空目录

常用选项:

-p 递归删除父空目录
-v 显示详细信息

注意: rmdir 只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

三.文件元数据和节点表结构

(hard) 硬链接

硬链接本质上就给一个文件起一个新的名字,实质是同一个文件
硬链接特性

  • 创建硬链接会在对应的目录中增加额外的记录项以引用文件
  • 对应于同一文件系统上一个物理文件
  • 每个目录引用相同的inode号
  • 创建时链接数递增

你可能感兴趣的:(Linux,基础,运维,linux)