Linux系统文件管理

文件管理
挂载光盘 :/misc/cd
systemctl status autofs
如果运行:
yum -y installs autofs
systemctl start autofs
systemctl enable autofs
systemctl enable --now autofs (前两个命令同时进行)

文件系统目录结构:
文件系统从根目录下开始,用“/”表示
文件或目录被组织成一个单根倒置树结构
以.开头为隐藏文件
路径分隔/
文件名最长255字节
路径在内文件名称最长4095字节
蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件
每个文件都有两类相关数据:元数据:metadata,即属性, 数据:data,即文件内容

文件系统的目录功能:
/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相关的安全策略等信息的存储位置

Linux文件类型:
ll 显示文件
开头有: -为一般文件
c为字符设备
b为块设备
d为目录
l链接文件link
p管道文件pipe
s套接字文件socket
hexdump -c 二进制工具(查看文件字节二进制)
dd if=/dev/zero input of=f2.txt 从文件里读数据

文件操作命令:
pwd 查看当前路径(特殊场景下,相对于某目录的路径)
pwd -P 显示真实路径
环境变量:
OLDPWD 上一次目录路径
PWD 当前目录路径
绝对路径和相对路径:
绝对路径:以正斜杠/ 即根目录开始
完整的文件的位置路径,可用于任何想指定一个文件名的时候
相对路径:不以斜线开始
一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置
可以作为一个简短的形式指定一个文件名
dirname 只取路径,不要文件名
basename 只取文件名,不要路径

cd 切换目录
cd -p 切换物理路径,非软链接路径
cd.. 切换至父目录
cd 切换至用户主目录
cd - 切换至上次工作目录

ls 外部命令 列出当前目录内容或指定内容
ls -a 查看包括隐藏文件
ls -R 表示目录递归
ls -l 查看文件下内容
ls -dl 查看目录本身内容和符号链接信息
ls -1 文件分行显示
ls -S 按从小到大排序
ls -t 按Mtime排序
ls -u 配合-t使用,显示按atime从新到旧排序
ls -U 按目录存放顺序显示
ls -X 按文件后缀排序

变量:
/etc/DIR_COLORS
@LS_COLORS 定义不同后缀文件颜色

.当前目录
../上级目录 ../..上级目录的上级目录

modify time 文件修改时间
change time 文件的属性更改时间ll --time=ctime 文件(anaconda-ks.cfg)
accesst time 文件内容更改时间
stat 文件 查看文件所有时间(可查看节点编号)
Inode 唯一编号
chown 更改文件所有者 chown liu 文件
magic number

file 查看文件类型
file -f 读取文件内容对内容批量分析
file -b 列出文件辨识结果时,不显示文件名称
file -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
file -L 查看对应软链接对应文件的文件类型
file --help 显示命令在线帮助

ELF 二进制文件(cat 只能看文本文件)
hexdump -C 二进制工具
mv /bin/ls /bin/ls.txt 修改文件名称

Linux和windows区别:
在Linux中回车和换行用一个字节表示,windows中回车和换行分别用两个表示
更改文本格式:
dos2unix (window转化linux)
unix2dos (Linux转化windows)
sz 将文件从Linux系统传到windows系统
lrzsz (yum -y instell lrzsz 安装之后windows文件可拖至Linux中)
iconv -l 查看全球编码
转换文件字符集编码:
iconv -f gb2312 windows.txt -o windows1.txt (gb2312转换为utf8)
iconv -f utf8 -t gb2312 windows1.txt -o windows11.txt(utf8转换为gb2312)

文件通配符:
可以用来匹配符合条件的多个文件,方便管理文件
* 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+和. 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 字母
[A-Z] 字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符

在Linux系统中预定义的字符类:
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
例:
ls file[a-c].txt 会列出a.txt ,A.txt,b.txt,B.txt,c.txt(小大小大格式排列)
ls file[[:lower:]].txt 列出所有小写字母开头的txt
* 表示任意字符串(匹配不了隐藏文件)
rm -f * 删除本目录下所有文件(删不了隐藏文件)
ls -A 显示目录下所有文件 (不包括. ..)
ls -d.* 显示隐藏文件和目录列表
ls -d.*/ 显示隐藏文件目录

touch 不存在的文件 ,创建文件(通配符不识别,通配符用于搜索文件,过滤现有文件)
存在的文件,只会刷新时间
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建

复制文件
cp 实现文字或目录的复制(复制内容不变,属性会变化)
cp /etc/issue /data/issue.bak
cp -p 保留属性复制
cp -r,-R 递归(复制文件夹里所有文件)
cp -a 保留所有属性(用来备份的命令)
cp -av 显示复制过程
cp -i 如果目标存在,覆盖前提示是否覆盖
cp -n 不覆盖,注意两者顺序
cp -d --no-dereference --preserv=links 不复制原文件,只复制链接名
cp -b 目标存在,覆盖前先备份,形式为filename~,只保留最近的一个版本
cp --backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为 filename.~#~ ,可以保留多
个版本

mv 移动和重命名文件
同一分区移动数据,速度很快:数据位置没有变化
不同分区移动数据,速度相对慢:数据位置发生了变化
. 当前目录(可以直接复制.)
..上级目录
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份

rename 批量修改文件名
rename cof cof.bak *
rename .bak ‘ ‘ *

rm 删除文件 (命令危险,用mv代替rm)
rm -i 交互式
rm -f 强制删除
rm -r 递归
--no-preserve-root 删除/
rm -rf .【^.】* 删除当前目录下的隐藏文件
rm -rf * .[^.] * 删除当前目录下隐藏和非隐藏文件
rm -rf /* 删除根目录
rm -- -f 如果删除的文件“-f”带有“-”,可以用--
shred(安全删除文件)
-z 最后一次覆盖添加0,以隐藏覆盖操作
-v 能够显示操作进度
-u 覆盖后截断并删除文件
-n # 指定覆盖文件内容的次数(默认值是3次)

目录操作
tree 显示目录树
tree -d 只列文件夹,不列文件
tree -L level: 指定显示的层级数目
tree -P pattern: 只显示由指定wild-card pattern匹配到的路径
显示目录结构(需要安装 dnf -y install tree)

创建目录
mkdir dir1 建立文件夹
mkdir -p dir1/dir2/dir3 (上级文件夹空直接创建)
mkdir -pv 能看到创建过程
删除空目录
rmdir dir1 删除文件夹(空文件夹)
rmdir -p dir1/dir2/dir3

文件元数据和节点表
块文件单位:4k
直接指针和间接指针(低于48k用直接,高于用间接)
双重间接
节点编号(可复用,有使用范围)
不同分区中可以有两个不同的文件使用相同的节点编号,不能一个文件有多个节点编号。
节点表(目录不放在节点表)
一个文件移动到新目录,没有移动到新分区,节点编号不改变,如果跨分区,节点编号会改变。
df -i 可查看分区允许的节点标号
1问:提示空间no space left on device ,但df可以看到空间很多,为什么?
答:节点编号用完了,没有空余的节点编号。
2问:通过df -h查看到boot空间还有很多,却运行占用过大,怎么回事并如何解决?
dd if=/dev/zero of=/boot/bigfile bs=1M count=700(创建大文件)[实验:创建一个大文件在boot下]
boot下运行占用过大,释放运行空间:
lsof |grep delete 查看正在运行的空间
如果删除的文件正在运行,不会立即释放空间,释放运行文件空间即可:
cat /dev/null > /boot/big 清除释放大文件(不删除文件,只释放内容)
> /boot/bigfile (这个方法不是所有shell都支持)

链接
硬链接(hard)
实现一个文件拥有多个文件名
ln =link 创建硬链接文件
ln f1.txt dir1/f1.txt
ll -i !*(查看文件)(用户前的数字为链接数)
只要有一个文件名文件都可以访问,删除几个少几个文件名
注意:不可以跨分区创建硬链接,不可以用文件夹创建硬链接
drop table message=rm -f /data/mysql/message.idb(大文件)
ln /data/mysql/message.idb /data/backup/message.idb link

软链接(soft)符号链接
相当于win里的快捷方式
ln -s f1.txt f1.txt.link
软链接文件依赖于原始文件
ln -s ../f1.txt dir1/f1.txt.link2
注意:软链接支持跨分区,也支持文件夹
相对路径:原始文件相对于软链接的相对目录
软链接指向内容想改变的话,可以先把软链接删掉,在创建新的软链接指向新的文件内容。(例软件升级,软件回滚)
rm -rf mysql 删除软链接,源文件存在
rm -rf mysql/ 删除源文件
面试:软链接和硬链接的区别:

文件夹的链接数至少都是2个 ll -i dir1/ -a
软链接:/dev/null /dev/null1 (不支持跨区创建)

原文地址:https://www.cnblogs.com/llliuhuiii/p/12594116.html

时间: 2024-10-08 08:22:31

Linux系统文件管理的相关文章

Linux系统文件管理用户组操作命令总结

1.文件内容的查看命令 cat  tac  less  more  head  tail ======================================= 2.用户和组的操作 useradd - 新建用户 -u - 新建用户时指定UID -g - 新建用户时指定用户默认组 -G - 指定用户附加组 -s - 指定用户登录shell -d - 指定用户加目录 默认组:有且只有一个 附加组:可以有多个 usermod - 修改用户属性 -u - 修改用户UID -g - 修改用户默认组

linux系统中的文件管理

Linux系统中文件管理 一.文件系统与目录结构 1.1文件系统概念 文件系统是操作系统最重要的一部分,它定义了磁盘上储存文件的方法及数据结构.文件系统是操作系统组织.存取和保存信息的重要手段,每种操作系统都有自己的文件系统,如Windows所用的文件系统主要有FAT16.FAT32和NTFS,Linux所用的文件系统主要有ext2.ext3.ext4.xfs和btrfs等. 1.2Linux文件系统的特点 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始,用"/"表示根文

linux系统软硬链接与文件管理几个基本命令使用

1.描述Linux发行版的系统目录名称命名规则以及用途.(1)目录命名规则Linux文件系统分层标准(Filesystem Hierarchical standard,FHS)定义了Linux目录树的结构,它命名一组标准目录并指定它们的用途.在同一路径下两个目录或者文件的名称不能相同目录名或者文件名的总长度不能超过255个字符.包括路径在内文件名称最长不超过4095个字节.除了"/"与NUL,所有字符都有效,但使用特殊字符的目录名和文件名不推荐使用,有些字符需要用引号来引用他们.标准l

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

linux系统方面的知识

1.什么是Linux? 组成部分:硬件.内核.lib库.应用程序 硬件:工作中真正工作的组成部分是硬件 linux内核(kernel):管理硬件 Linux团队管理的版本 lib库:封装内核接口,提供系统调用 应用程序:和用户交互,提供某项特定的服务 GNU:在linux内核之上研发了很多常见的应用程序,并且把这些应用程序开源了 2.Linux发行版? RedHat:按照特定的格式将linux内核.lib库.应用程序,组成一个操作系统,redhat发行版 CentOs:6.6 Ubuntu: 3

linux系统死机分析及解决方法

一.常见死机原因 二.日志分析 日志系统,通过rsyslog.service服务进行控制,分别用于记录系统内核和各应用程序的日志信息.配置文件/etc/rsyslog.conf /var/log/messages    记录系统内核消息及各种应用程序的公共日志信息,包括启动.IO错误.网络错误.程序报错等,对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关事件的日志记录信息. /var/log/cron    记录crond计划任务产生的事件消息 /var/log/dmesg  

为什么高手离不了Linux系统?我想这就是理由!

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注. 通过本文来记录下我在Linux系统的学习经历,聊聊我为什么离不了Linux系统,同时也为那些想要尝试Linux而又有所顾忌的用户答疑解惑,下面将为你介绍我所喜欢的Linux系统,这里有一些你应该知道并为之自豪的事实. 这里你应该首先抛开Windows系统,小编也并没有说windows系统不好,只是这里单纯的谈一些Linux的优势,让你彻底的认清楚Linux系统特性,希望这些能够成为你爱上Linux的完美理由. 1 我眼中

《Linux菜鸟入门》认识linux系统

系统文件管理 一 linux系统结构 linux系统和windows系统的区别在表面上是类似于ios操作系统和Android的区别,linux系统的存储是基于根目录的,不同于windows系统的分盘.在linux中,所有东西的存在形式都是以文件形式存在,因此,首先要了解的就是linux的系统结构: linux是一个倒树结构,所有的文件都是在系统的顶级目录下的,即根目录"/",而在"/"下的二级目录都是系统装机的时候系统自己建立的,而这些二级目录都有相应的功能: /b

Linux学习笔记(一)——Linux系统概要及基本操作

一.  Linux系统概要 本章的主要内容是对Linux系统的结构和各组件的功能做一个简单的介绍,涉及到Linux系统各组件的相关概念.为了更好的了解Linux系统,首先对Linux系统的基本概念做一个简单的介绍. 1.1           Linux系统组成 Linux系统由四部分组成,各组件在Linux系统中既相对独立由相互联系,每个组件实现相对独立的功能,如果将各组件分开,就不是一个完整的Linux系统.各组件协调工作才能构成一个完整的Linux系统. Linux系统主要分为下面四部分: