第3次手册整理

创建链接文件

Linux系统中硬盘文件存储原理

硬盘数据分类
  • 用户数据(user data):即文件的数据块(data block),存储数据真实空间

  • 元数据(metadata):存储文件附加属性,如:文件的大小、创建的时间、所有者等信息

硬连接

原理:
  • linux系统允许多个文件指向同一个inode,即允许一个文件拥有多个有效地路径名

  • 理解:硬连接就是指向原始文件inode的指针

查看方法
  • ll 文件名

  • stat 文件名

建立硬连接
  • 格式:

ln  -参数   源文件   目标连接文件
  • 例1:

[root@server ~]# touch  m1.txt
[root@server ~]# stat  m1.txt
  文件:m1.txt
  大小:0          块:0          IO 块:4096   普通空文件
设备:fd00h/64768d Inode:16802638    硬链接:1  # 初始连接数为1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2022-12-13 18:30:25.883879146 +0800
最近更改:2022-12-13 18:30:25.883879146 +0800
最近改动:2022-12-13 18:30:25.883879146 +0800
创建时间:2022-12-13 18:30:25.882879146 +0800
​
​
[root@server ~]# ln   m1.txt   m2.txt   # 建立m2.txt指向m1.txt的硬连接
[root@server ~]# stat  m1.txt
  文件:m1.txt
  大小:0          块:0          IO 块:4096   普通空文件
设备:fd00h/64768d Inode:16802638    硬链接:2   #  连接数加1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2022-12-13 18:30:25.883879146 +0800
最近更改:2022-12-13 18:30:25.883879146 +0800
最近改动:2022-12-13 18:31:22.487877027 +0800
创建时间:2022-12-13 18:30:25.882879146 +0800
注意

软硬连接的区别

[root@server ~]# echo  "hello"  >  s1  
[root@server ~]# ln  s1  s2   # 建立硬连接
[root@server ~]# stat  s1
  文件:s1
  大小:6          块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:16802662    硬链接:2
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
​
[root@server ~]# stat  s2
  文件:s2
  大小:6          块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:16802662    硬链接:2    #  s1  s2  indoe号相同:16802662
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
​
[root@server ~]# ln  -s  s1  s3
[root@server ~]# stat  s3
  文件:s3 -> s1
  大小:2          块:0          IO 块:4096   符号链接
设备:fd00h/64768d Inode:16802663    硬链接:1   # 软连接s3 inode:16802663不同

目录操作命令

创建目录(make directory)

格式:
mkdir  [-p]  [/路径/]目录名
参数

例:
[root@server ~]# mkdir  t1
[root@server ~]# mkdir  t2  t3  t4   #  批量一次性新建
[root@server ~]# mkdir  -p  n1/n2/n3   # 新建递归目录

du命令

选项功能
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。
-s只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。
-h以K,M,G为单位显示磁盘使用情况,以提高信息的可读性。

新建文件

创建普通文件

touch用法1:

[root@server ~]# stat /etc/hostname
  File: /etc/hostname
  Size: 22              Blocks: 8          IO Block: 4096   regular file
Device: 10302h/66306d   Inode: 8608116     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-06-09 11:19:35.484027446 +0800
Modify: 2022-04-16 14:46:36.153011877 +0800
Change: 2022-04-16 14:46:36.153011877 +0800
 
 [root@server ~]# stat /etc/hostname
  文件:/etc/hostname
  大小:7          块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:17805263    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2023-04-23 10:01:42.285018639 +0800
最近更改:2023-03-22 11:20:57.098407291 +0800
最近改动:2023-03-22 11:20:57.098407291 +0800
创建时间:2023-03-22 11:20:57.097407349 +0800
​
# 分析
# atime,即access time,访问文件的时间,查看了一下文件内容(cat),文件的atime时间会更新    
​
# mtime,即modify time,修改内容的时间,文件内容被改变了,ctime会更新
​
# ctime,即change time,修改文件元数据的时间
[root@server ~]# touch /etc/hostname
[root@server ~]# date
2023年 04月 24日 星期一 09:37:38 CST
[root@server ~]# stat /etc/hostname
  文件:/etc/hostname
  大小:7          块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:17805263    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2023-04-24 09:37:36.800493399 +0800
最近更改:2023-04-24 09:37:36.800493399 +0800
最近改动:2023-04-24 09:37:36.800493399 +0800
创建时间:2023-03-22 11:20:57.097407349 +0800
touch用法2

  • 硬连接建立后,删除其中的一个后数据依然可以访问,只有硬连接为0时,数据旧无法访问了

  • 软连接

    原理:
  • 软连接是一种符号连接,类似于windows的“快捷方式”,仅包含所连接的路径名

  • 格式
    ln  -s   源文件  目标连接名
    例1:
    [root@server ~]# echo  "china"  >  h1.txt   #  新建文件
    [root@server ~]# ln  -s  h1.txt   h2.txt    # 创建软连接,指向h2.txt
    [root@server ~]# ll  h2.txt
    lrwxrwxrwx. 1 root root 6 12月 13 18:52 h2.txt -> h1.txt   #  查看连接关系
    [root@server ~]# stat  h1.txt
      文件:h1.txt
      大小:6          块:8          IO 块:4096   普通文件
    设备:fd00h/64768d Inode:2777696     硬链接:1   # 硬连接还是1,没有变化
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    例2:建立网卡配置文件的软连接
    [root@server ~]# ln  -s  /etc/NetworkManager/system-connections/ens160.nmconnection   /root/nic
    [root@node4 ~]# ll  /root/nic
    lrwxrwxrwx. 1 root root 43 12月 13 18:56 /root/nic -> /etc/sysconfig/network-scripts/ifcfg-ens160
    [root@server ~]# cat  nic
    注意
  • 软连接只是一种指向关系,删除源文件则数据不可访问

  • [root@server ~]# echo  "china"  >  d1.txt
    [root@server ~]# ln  -s  d1.txt  d2.txt  
    [root@server ~]# ll  d2.txt
    lrwxrwxrwx. 1 root root 6 12月 13 19:00 d2.txt -> d1.txt
    [root@server ~]# cat  d2.txt
    china
    [root@server ~]# rm  -f  d1.txt
    [root@server ~]# cat  d2.txt   #  连接失效
    cat: d2.txt: 没有那个文件或目录
  • 可以通过ll命令查看软连接实际执行文件及位置

  • 更改软连接方法:ln -snf 新文件名 软连接名

  • 删除软连接,只是删除指向关系,源数据依然可以访问

  • 硬连接中源文件与连接文件公用一个inode号,是同一个文件,软连接中源文件与连接文件拥有不同inode号,是2个不同的文件

  • 软连接的指向关系可以查看,硬连接不可以查看

  • 连接数不同,软连接数不会增加

  • 文件大小不同,硬连接文件大小与源文件一样

  • 软连接不受任何文件系统的影响,任何用户都可以创建指向目录的软连接

  • -p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖

  • -v 显示创建目录的详细过程

  • 作用:统计目录及文件的空间占用情况,查看某个目录中的各级子目录所占用的磁盘空间数。

  • 命令格式: du 参数

  • 参数:

  • 如果文件已存在,更新文件的三个时间,stat可以查看文件的详细信息

  • 如果文件不存在,则表示创建文件

删除文件

格式:

rm  -参数  文件名

用法:

删除文件: rm 文件名

删除目录:rm -r 目录名

强制删除不确认:rm -f 文件名

注意

数据流和重定向

数据流

echo  "字符串" 
echo  "$量"

作用

[root@server ~]# echo  "hello world"
[root@server ~]# str1="hello world"
[root@server ~]# echo  "$str1"
hello world
[root@server ~]# num=1024
[root@server ~]# echo  "$num"
1024
​
[root@server ~]# echo $SHELL
/bin/bash
将标准输出重定向到文件
[root@server ~]# echo  "hello"  > /root/test/file
[root@server ~]# echo  "world" >> /root/test/file

tee命令读取数据输出到文件

tee命令

  • 删除前必须确认路径及名称

  • 标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入

  • 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上

  • 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上

  • 不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,而分别传送所用的特殊字符如下所示:

  • 标准输入(stdin):代码为0

  • 标准输出(stdout):代码为1

  • 标准错误输出(stderr):代码为2

    • 删除文件时必须将文件名及扩展名写全

    • 将标准输出重定向到文件

      echo命令
    • 作用:向终端设备上输出字符串或变量提取后的值

    • 格式

  • 例:

  • 读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想在屏幕上看到内容)

  • tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件。

格式
tee 参数  文件名
参数

-a或--append,附加到现有文件的后面,而非覆盖它

-i或--ignore-interrupts  忽略中断信号

--help  在线帮助

[root@server ~]# tee -a test1.txt  # 追加
123
123
456
456
[root@server ~]# cat test1.txt 
aaa
bbb
ccc
123
456

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值