Linux入门基础认知2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux入门基础认知2相关的知识,希望对你有一定的参考价值。
文件系统:按名存取文件
文件和目录被组织成一个单根倒置树结构
目录:目录并非文件夹,而是路径映射
文件系统从根目录开始,用“/”表示;根文件系统(rootfs):root filesystem
以. 开头的文件为隐藏文件
文件的数据分两种:
元数据(metadata):描述数据属性的数据:文件名,大小,属性,日期...例如: 人的身高体重
数据(data):文件内实实在在的数据
文件系统分层结构:LSB Linux Standard Base
FHS:Filesystem Hierarchy Standard
(例:磁盘被分为A,B两个分区,一旦A被定义为根分区,B分区想要被访问到,必须与根分区上已存在的某个目录建立联系,当作B分区的入口,才可以进行访问)
文件名规则
文件名最多255个字节
包括路劲在内,文件名最长4095个字节。2^10*4=4k
(ANSI Color文件名颜色标准)蓝色-->目录,绿色-->可执行文件,红色-->压缩文件,浅蓝色-->链接文件,紫色--> 套接字(socket)文件,灰色-->其他文件
标准Linux文件系统(主流文件系统如ext4,xfs),文件名称大小写敏感
文件系统结构
/boot:引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub),initramfs都存放于此目录
/bin:存放供所有用户使用的基本命令;OS启动即使用的程序,不能关联至独立分区
/sbin:存放管理类的基本命令;OS启动即使用的程序,不能关联至独立分区
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录(Linux哲学,用文本文件存储配置文件)
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点(例如,U盘使用时关联到media上进行访问)
/mnt:临时文件系统挂载点
/dev:devices的简写,所有设备文件及特殊文件存储位置
b:block device(块设备)随机访问,例如磁盘
c:character device(字符设备)线性访问,例如键盘
/opt:optional(可选的)第三方应用程序安装目录
/srv:services简写,系统上运行的服务用到的数据
/tmp:temporary简写,临时文件位置(超过30天不使用的文件系统会自动删除)
/usr:universal shared,read-only data 全局共享只读数据
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置,3rd party:bin, sbin, lib, lib64, etc, share
/var:variable data files(可变的数据存放)
cache:应用程序缓存数据目录
lib:应用程序状态信息数据(是data,不是库文件)
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc:用于输出内核与进程i西给相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置
绝大部分情况下,/selinux是关闭状态,其太过严格
Linux上所有应用程序4类主要组成文件
二进制程序(应用程序):/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
库文件:/lib,/lib64 ...
配置文件:/etc,/etc/DIRECTORY,...
帮助文件:/usr/share/man,/usr/share/doc...
Linux下的文件类型(元数据上的区分)
- :普通文件 file
d:目录文件 directory
l:符号链接文件 symbolic link
b:块设备 block device(随机访问的设备文件)
c:字符设备 character device(线性访问对应的设备文件)
p:管道文件 pipe,FIFO(First In,First Out)。/先进后出叫栈/
s:套接字文件 socket
显示当前工作目录pwd
每个shell和系统进程都有一个当前的工作目录
pwd:printing working directory 显示当前的工作目录
绝对路径和相对路径
绝对路径:
以 / 开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径:
不以 / 开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名, 如 ./
基名:basename,一个文件路径最右侧文件名,
目录名:dirname,除basename以外的全部叫目录名
更改目录
cd 改变目录;(change directory)
使用绝对路经或者相对路径
切换至父目录: cd ..
切换至当前用户主目录: cd
切换至上一个工作目录: cd -
命令ls
用法: ls [options] [files_or_dirs]
示例:
ls -a: 列出包含隐藏文件
ls -l :显示额外的信息(metadate元数据) 、
ls -R: 递归显示所有文件,包括子目录下的子文件和子目录...(一般使用tree)
ls -ld: -d 表示显示路径自身,通常与 -l 一起使用
例: ls -a ,ls -l
共10位,第一个字母代表文件类型,rwx 3个*3组表示,属主/属组/其他用户 的使用权限
表示文件硬链接次数
表示属主和属组是谁
表示文件size,特殊文件显示为2位
表示修改时间戳(modify time/mtime)和文件名
例:ls -ld
查看文件状态
stat
文件:metadata, data
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
(数据改了元数据一定改变,元数据变了数据未必会变)
文件名通配符,glob,globing,wildcard
* 匹配零个或多个字符
? 匹配任何单个字符
[0-9] 匹配数字范围
[a-z]:字母(不区分大小写)
[A-Z]:字母(不区分大小写)
[abcd] 匹配列表中的任何的一个字符
[^abcd] 匹配列表中的所有字符以外的字符(去反)
预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
创建文件和刷新时间
touch命令:同时改3个时间戳;如果文件不存在,则创建一个空文件
touch [OPTION]... FILE...
-a 仅改变 atime和ctime 至当前时间
-m 仅改变 mtime和ctime 至当前时间
-t 指定atime和mtime的时间戳 [[CC]YY]MMDDhhmm[.ss]
-c 如果文件不存在,则不予创建
复制:cp [OPTION] 源 目标
-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 只复制源比目标更新文件或目标不存在的文件
--backup=numbered 目标存在,覆盖前先备份加数字后缀
移动和重命名文件
mv命令常用option(选项):
-i: 交互式
-f: 强制
-t:源在后,目标位置在前
删除
rm [OPTION]... FILE...(只删除文件)
常用选项:
-i: 交互式
-f: 强制删除
-r: 递归(想删除文件夹时使用)
--no-preserve-root
示例:
rm -rf / (删除根文件,即删除全部数据)
目录操作
tree 显示目录树
-d:只显示目录
-L level:指定显示层级数
-P pattern:只显示由指定pattern匹配到的路径
mkdir 创建目录
-p:存在于不报错,且可自动创建所需的各目录(创建已买单传的空目录
-v:显示详细信息
-m MODE:创建目录是直接指定权限
rmdir 删除空目录(很少用)
-p:递归删除空父目录(删除一脉单传的空目录)
-v:显示详细信息
rm-r 递归删除目录树(删除非空目录时使用)
PS:生产环境下在不100%明确自己在做什么的时候不要删除任何目录(可以手动建立以回收站,使用mv指令移动到回收站中)
索引节点inode(index node)
inode(index node索引节点)表中包含文件系统所有文件列表
一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
ls -i 显示inode号
目录
文件引用是一个inode号(跨文件系统/分区,inode号不能共享)
人是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
cp和inode
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件
rm和inode
链接数递减,从而释放inode号可以被重新使用
把数据块放在空闲列表中
删除目录项
rm的数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
mv和inode
如果mv命令的目标和源在相同的文件系统,
用新的文件名创建对应的目录项
删除旧的目录条目对的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动
如果目标和源在一个不同的文件系统,mv相当于cp和rm 2步
硬链接和软链接(符号链接)
硬链接 :不同的文件路径指向同一个inode
ln filename [linkname]
创建硬链接会增加额外的记录项来引用文件(增加inode的引用计数)
硬链接对应于同一文件系统同一个物理文件
目录不支持硬链接
创建硬链接时链接数增加
删除文件时:
rm命令减少硬链接的次数
文件要存在,至少有一个链接数
当链接数为0时,该文件被删除
硬链接不能跨越驱动器或分区
符号链接/软链接 :
ln -s filename [linkename]
(原始路径,链接路径)链接路径不指向inode,而是指向原始路径
一个符号链接指向另一个文件的路径
ls -Id 显示链接的名称和引用的文件
软链接可以对目录进行
可以跨越分区
指向另一个文件的路径;其大小为指向的了路径字符串的长度,不增加或减少目标文件inode引用计数
标准输入和输出
程序 :指令 + 数据
读入数据:Input
输出数据:Output
打开的文件都又一个文件描述符(fd:file descriptor)
linux个程序提供3种I/O设备
input,缺省。标准输入:(STDIN) - 0 默认接受来自键盘的输入
/dev/stdin,keyboard
output,缺省。标准输出:(STDOUT)- 1 默认输出到终端窗口
/dev/stdout,terminal monitor
error,缺省。 标准错误:(STDERR)- 2 默认输出到终端
/dev/stdout,
I/O重定向:改变默认位置
把输出和错误重新向到文件
STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> >> 把STDOUT重定向到文件
2> 2>> 把STDERR重定向到文件
&> &>> (COMMAND > /path/to/file.out 2>&1 , COMMAND >> /path/to/file.out 2>&1)把所有输出重定向到文件
> 覆盖文件,>>不覆盖文件,后面追加
标准输出和错误输出各自定向至不同位置:COMMAND > /path/to/file.out 2> /path/to/error.out
合并多个程序的STDOUT:(cal 2007;cal 2008)> all.txt
文件可以包含多种类型的数据
检查文件的类型,然后确定适当的打开命令或应用程序使用
file [options] <filename>...
管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
最后一个命令会在当前shell进程的子shell进程中执行用来
组合多种工具的功能
ls | tr 'a-z' 'A-Z'
以上是关于Linux入门基础认知2的主要内容,如果未能解决你的问题,请参考以下文章