inode是什么
每个分区又分两个区,元数据区和数据区。
元数据区主要存储文件的权限,属主属组,时间戳,文件的存储位置指针….就如一本书有目录页和内容页一样,目录页上的记录的是内容的页数,可以通过目录页的页数直接找到内容。而不用从第一页去往后翻。这就是inode(文件的索引)
数据区存储文件内容数据
每个文件都有一个inode,通过这个inode查找文件,inode中的指针指向文件的数据块,
而指针又分为直接指针,间接指针,双重间接指针,多重间接指针。。。。
直接指针:直接指向文件存储位置
间接指针:当直接指针指向的存储空间不足以容纳文件的大小的时候就采取间接指针指向的数据块,(假设一个数据块4k大小,一个指针占用4个 字节,那么一个数据块可以有1024个指针,而1024个指针可以指向1024个4k大小的数据库,那么就是1024*4k=4096k)从这个指针数据块中有N多指 针指向文件数据块,如此层层扩大以达到存储大文件的目的
目录的inode指针指向的数据块存储的是文件名和文件的inode,(也就是可以理解为直接指针指向的数据块只是存储文件名和文件inode),通过 间接指针指向的数据块中存储的文件本身的inode再从元数据区去指向文件所对应的数据块,多层目录间接指针如此多一个循环
绝对路径和相对路径
绝对路径:
从根开始(/)完整的文件位置路径,可用于任何想指定一个文件名的时候
相对路径:
不从根(/)开始,指定相对于当前工作目录或者某一个目录的位置,可作为简短形式指定一个文件名
硬链接和软连接的区别
硬链接是多个文件名共同指向一个文件内容,一个inode各个链接可以任意访问,如果修改了文件内容,则其他链接受到影响,就如同一个房间有多个门牌号,一个链接删除了文件内容并不影响其他链接的使用。
软链接只是原始文件的路径,每个链接都有一个inode,但是所有链接都是建立在原始文件的基础上的,如果删除了所有的软连接并不影响原始文件,但是如果原始文件被删除,则所有软连接都会报错
文件通配符
*:匹配任意零个或多个字符
?:匹配任意单个字符
~:当前用户的家目录
~username:用户家目录
~+:当前工作目录
~-:上一个工作目录
[0-9]:指定范围内的一个数字
[a-z]:以小写a开头小写z结尾(中间不区分大小写)
[A-Z]:以大写A开头大写Z结尾(中间不区分大小写)
[xxx]:列表中的任何一个字
[^xxx]:列表中的所有字符以外的
预定义的字符类
[:digit:]任意数字,相当于[0-9]
[:lower:]任意小写字母
[:upper:]任意大写字母
[:alpha:]任意大小写字母
[:alnum:]任意数字和字母
[:space:]空格
[:punct:]标点符号
标准输入和输出
标准输入0
标准输出1
错误输出2
程序:指令+数据
读入数据
输出数据
打开的文件都有一个文件描述符号
linux给程序员提供三种io设备,
标准输入0:默认接受来自键盘的输入
标准输出1:默认输出到终端端口
标准错误2:默认输出到终端端口
查看文件状态
stat:查看文件的元数据
创建空文件和刷新文件时间
touch:刷新时间
-a:刷新atime 访问时间
-c:刷新改动时间,如果ctime发生改动,则mtime(文件内容的更改时间)也跟随刷新
复制文件和目录cp
cp 如果源是一个文件, 目标不存在 则在目标创建一个和源同名的文件,并且把源的内容复制进去,如果目标是目录而且存在,则在目标目录下创建一个和源同名的文件,并把内容复制进去
如果源是多个文件 ,目标是文件的话会报错,如果目标是目录而且存在,则在目标目录下创建和源同名的文件,并把内容复制进去
如果源是目录需要配合-r选项,目标不存在的话就需要创建并且指定命名的目录并把源目录总的内容复制进去,如果目标是文件的话就会报错,如果目标是目录而且存在的话,就在目标目录下新建一个和源同名的目录并把源目录中的内容复制进去
-i:交互式
-r;-R:递归复制目录及其内部所有内容
-a:归档
-d:不复制原文件,只复制链接名
–preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
–p: 等同–preserv=mode,ownership,timestamp
-v: –verbose
-f: –force
命令别名
显示当前shell进程可用的所有命令别名
]#alias
定义别名name,其相当于指明命令value
]#alias name=value
在命令行中定义的别名,仅对当前shell进程有效,如果想要永久生效,需要定义在配置文件中
仅对当前用户有效:~/.bashrc
对所有用户有效:/etc/.bashrc
编辑配置给出的新配置不会立即生效,需要重新登录或者使用sourec /path/to/config_file 来重新读取shell进程配置文件
撤销别名
]#unalias name
如果别名与原名同名,如果要执行原命令,可使用
\cmd
或者是使用绝对路径(外部命令)
移动和重命名文件
mv
-i:交互式
-f:强制
删除
rm
-i:交互式
-r:递归删除
-f:强制
目录操作
tree:显示目录树
-d:只显示目录树
-L level:指定显示层级数目
mkdir:创建目录
-p:存在于不报错,而且自动创建所需的各目录
-v:显示过程
-m MODE:创建目录时直接指定权限
rmdir:删除目录
-p:递归删除父目录
-v:显示过程
rm -r:递归删除目录树
确定文件内容
file:
-b:列出文件辨识结果时,不显示文件名称
-c:详细显示指令的执行过程,便于排错或分析序执行
-f:列出文件中文件名的文件类型
-F:使用指定的分隔符替换输出文件名后默认的“:”分隔符
-i:输出mime类型的字符串
-L:查看对应的软连接对应的文件类型
-z:尝试去解读压缩文件
io重定向:改变输入和输出的默认位置
把输出和错误重新定向到文件
命令 操作符号 文件名
>把标准输出定向到文件
2>:把错误输出定向到文件
&>:把所有输出定向到文件
>此符号输出会把定向文件的内容覆盖
可以使用 set -c 禁止覆盖
但是使用>| 强制覆盖
使用set +c 允许覆盖
>>把标准输入追加到文件
把标准输出和错误输出重新定向到文件
2>错误输出(覆盖)
2>>错误输出(追加)
标准输出和错误输出可以指向不同的文件
cmd > /path/to/file.out 2 > /path/to/file.out
标准输出和错误输出可以指向相同的文件
&>:覆盖
&>>:追加
cmd >/path/to/file.out 2> &1(顺序很重要)
cmd >/path/to/file.out 2>> &1
():可以合并多个程序的输出
(cal 2008 ; cal 2016)> all.txt
tr :转换字符
如 tr 'a-z' 'A-Z' < /etc/issue
发邮件
mail -s haha wang
命令 标题 收件人
作业
1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
[root@daxia ~]# tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue.out
[root@daxia ~]# cat /tmp/issue.out
\L \N \T
WELCOME ALI
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
root@daxia ~]# echo `who` | tr 'a-z' 'A-Z' > /tmp/who.out
[root@daxia ~]# cat /tmp/who.out
ROOT :0 2016-07-28 07:54 (:0) ROOT TTY2 2016-07-28 07:58 ROOT PTS/1 2016-07-28 17:36 (10.1.250.14)
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!
操作系统版本信息
[root@daxia ~]# echo "hello,i am `whoami` the system version is here,paleasehelp me to caeck it,thanks! `cat /etc/redhat-release` "| mail -s hi xing
[xing@daxia ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/xing": 3 messages 3 new
>N 1 root Thu Jul 28 21:44 18/583 "haha"
N 2 root Thu Jul 28 21:56 19/651 "haha"
N 3 root Thu Jul 28 22:02 18/683 "hi"
& 3
Message 3:
From root@daxia.localdomain Thu Jul 28 22:02:46 2016
Return-Path: <root@daxia.localdomain>
X-Original-To: xing
Delivered-To: xing@daxia.localdomain
Date: Thu, 28 Jul 2016 22:02:46 +0800
To: xing@daxia.localdomain
Subject: hi
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@daxia.localdomain (root)
Status: R
hello,i am root the system version is here,paleasehelp me to caeck it,thanks! CentOS Linux release 7.2.1511 (Core)
&
将/root/下文件列表,显示成一行,并文件名之间用空格隔开
[root@centos6 ~]# ls /root |tr "\n" "\040"
1aA aa anaconda-ks.cfg Desktop f3 install.log install.log.syslog manpages.sh manpages-zh-1.5.1 manpages-zh-1.5.1.tar.gz maxing maxing2016-07-28 公共的 模板 视频 图片 文档 下载 音乐 桌面 [root@centos6 ~]#
原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/26904