软硬链接
图示
可以结合上面的图来看。
前言
1,链接像是一种快捷方式一样,如Windows中的快捷方式,但Linux里面的链接有所不一样。
硬链接特点
1,也叫(hard_link)。可以理解为一个指向原始文件inode的指针,每添加一个硬链接 inode(指向存储空间中的实际数据) 数就会变多一个,即使将原文件删除后硬链接也可以访问原来的文件内容。
2,不会占用空间。
3,目录不能创建硬链接。
4,inode与原文件的一样,权限与原文件相同
软链接特点
1,也称为(符号链接symbolic link)。目录可以创建软链接。
2,当原始文件删除后,链接文件也失效。
3,软链接与文件指向的inode是不一样的
4,权限与原文件不同
代码实操
1,ln 命令用于创建链接文件。可以 输入ln --help 查看怎么使用的。如下:
默认是创建硬链接。
ln -s 原文件 目标文件 创建软链接
ln 原文件 目标文件 硬链接
代码:
[root@localhost Desktop]# touch test1 在桌面建立一个文件test1
[root@localhost Desktop]# ln -s test1 test1_symbolic 建立这个文件的软链接
[root@localhost Desktop]# ln test1 test1_hard 建立这个链接的硬链接
[root@localhost Desktop]# stat test1 查看原文件的状态
[root@localhost Desktop]# stat test1_hard 查看硬链接的状态
[root@localhost Desktop]# stat test1_symbolic 查看软链接的状态
在图中可以看出来硬连接与原文件的inode是相同的,与软链接不同。原文件与硬连接的权限一样,与软链接不一样。
数据流和重定向
数据流
1,标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入
2,标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上
3,标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,而分别传送所用的特殊字符如下所示:
标准输入(stdin):代码为0
标准输出(stdout):代码为1
标准错误输出(stderr):代码为2
如键盘就是标准输入,显示屏是标准输出。
重定向操作符
输出重定向操作符:> >>
输入重定向操作符:< <<
功能图表:
代码实操
1,简单点的:
[root@localhost Desktop]# echo 123 1> test1
[root@localhost Desktop]# cat test1
123
对这个命令的解释:echo这个命令没有出错,所以是标准的输出,代码写为1。并且将123重定向到test1文件里面。最后查看这个文件,里面存的是123.
[root@localhost Desktop]#fwefkewf 2> test1
[root@localhost Desktop]# cat test1
bash: fwefkewf: command not found...
对这个命令的解释:fwefkewf 这个命令肯定会出错,所以是标准错误输出,所以写代码2。并且将fwefkewf重定向到test1文件里面。最后查看发现上一个存到123被覆盖,而存的是bash: fwefkewf: command not found…
[root@localhost Desktop]# cat < test1
123
解释:从test1 这个文件里面输入了123,显示在桌面
[root@localhost Desktop]# echo 123 1> test2
[root@localhost Desktop]# abcd 2>> test2
[root@localhost Desktop]# cat test2
123
bash: abcd: command not found...
解释:最后这个test2文件没有被覆盖,。
2,难一点的:
[root@localhost Desktop]# echo 123 1> test3 kkk 2>& 1
[root@localhost Desktop]# cat test3
123 kkk
对这句话的解释:将标准输出重定向到文件test1,将标准错误输出重定向到标准输出,最后输出的123 kkk。注意第一句那里必须是 >& 符号。
换句话解释:将1(标准输出)重定向到文件,将2(标准错误输出)重定向到到1(标准输出)
[root@localhost Desktop]# kkk 2> test3 echo 1>& 2
[root@localhost Desktop]# cat test3
bash: kkk: command not found...
解释:将标准错误输出重定向到test3文件,将标准输出重定向到标准错误输出,最后输出的是:bash: kkk: command not found…
换句话解释:将2(标准错误输出)重定向到文件,将1(标准输出)重定向到2(标准错误输出)
文件的创建与删除
命令:touch
创建文件
如下命令:
atime,即access time,查看了一下文件内容(cat),
文件的atime时间会更新
mtime,即modify time,文件内容被改变了,ctime会更新
ctime,即change time,元数据【文件的属性,例如大小、
文件名等等】被改变,mtime会更新
命令:
touch +文件名字 创建文件
file 文件名 查看文件类型及编码格式
stat 文件名 查看文件所有的信息
rm -fm 文件名 强制删除文件且不提醒
创建多个文件
创建多个普通文件:方法1:touch 文件名1 文件名2 文件名3
方法2:touch {文件名1,文件名2,文件名3}
目录的创建与删除
1,命令:mkdir [-p] [/路径/]目录名
-p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
-v 显示创建目录的详细过程
可以创建多个文件
2,统计目录
统计目录及文件的空间占用情况——du命令功能:查看某个目录中的各级子目录所占用的磁盘空间数。
详细命令:
命令格式: du [选项] [目录名]
复制,移动文件命令
1、复制文件或目录语法:
cp [选项] 源文件 目标文件
2、移动文件或目录mv命令用于剪切或重命名文件,语法为:
mv [选项] 源文件名称 目标文件名称
注意:剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作。
目录结构
详解: