知识点小结

一、文件名通配符

*:任意长度任意字符
?: 任意单个字符
~danran:danran用户家目录
~+:当前工作目录
~-:前一个工作目录
[0-9]:匹配数字范围,只能匹配一个字符
[a-z]:字母,不分大小写
[A-Z]:字母,不区分大小写
[dan]:匹配列表中的任何的一个字符
[^dan]:匹配列表中的所有字符以外的字符
[^]:匹配指定范围之外的任意单个字符
[]:匹配指定范围内的任意单个字符
    eg [abc],[a-m],[A-Z],[a-zA-Z],[0-9],[0-9a-zA-Z]
        [:space:]:水平或垂直空白字符
        [:blank:]:水平空白字符
        [:punct:]:标点符号
        [:print:]:可打印字符
        [:lower:]:小写字母
        [:upper:]:大写字母
        [:alpha:]:大小写字母
        [:digit:]:数字
        [:alnum:]:数字和大小写字母
        [:cntrl:]:控制(非打印字符)
        [:graph:]:图形字符
        [:xdigit:]:十六进制字符
        # man 7 glob 

二、inode索引节点号

inode (index node )表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据 ),包括:

文件类型,权限,UID ,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
目录的数据内容就是目录里面的文件列表,目录引用的是inode号,也就是目录下的文件名和文件inode号之间的映射

  • 节点编号是由分区分配的,不是由磁盘分配,在同一个分区中,不会存在相同的节点编号。
  • 节点编号是唯一的。但在不同的分区中,节点编号可以相同
  • 在centos7中,根上的目录文件的节点号都是64开始,centos6中,根上的目录文件的节点号为2,/sys、/proc文件在内存中,节点编号为1,节点编号是有限的

当系统节点数被占用完时,再创建新文件会提示报错,节点编号是可以耗尽的

  • ls -i 查看文件的节点编号
  • df -i 查看磁盘分区上的可用节点号
  • whatch -n1 每秒扫描一次

cp和inode号

分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,将目录与inode编号关联拷贝数据生成新的文件
在同分区移动文件时,仅移动目录的数据块信息,如果不是在同一个分区,则需要同事将节点编号和原数据同时移动。
删除文件时,仅仅是先删除inode节点号,数据并不会删除,但在其他文件写入时,可能会覆盖占用被删除节点的数据空间

rm和inode

使用rm命令:
1、链接数递减,从而释放的inode 号可以被重用
2、把数据块放在空闲列表中
3、删除目录项
4、数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

>mv和inode

如果mv 命令的目标和源在相同的文件系统,使用mv命令
1、用新的文件名创建对应新的目录项
2、删除旧目录条目对应的旧的文件名
3、不影响inode 表(除时间戳)或磁盘上的数据位置:没有数据被移动

如果目标和源在一个不同的文件系统, mv相当于cp 和rm

三、链接

硬链接

语法 :

ln filename [linkname ]

  • 创建硬链接会增加额外的记录项以引用文件
  • 对应于同一文件系统上一个物理文件
  • 每个目录引用相同的 inode 号
  • 创建时链接数递增
  • 删除文件时:

    rm 命令递减计数的链接
    文件要存在,至少有一个链接数
    当链接数为零时,该文件被删除

  • 不能跨越驱动器或分区

硬链接经常用于将同一个文件放在不同的目录下,从而便于访问,多个链接所在的空间为一个数据空间

硬链接 ln a b       将a文件新建一个链接b    

硬链接,更改其中一个文件,另一个文件会随之改变
删除其中一个文件,另一个文件依然存在,但是链接数减一

软链接

语法:

ln -s filename [linkname]

一个符号链接指向另一个文件
ls -l:显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称

  • 软链接文件使用不同的inode号,将原文件删除后,链接文件即失效,但是在将一个新文件复制到链接原文件路径下时,链接文件恢复正常,跟链接的文件内容无关,只能路径有关。
  • 链接文件的大小并不是原文件本身的大小,而是链接路径指向原文件的文件名字符所占字节的大小,即/tmp/dan文件名占八个字节。

软、硬链接的区别

硬链接

1、硬链接必须在同一个分区中创建,不能跨分区,跨分区只能用软链接
2、硬链接不支持对目录创建,硬链接不支持跨设备跨分区
3、不复制原数据,仅分配一个inode号和文件名

4、硬链接文件使用同一个inode号   
5、硬链接工作的相对路径相对于当前目录   
6、链接文件没有依赖性关系,链接数会加1   

软链接

1、可以对目录进行
2、可以跨分区
3、指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
4、删除链接原文件,则链接指向失效
5、软链接用相对路径时相对的不是当前工作目录,而是相对软链接工作路径

四、重定向

重定向衔接文件,只能导入到文件,管道 | 衔接命令,将输出导入到命令中
标准输入输出

Linux 给程序提供三种I/O 设备

标准输入(STDIN )-0 默认接受来自键盘的输入
标准输出(STDOUT )-1 默认输出到终端窗口
标准错误(STDERR )-2 默认输出到终端窗口

STDOUT 和STDERR 可以被重定向到文件:

命令 操作符号 文件名
支持的操作符号包括:

>  把正确信息输出重定向到文件   
2> 把错误信息输出重定向到文件   
&> 把所有输出重定向到文件   

>  文件内容会被覆盖
>> 原有内容基础上,追加内容 

set -C: 禁止将内容覆盖已有文件, 但可追加

强制覆盖:>|

set +C: 允许覆盖

在脚本前面添加set -C可防止脚本被覆盖

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

2>: 覆盖重定向错误输出数据流;
2>>:追加重定向错误输出数据流;

标准输出和错误输出各自定向至不同位置:

COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向:

&> :覆盖重定向
&>> :追加重定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)<====> &>
COMMAND >> /path/to/file.out 2>&1

正确信息输入到/app/all.log文件中,错误信息当成正确信息输入到/app/all,log文件中,也就是把错误信息也当做正确信息输出
2>&1 <=====>|& 互为等价,都是将错误的信息转换为正确的输出,即没有错误都是正确,全部正确

() :合并多个程序的STDOUT

( cal 2007 ; cal 2008 ) > all.txt

  • 重定向输入文件
    cat > q.txt

将mail.txt文件中的内容邮件发送给danran用户
mail -s hello danran < mail.txt 将mail.txt文件中的内容邮件发送给danran用户,hello为主题

  • 多行重定向:
    使用“<<终止词”命令从键盘把多行重导向给STDIN
    直到 终止词 位置的所有文本都发送给STDIN,<<终止词可以任意定义,终止词必须单独占用一行

将 danran qqq aaa 输入到q文件

cat << EOF > q
danran
qqq

aaa
EOF

EOF 为起始输入端和终止输入端

五、管道符 |

  • cmd1 | cmd2 将cmd1的标准输出作为cmd2的标准输入
  • 可以多级管道,多级管道需确定每一个管道都有标准输入和标准输出
  • 管道(使用符号“| ”表示)用来连接命令(传送给命令)

命令1 | 命令2 | 命令3 | …

将命令1 的STDOUT 发送给命令2 的STDIN ,命令2的 的STDOUT 发送到命令3 的STDIN
STDERR 默认不能通过管道转发,可利用2>&1 或 |& 实现
最后一个命令会在当前shell 进程的子shell 进程中执行用来

组合多种工具的功能

ls | tr 'a-z' 'A-Z'
less/more:分页查看输入

ls -l /etc | lsee/more

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

echo “text email” | mail -s “test” user@example.com

lpr:把输入发送给打印机

echo “test print” | lpr -P priint_name

  • - (将前一个命令的标准输出做后一个命令的标准输出,可用作测试)

tar -cvf - /home | tar -xvf -
将home里面的文件打包,但打包得数据不是记录到文件,而是传送到stdout,经过管道后,将 tar -cvf - /home 传送给后面的 tar -xvf - , 后面的这个 - 就是取前一个命令的stdout,因此就不需要临时使用file了

六、tee:重定向到多个目标

命令1 | tee 文件名 | 命令2

把命令1的STDOUT保存在文件名中,然后管道输入给命令2或输出在屏幕上
使用:

保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容