文件系统及文件权限

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_43551152/article/details/83513407

文件系统及文件权限

命令帮助

–help和-h选项

显示用法总结和参数列表
使用的大多数,但并非所有的
示例:

date–help
Usage:date[OPTION]…[+FORMAT]or: date[-u|–utc|–universal][MMDDhhmm[[CC]YY][.ss]]
[]表示可选项
CAPS或<>表示变化的数据
…表示一个列表
x |y| z的意思是“x或y或z“
-abc的意思是-a -b –c
{ } 表示分组

man命令

man命令的操作方法:

使用less命令实现  
space, ^v, ^f, ^F: 向文件尾翻屏  
b, ^b: 向文件首部翻屏  
d, ^d: 向文件尾部翻半屏  
u, ^u: 向文件首部翻半屏  
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行  
y or ^Y or ^P or k or ^K:向文件首部翻一行  
q: 退出  
#:跳转至第#行  
1G: 回到文件首部  
G:翻至文件尾部  

man搜索

/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;
不区分字符大小写;
n: 下一个
N:上一个
KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个

info

man常用于命令参考,GNU工具info适合通用文档参考
没有参数,列出所有的页面
info 页面的结构就像一个网站
每一页分为“节点”
链接节点之前*
info [命令]
方向键,PgUp,PgDn导航
Tab键移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入选定链接
n/p/u/l进入下/前/上一层/最后一个链接
s文字文本搜索
q退出info


文件系统

文件名规则

boot 文件夹装的是引导文件
etc文件夹装的是各种设置,配置文件等,等价于注册表
home文件夹存放用户数据
bin(binary)二进制,装的是普通用户可执行的二进制程序
sbin是系统管理员常用的工具,tem文件夹装的是临时数据
var文件夹装的是可变内容,系统日志(/var/log内)等
proc(process)进程,正在内存中运行的程序,该文件夹不在硬盘上
mount /dev/硬盘号/ 挂载硬盘

文件命名

Linux系统对大小写不敏感,常用的Linux文件系统(xfs;ext4)对大小写敏感
而Linux系统识别fat文件格式时对大小写不敏感
文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色–>目录绿色–>可执行文件红色–>压缩文件浅蓝色–>链接文件灰色–>其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
标准Linux文件系统(如ext4),文件名称大小写敏感
例如:MAIL,Mail,mail, mAiL

文件系统结构

/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相关的安全策略等信息的存储位置

本节笔记


ls -R 列出当前文件夹的目录及子目录(所以文件和目录)
ls -r 反转顺序
文件有三个时间属性,
修改时间mtime(modify time)
读取时间atime(access time)ll --time=atime 查询文件读取的时间
元数据的更改时间 ctime (change time)
stat +文件名 查询文件的三个时间

绝对和相对路径 (重点)


绝对路径:
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径名
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
基名:basename +文件可以取文件的基名
目录名:dirname +文件可以取文件的目录名


列出目录内容

列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
示例:

ls -a包含隐藏文件  
ls -l显示额外的信息  
ls -R目录递归通过  
ls -ld目录和符号链接信息  
ls -1 文件分行显示  
ls –S 按从大到小排序  
ls –t 按mtime排序  
ls –u 配合-t选项,显示并按atime从新到旧排序  
ls –U 按目录存放顺序显示  
ls –X 按文件后缀排序  
ls /var l{0...9}  
ls /etc rc{0...6}*  

.>boot/111 快速清空文件111
touch +文件名创建空文件,若该文件已存在,就刷新文件的时间
. >> +文件名 创建空文件,若存在,不刷新文件时间,追加,重定向
rename +conf conf.bak *.conf 可以批量修改多个后缀为conf的文件名字
或者-开头的文件,要创建或者删除是只需在或者-前加./就可以了

date 0921221392018直接改时间                              (重点)  
data +%w -d '-2 day'显示两天前是星期几  
data +%F 显示年月日  
data +'%F %T' 显示年月日和时间  
data +%Y 显示年  
data +%Y%M%D 显示年月日  
whatis +命令  查询该命令作用=man -f  
mandb 生成whatis数据库 centos6  
makewhatis 生成whatis数据库  centos7  

安装命令工具 (重点)

df查找sr0挂载光盘,若无挂载光盘则创建挂载点

df -h    #查看光盘是否已挂载
mkdir /data/cdrom     #新建挂载目录
mount /dev/sr0/data/cdrom               #挂载光盘到目录,然后执行下一步  
df                                #查找sr0挂载路径
rpm -ivh +挂载光盘目录(右键复制media),再输入工具首字母补全,回车安装  

file

file content 文件内容
file metadata 文件元数据

inode number 文件节点

ls -i 查询文件节点编号 

节点编号存放在/boot,节点编号用完后无法存放文件 (面试)

ls -di +文件夹  查询挂载节点位置  
ls -di /data /boot /  centos6 这三个节点为2 centos7上着三个节点为64  

移动复制的区别(重点)原理层面

cp /dir1/f1 /dir2/f2  
mv /dir1/f1 /dir2/f2  

相对路径(重点) 硬链接和软链接的区别?
通俗来说:
硬链接:对一个文件,起多个文件名
软连接:原始文件一般路径用相对路劲,


相对路径一定相对于软连接文件的路径 ********************** (重点 看录屏)

1.是否是同一个文件 硬链接是同一个文件,软链接不上是同一个
2.是否跨分区
3.链接数增长?
4.inode number 是否相同?
5.原始文件删除,链接文件可否访问?
6.大小?
7.支持目录?
8.相对路径
节点表


例子:

ln -s ../../dev/zero  d1/d2/zero-link  

0输入
1输出
2错误
命令+ &> /dev/null 将输出结果直接扔进null(垃圾箱),不在屏幕显示


文件通配符 (重点)

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

touch命令: (重点)

touch [OPTION]… FILE…

-a                                     #仅改变atime和ctime  
-m                                     #仅改变mtime和ctime  
-t [[CC]YY]MMDDhhmm[.ss]               #指定atime和mtime的时间戳  
-c                                     #如果文件不存在,则不予创建  

例子:

复制文件和目录cp (重点)
cp[OPTION]… [-T] SOURCE DEST
cp[OPTION]… SOURCE… DIRECTORY
cp[OPTION]… -t DIRECTORY SOURCE…
cpSRC DEST
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
cpSRC… DEST
SRC…:多个文件
DEST必须存在,且为目录,其它情形均会出错
cpSRC DEST
SRC是目录:此时使用选项:-r
如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:

cp常用选项

cp
-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:目标存在,覆盖前先备份
–backup=numbered 目标存在,覆盖前先备份加数字后缀

本节笔记

快捷键

cp +文件路径/a文件名 文件路径/a新文件名  #将a文件复制到另一文件夹并改名  
cp +r +a目录  +b目录  将a目录复制到b目录,成为b目录的子目录  
cp -a 常用来备份,保留复制文件的所有属性  
cp file1 file1.bak  将file1文件备份为file1.bak  
等同于cp file1{,.bak}  
mv +a文件 +b文件  将文件a改名为文件b  
mv +a文件 +文件夹  移动a文件到文件夹  
mv -t +文件夹+多个文件  把多个文件移动到目标文件夹  
移动和重命名文件  
mv [OPTION]... [-T] SOURCE DEST  
mv [OPTION]... SOURCE... DIRECTORY  
mv [OPTION]... -t DIRECTORY SOURCE...  

常用选项:

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

删除

rm[OPTION]... FILE...  
常用选项:  
-i交互式  
-f强制删除  
-r递归  
--no-preserve-root 删除/  
示例:  
rm-rf/ 慎用   
目录操作  
tree 显示目录树  
-d: 只显示目录  
-L level:指定显示的层级数目  
-P pattern: 只显示由指定pattern匹配到的路径  

mkdir创建目录 练习

mkdir
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
rm-r递归删除目录树
标准输入和输出
程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都有一个fd: file descriptor (文件描述符)
Linux给程序提供三种I/O设备
标准输入(STDIN)-0默认接受来自键盘的输入
标准输出(STDOUT)-1默认输出到终端窗口
标准错误(STDERR)-2默认输出到终端窗口

I/O重定向:改变默认位置

把输出和错误重新定向到文件 (重点)

STDOUT和STDERR可以被重定向到文件
命令操作符号文件名
支持的操作符号包括:
_> 把STDOUT重定向到文件
2>把STDERR重定向到文件
&>把所有输出重定向到文件
_> 文件内容会被覆盖
set –C 禁止将内容覆盖已有文件,但可追加
_>| file 强制覆盖
set +C 允许覆盖
_>> 原有内容基础上,追加内容
2>覆盖重定向错误输出数据流
2>> 追加重定向错误输出数据流
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
&>覆盖重定向
&>> 追加重定向
COMMAND > /path/to/file.out2>&1 (顺序很重要)
COMMAND >> /path/to/file.out2>&1
():合并多个程序的STDOUT
(cal2007;cal2008)> all.txt

本节笔记

重定向

.> 覆盖
.>>追加不覆盖原文件内容
2>将错误信息重定向到文件中
1+到100 echo {1…100} | tr ’ ’ + |bc
命令(mail) << EOF 写一封信,直到输入EOF结束

文件权限

rwx
r–4 读取权限
w–2 写入权限
x–1 执行权限
-rwxrwxrwx -为文件类型 777
-rw-rw-rw- 只有读写权限,没有执行权限666
$ chgrp +组+用户 将此用户改为此组
cat与tac相反

abcd  dcba  
head  +命令 默认显示该文件的前十行  
head -n +数字  显示文件的前几行  
tail +f跟踪文件号,文件被删除就失效  
tail +F跟踪文件名,文件被删除后再新建的同名文件继续跟踪  

tr命令 (重点)

tr转换和删除字符
tr[OPTION]… SET1 [SET2]
选项:

tr
-c–C --complement:取字符集的补集  
-d--delete:删除所有属于第一字符集的字符  
-s--squeeze-repeats:把连续重复的字符以单独一个字符表示  
-t--truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符  
[:alnum:]:字母和数字  
[:alpha:]:字母  
[:cntrl:]:控制(非打印)字符  
[:digit:]:数字  
[:graph:]:图形字符  
[:lower:]:小写字母  
[:print:]:可打印字符  
[:punct:]:标点符号  
[:space:]:空白字符  
[:upper:]:大写字母  
[:xdigit:]:十六进制字符  

从文件中导入STDIN …(重点)(重点)

使用<来重定向标准输入
某些命令能够接受从文件中导入的STDIN
tr‘a-z’‘A-Z’</etc/issue
该命令会把/etc/issue中的小写字符都转换成写写字符
tr–d abc< /etc/fstab删除fstab文件中的所有abc中任意字符
cat > file
mage
wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入
Cat > filea< fileb


把多行发送给STDIN … (重点)(重点)练习
使用“<<终止词”命令从键盘把多行重导向给STDIN
直到终止词位置的所有文本都发送给STDIN
有时被称为就地文本(heretext)
例如:

'mail-s'PleaseCall'[email protected]<<END  
>HiWang,  
>  
>Pleasegivemeacallwhenyougetin.Wemayneed  
>todosomemaintenanceonserver1.  
>  
>Detailswhenyou'reon-site  
>Zhang  
>END  

例子:

cat >f1 回车  
aa  
bb  
cc  
                              #回车一次输出aa,再回车,输出bb,再回车,输出cc,此为单行重定向  
cat >f1 <<b                           #回车,以b结尾,(常用EOF结尾)  
>aa  
>bb  
>cc  
>b  
以b结尾,输出:  
aa  
bb  
cc             #此为多行重定向  

管道 … (重点)练习

管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
STDERR默认不能通过管道转发,可利用2>&1 或|& 实现
最后一个命令会在当前shell进程的子shell进程中执行用来
组合多种工具的功能

ls| tr‘a-z' ‘A-Z'  

less :一页一页地查看输入

ls-l/etc|less  

mail:通过电子邮件发送输入

echo'testemail'|mail-s 'test'[email protected]  

lpr:把输入发送给打印机
echo’testprint’|lpr-Pprinter_name
示例:
将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,
经过管道后,将tar -cvf-/home 传送给后面的tar -xvf-,
后面的这个-则是取前一个命令的stdout,因此,就不需要使用临时file了
tar -cvf-/home | tar -xvf-

猜你喜欢

转载自blog.csdn.net/weixin_43551152/article/details/83513407