文件系统:
对于 linux 而言 ,每一个文件都是根目录路径下的某一个文件 ,或者必须要经过根才能访问到
路径:
绝对路径:起始位置直到目标文件或者目录
相对路径:相对于当前位置到达文件或者目录
目录结构和说明:
/boot:存放系统启动相关的文件
/dev:设备文件目录 ,在 linux 下 一切皆文件 ,所有的硬件设备也被识别为各个文件 ,比如光盘 ,如果 是 DVD 设备,则会被识别为 dvd,但有多个命名类似 dvd 的文件,其实是链接到同一个文件 hdc,通常 用 cdrom 引用光驱设备 ,而设备文件非常特殊 ,背景黑色 ,字体黄色 ,而且没有显示文件容量大小 ,设 备文件只储存元数据 ,并没有真实数据 ,而且只是作为设备的入口存在
设备分为两种文件类型:
块设备(有缓冲):可以实现随机访问的设备,无所谓先后顺序,只要能找到既可,而且 访问是按设备块进行访问的 ,首先数据都被分割为块 ,所以称为块设备
字符设备(无缓冲):线性设备,要完成线性才能访问,线性:有次序的,通常是按字符 为单位输入读取的设备 ,称为字符设备 ,比如键盘、鼠标、显示器、等
/etc:配置文件存放的目录 ,系统上大多数服务程序的配置文件都是此目录下 ,或该目录下创建子目录
/home:用户家目录,每一个用户的家目录通常默认为/home/username 该用户目录不能与其他的用户 同名 ,username 相对应的用户名称
/root: root 用户家目录 ,root 用户是管理员用户 ,所以他的家目录不在 home 下 ,而直接在根目录下 以 root 为名的目录
/lib:库文件和内核模块文件 ,库文件分两种 ,静态库和动态库
/lib/modules:内核模块文件
静态库:在 linux 下为.a 结尾
动态库:在 linux 下为.so(shared object 共享对象)结尾 在 windows 为.dll 结尾
/lost+found:并不是目录,而是每个新建的分区都会有的,与文件系统相关,用于存储文件系统在机器 突然断电的时候 ,有些还没保存的文件会造成丢失 ,实现丢失找回该文件的目的
/media:挂载点目录 ,通常用于挂载移动设备
/mnt:挂载点目录 ,通常用于挂载额外的文件系统
/misc:杂项 ,默认目录为空
/opt:可选目录 ,早期是用于安装第三方软件 ,但目前并不安装到该目录
/proc:伪文件系统 ,基于内存 ,用于存储内核及进程相关信息 ,该目录原本是为空的 ,但系统启动了以 后 ,该目录并不为空 ,用于存储内核映射文件 ,大多数的文件都是内核可调参数文件 ,和内核工作的统计 数据 ,要想改变操作系统的根本工作属性 ,可以通该目录下的文件更改
/sys:伪文件系统 ,基于内存 ,该目录原本是为空的 ,但系统启动了以后 ,该目录并不为空 ,存储的是与 硬件相关的属性映射文件 ,实际上也与内核有一定的关系 ,只不过该目录被独立出来 ,通常用于实现硬件 设备管理,sysfs 虚拟文件系统提供了一种比 proc更为理想的访问内核数据的途径;其主要作用在于为管 理 Linux 设备提供一种统一模型的的接口
/tmp:/var/tmp:临时文件存储目录 ,对于临时文件而言 ,只是临时存储 ,如果该目录下的某些文件一 个月没有被访问时,会自动清除,而且在权限方面也比较特殊,所有用户都能在该目录下创建和访问文件, 但是用户之间只能删除自己的文件
/var:可变化文件目录 ,当刚安装完的系统时 ,该目录容量比较小 ,但当系统经过一段时间的运行 ,该目 录容量会随着系统运行时长增长而无规律增大 ,因随着系统的运行 ,该目录下的文件会越来越多 ,数据量 也会越来越大 ,比如日志文件、锁文件、程序进程 ID 号(PID 文件)等等
/var/cache
/var/lib
/var/local
/var/lock
/var/log
/var/opt
/var/run
/var/spool
/var/tmp
存储应用程序缓存数据
存储发生变化的状态信息 ,应用程序的状态信息
主要是为/usr/local 目录是的程序存储常发生变化的数据
存储锁文件
存储日志文件
主要是为/opt 目录是的程序存储常发生变化的数据
存储运行中的进程相关的数据 ,例 :PID 文件
存储应用程序的 spool 数据
存储系统重启时留存的临时数据
/bin:(binary 二进制)存放可执行文件 ,通常存放用户命令
/sbin:存放可执行文件 ,通常存放管理命令
/usr:存放只读文件:
/usr/bin:
/usr/sbin:
/usr/lib :如果某个程序所依赖的库不/lib 的共享库 ,那么需要放到该目录下
/usr/local :用于安装第三方软件
/usr/local/bin
/usr/local/sbin
/usr/local/lib
ls : list 列出 ,列表
列出指定路径或当前目录下的子目录和文件
在默认的 ls 是加有别名,加有选项的,其实使用 ls 等于 ls –color =auto 该选项表示指定了颜色 显示方式 ,type ls 或 which ls 可以查看 ls 的别名,如果不使用别名的 ls 在命令前面加入\ 表示转义, 反别名
ls 不加选项时 ,按照默认形式工作
ls 不加参数时 ,只列出当前目录的子目录和文件
选项:
-l 长格式输出,文件类型,文件权限、文件硬链接的次数、文件所有者(owner)、所属组(group)、 文件大小(size)默认单位是字节、时间戳(timestamp)、文件名、等与相关信息
文件类型:
– :表示普通文件 (file)
d: 目录文件 (driectory )
b:块设备文件 (block)
c:字符设备文件 (character)
l :符号链接文件/软链接文件 (symvolic link file)
p:命令管道 ( pipe)
s:套接字文件 (socket)
pwd : Print Working Directory
用于显示当前目录
家目录:
当用户登录系统时 ,只要用户有家目录 ,都是所在家目录里 ,用户有家目录 ,也是用户主目录 ,在 bash 中 家目录用~ 表示
cd :change directory 用于切换目录
cd 路径 ,则切换到路径目标目录 ,如果目标是个文件 ,那么会报错
cd ~ 回到当前用户的家目录
cd 不加任何参数时 ,会返回到当前用户的家目录
cd ~username 当~加上用户名时 ,可以直接切换到目标用户的家目录 ,一般情况下只
有 root 用户可以有权限进入普通用户家目录,原因:普通用户与普通用户之间权限不够,所以普通用户无 法切换到其他普通用户家目录
cd – 切换到上一次切换的目录 ,在上次所处的目录切换到当前目录之间来回切换 cd . 当前目录
cd .. 返回当前目录的上一级目录
目录管理类命令:
文件/目录命名规则:
1、名称长度不能超过 255 个字符:
2、不能使用/当文件名:
3、严格区分大小写:
tree:查看目录树 ,以树状显示当前或指定的目录和子目录以及文件
mkdir:创建目录
mkdir /tmp/cd 在命令后面跟上的是路径 ,最后一个目录名称是创建的目标目录
-v:verbose 表示详细信息 ,可以查看命令在执行的过程
mkdir -p /tmp/cjk/fda 级联创建目录,当 tmp 目录下没有 cjk 目录时,如果不加-p 选
项是无法创建 ,加上-p 选项 ,如果/tmp 下没有 cjk 目录 ,则会先创建 cjk 再创建 fda
mkdir -pv /mnt/test/r/{r,y} 同时创建多个目录用{ }括起 目标目录之间以 ,分隔
mkdir -pv /mnt/test/{s/r,y} 同时在/mnt/test/目录下创建 s/目录下创建 r 在
/mnt/test/目录下创建 y ,{s/r,y}称为命令行展开
mkdir -pv /mnt/test/{t,u}/l 同 时 在 /mnt/test/ 目 录 下 创 建 t/ 目 录 下 创 建 l ,
/mnt/test/目录下创建 u/目录下创建 l
mkdir -pv /mnt/test/{a,d}_{b,c} 同时在/mnt/test/目录下创建 a_b a_c d_bd_c 目录
删除目录:
rmdir : (remove directory)
rmdir /mnt/test/a_b 的目录
rmdir -p /tmp/cjk/fda
删除/mnt/test/目录下的 a_b 目录 ,rmdir 只能删除目录 ,并且是空
级联删除 ,当删除到非空的目录会报错不能删除 ,但子目录空目录都
被删除 ,例 ,tmp 非空 ,那么报错 ,tmp 无法删除 ,cjk/fda 目录是空目录 ,那么会被删除
文件管理命令:
stat filename 可以查看指定文件或目录的时间戳
touch 命令实际并不是用于创建文件,而是用于修改时间戳的,只是目标文件不存在,会自动创建一个空 的文件 ,如果目标文件存在 ,那么修改目标文件时间戳
创建文件 ,可以使用文本编辑器创建
touch filename touch -c filename touch -a filename touch -m filename
创建一个空文件
只修改文件时间戳 ,如果目标文件不存在 ,也不创建目标文件 只修改文件的访问时间为当前时间
只修改文件的修改时间为当前时间
touch -m -t 202303181204.44 可以不加。默认为 0 秒
touch -a -t 202303181204.44
以不加。默认为 0 秒
指定修改文件的修改时间 ,格式为年月日时分.秒 ,秒
指定修改文件的访问时间 ,格式为年月日时分.秒 ,秒可
注 :不论修改访问或修改时间 ,改变时间也是会被修改 ,改变是文件的无数据/属性
文本编辑器:
nano 文件编辑器,在打开 nano 编辑时,下面有所相应的提示以^号和相对应的字母键引用,表示 用 Ctrl +相对应的字母字 ,在保存时会有提示是否以指定的文件名命名 ,同时可以修改路径
nano filename 可以编辑文件 ,如果目标文件已存在 ,那么直接打开编辑 ,如果目录文件没有 存在 ,那么会以指定的名称创建新文件并打开编辑 ,当保存文件才会被创建完成 ,如果不保存 ,那么会取 消创建 ,如果新创建一个文件时 ,可以不指定文件名 ,但在保存时 ,需要指定文件名 ,同时也可以指定文 件路径 ,如果不指定路径 ,那么会存放在当前目录下
删除文件:
rm 命令,早期版本中是不会询问是否确认删除 ,由于后期修改过,引入别名 ,目前版本的 rm 其实 是加要-i 选项,但是只有管理员才有默认的选项,普通用户是没有该选项,默认直接删除,使用 type rm 或 which rm 可以查看 rm 的别名 ,默认只能删除文件 ,需要删除目录需要加入对应的选项
rm filename 不删除
\rm filename 反别名
rm -f filename
rm -r filename
删除指定文件,但会询问是否要删除该文件,输入 y 回车则确认删除,输入 n 则
不使用加有默认选项的 rm 删除文件,直接使用没有选项的 rm,\符号表示转义,
强制删除 ,不提示询问 ,也不需要在命令前加\
删除目录或目录下的子目录和文件,也可以删除文件 ,-r 和 -f 可以同时使用
复制和移动文件:
cp:copy
cp srcfile destfile 复制源文件到目标文件 ,如果目标文件不指定路径 ,默认复制到当前目录, 复制到当前目录文件名不能相同 ,源文件可以同时指定多个 ,同时复制多个文件到一个目录 ,当复制一个 文件到一个目录下 ,如果在目标目录下不指定文件名时 ,则命名为源文件 ,如果指定目标文件名 ,则以指 定的名称命名 ,如果目标文件的命名和目标目录下已有同名的文件 ,则会询问是否复盖 ,输入 y 确认 ,n 否认 ,其实cp 复制时 ,遇到同名的目标存在时 ,是不会询问的 ,只是 cp 命令有个别名 cp -i 加有-i 选项 的 ,-i 是 redhat 自己定义的一个默认选项 ,普通用户并没有-i 的别名 ,只有管理员才有
如果源文件有多个 ,那么目标必须是个目录 ,并且需要存在 ,否则复制无法进行 ,默认cp 不能复制
目录 ,需要加对应的选项
例:
# cp /etc/passwd /tmp/ 复制/etc/passwd 到 /tmp/目录下 ,并保持源文件名称
# cp /etc/passwd /tmp/test 复制/etc/passwd 到 /tmp/目录下 ,重新命名为 test ,如是
test 在 tmp 已有该名称文件存在 ,则会询问是否复盖,输入 y 确认 ,n 否认,如果 test 是个目录 ,那么 复制到/tmp/test/目录下 ,并保持源文件名称
cp -r srcdir destdir -r 选项表示递归复制,可以复制目录和目录下的所有子目录和文件到另一
个目录 ,当复制目录时 , 目标必须要是个目录 ,并且也可以重命名
cp -fr srcdir destdir 强制复盖不询问 ,即使复制源文件或目录到目标目录或文件时 ,当目标
目录或文件存在时 ,进行强制复制并不询问是否复盖
cp -p srcdir destdir 复制源文件或目录到目标目录或文件时 ,保持原有的属主、属组、权限、