袁党生博客

  • 主页
  • linux基础
  • SHELL
  • WEB
  • 负载
  • 企业级应用
  • 数据库
  • KVM
  • Docker
  • K8S
  • 监控
  • 存储
  • 博客搭建问题
  1. 首页
  2. linux基础
  3. 正文

文件管理

2020年8月19日 2844点热度 0人点赞 0条评论


本章概要

  • 文件系统结构元素
  • 创建和查看文件
  • 复制、转移和删除文件
  • 软和硬链接

1、文件系统结构元素

文件系统与目录结构

[root@centos7 ~]#tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── data
├── date
├── dev
├── etc
├── home
├── httpd
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── misc
├── mnt
├── net
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

文件系统

  • 文件和目录被组织成一个单根倒置树结构
  • 文件系统从根目录下开始,用“/”表示
  • 根文件系统(rootfs):root filesystem
  • 文件名称区分大小写
  • 以.开头的文件为隐藏文件
  • 路径分隔的 /
  • 文件有两类数据:
      元数据:metadata
      数据:data
  • 文件系统分层结构:LSB Linux Standard Base
  • FHS: (Filesystem Hierarchy Standard)
      http://www.pathname.com/fhs/

文件名规则

  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件
  • 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。
  • 标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL, Mail, mail, mAiL
    注意:Linux系统中文件名称是否区分大小写与文件系统有关,linux下文件系统有ext4,xfs,vfat等。标准Linux文件系统(如ext4),文件名称区分大小写。例如:MAIL, Mail, mail, mAiL。但vfat文件系统则不区分大小写。

文件系统结构

  • /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:类似于bin
      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相关的安全策略等信息的存储位置
  • /misc:自动挂载光盘,该目录与autofs服务有关。
    一般情况下,系统镜像在系统启动以后会挂载到/media(centos6)或/run(centos7)目录下,但在启动autofs服务之后,镜像文件也会自动挂载到该目录下,即/misc/cd目录。

    [root@centos7 ~]#ls  /misc/cd
    CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
    EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
    EULA             isolinux  repodata  TRANS.TBL
  • /net:与网络有关的目录

linux上的应用程序的组成部分

  • 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
  • 库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
  • 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
  • 帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

linux下的文件类型

  • -:普通文件
  • d: 目录文件
  • b: 块设备文件
    注意:块设备文件不会显示文件大小,而是在同样的位置显示设备号
    主设备号为第一列数字8,次设备号为第二列数字0-5

    [root@centos7 ~]#ll /dev/sd*
    brw-rw----. 1 root disk 8,  0 Aug 21 10:03 /dev/sda
    brw-rw----. 1 root disk 8,  1 Aug 21 10:03 /dev/sda1
    brw-rw----. 1 root disk 8,  2 Aug 21 10:03 /dev/sda2
    brw-rw----. 1 root disk 8,  3 Aug 21 10:03 /dev/sda3
    brw-rw----. 1 root disk 8,  4 Aug 21 10:03 /dev/sda4
    brw-rw----. 1 root disk 8,  5 Aug 21 10:03 /dev/sda5
  • c: 字符设备
  • l: 符号链接文件
  • p: 管道文件pipe
  • s: 套接字文件socket
    ll命令查询文件,文件权限前字母即为该文件类型

    lrwxrwxrwx. 1 root root          25 Aug 21 10:03 initctl -> /run/systemd/initctl/fifo
    drwxr-xr-x. 4 root root         300 Aug 21 10:03 input
    crw-r--r--. 1 root root      1,  11 Aug 21 10:03 kmsg
    srw-rw-rw-. 1 root root           0 Aug 21 10:03 log

centos 7目录变化

  • /bin 和 /usr/bin
  • /sbin 和 /usr/sbin
  • /lib 和 /usr/lib
  • /lib64 和 /usr/lib64
    centos6

    [root@centos6 ~]#ll  -d /bin /sbin /lib /lib64
    dr-xr-xr-x.  2 root root  4096 Aug 11 15:50 /bin
    dr-xr-xr-x. 11 root root  4096 Jul 18 16:42 /lib
    dr-xr-xr-x.  9 root root 12288 Aug 11 15:49 /lib64
    dr-xr-xr-x.  2 root root 12288 Aug 11 15:50 /sbin

    centos7

    [root@centos7 ~]#ll -d /bin  /sbin  /lib /lib64
    lrwxrwxrwx. 1 root root 7 Jul 18 17:17 /bin -> usr/bin
    lrwxrwxrwx. 1 root root 7 Jul 18 17:17 /lib -> usr/lib
    lrwxrwxrwx. 1 root root 9 Jul 18 17:17 /lib64 -> usr/lib64
    lrwxrwxrwx. 1 root root 8 Jul 18 17:17 /sbin -> usr/sbin

显示当前工作目录

  • 每个shell和系统进程都有一个当前的工作目录
  • CWD:current work directory
  • 显示当前shell CWD的绝对路径
     pwd: printing working directory
      -P 显示真实物理路径
      -L 显示链接路径(默认)

    [root@centos7 bin]#pwd -P
    /usr/bin

绝对和相对路径

  • 绝对路径
      以正斜杠开始
      完整的文件的位置路径
      可用于任何想指定一个文件名的时候
  • 相对路径名
      不以斜线开始
      指定相对于当前工作目录或某目录的位置
      可以作为一个简短的形式指定一个文件名
  • 基名:basename 是指路径中最后一个/后的内容
  • 目录名:dirname 是指路径中最后一个/前的内容
    [root@centos7 ~]#basename /etc/sysconfig/network-scripts/
    network-scripts
    [root@centos7 ~]#dirname /etc/sysconfig/network-scripts/
    /etc/sysconfig

更改(切换)目录
cd:change directory 改变目录
cd /home/yuan 绝对路径切换目录
cd home/yuan 相对路径切换目录
绝对路径切换目录

[root@centos7 ~]#cd /home/yuan

相对路径切换目录

[root@centos7 yuan]#cd /
[root@centos7 /]#cd home/yuan
[root@centos7 yuan]#

.:当前目录
..:上一级目录,即父目录
-:上一次离开的目录
cd或cd ~:回到当前用户家目录
cd..:回到上一级目录即父目录
cd -:回到上一次离开的目录
与cd相关环境变量
PWD:当前目录路径
OLDPWD:上一次目录路径

[root@centos7 ~]#cd /data
[root@centos7 data]#cd
[root@centos7 ~]#echo $PWD
/root
[root@centos7 ~]#echo $OLDPWD
/data

知识扩展:
"cd -"的原理:与OLDPWD变量有关,当目录切换时,会将上一次目录路径记录到OLDPWD变量,当使用cd -时,调用该变量即可。

列出目录内容
ls:list directory contents 列出文件内容
用法:ls [OPTION]... [FILE]...
ls -a --all 列出所有文件(包含隐藏文件)

[root@centos7 data]#ls -a
.  ..  dir1  f1  f2  fstab  fstab.~1~

ls -A 列出所有文件(.和..除外)

[root@centos7 data]#ls -A
dir1  f1  f2  fstab  fstab.~1~

ls -l 列出详细信息

[root@centos7 data]#ls -l
total 8
drwxr-xr-x. 3 root root  18 Aug 21 15:57 dir1
-rw-r--r--. 1 root root   0 Aug 21 15:57 f1
-rw-r--r--. 1 root root   0 Aug 21 15:57 f2
-rw-r--r--. 1 root root 685 Aug 21 15:50 fstab
-rw-r--r--. 1 root root 685 Aug 21 15:50 fstab.~1~

ls -R 递归显示目录信息

[root@centos7 data]#ls -R
.:
dir1  f1  f2  fstab  fstab.~1~

./dir1:
dir2

./dir1/dir2:
dir3

./dir1/dir2/dir3:

ls -ld 只显示目录和符号链接本身的详细信息,而不显示目录下的内容

[root@centos7 data]#ls -ld  /data
drwxr-xr-x. 3 root root 68 Aug 21 15:57 /data

ls -1 分行显示目录或文件

[root@centos7 data]#ls -1
dir1
f1
f2
fstab
fstab.~1~

ls -S 根据文件大小从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls -r --reverse 反转 倒序排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
ls -d 只显示目录本身
ls -aI "[^.]*"或ls -d .*或l. 只显示隐藏文件

[root@centos7 ~]#ls -d .*
.              .bash_logout   .cache   .dbus          .local    .ssh      .xauthi2dZgk
..             .bash_profile  .config  .esd_auth      .mozilla  .tcshrc   .Xauthority
.bash_history  .bashrc        .cshrc   .ICEauthority  .pki      .viminfo
[root@centos7 ~]#l.
.              .bash_logout   .cache   .dbus          .local    .ssh      .xauthi2dZgk
..             .bash_profile  .config  .esd_auth      .mozilla  .tcshrc   .Xauthority
.bash_history  .bashrc        .cshrc   .ICEauthority  .pki      .viminfo
[root@centos7 ~]#ls -aI "[^.]*"
.              .bash_logout   .cache   .dbus          .local    .ssh      .xauthi2dZgk
..             .bash_profile  .config  .esd_auth      .mozilla  .tcshrc   .Xauthority
.bash_history  .bashrc        .cshrc   .ICEauthority  .pki      .viminfo

2、创建和查看文件

查看文件状态

  • stat
  • 三个时间戳:
     atime:Access time,访问时间,读取文件内容
     mtime:Modify time,修改时间,改变文件内容
     ctime:Change time,改变时间,元数据发生改变
     数据分为两部分:元数据(metadata),数据(data)
      元数据是指数据本身所包含的属性信息,如:大小、权限、存储位置、历史记录、所有者等
      数据是指数据内容

    [root@centos7 ~]#stat /root
    File: ‘/root’
    Size: 4096        Blocks: 8          IO Block: 4096   directory
    Device: 802h/2050d  Inode: 100663361   Links: 18
    Access: (0550/dr-xr-x---)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:admin_home_t:s0
    Access: 2018-08-21 14:23:04.003029303 +0800
    Modify: 2018-08-21 14:22:29.834029914 +0800
    Change: 2018-08-21 14:22:29.834029914 +0800
    Birth: -

文件通配符

  • * 匹配零个或多个字符
  • ? 匹配任何单个字符
  • ~ 当前用户家目录,如:cd ~,切换到用户家目录
  • ~+ 当前工作目录
  • ~- 前一个工作目录
  • [0-9] 匹配数字范围
  • [a-z] 匹配小写字母
  • [A-Z] 匹配大写字母
  • [wang] 匹配列表中(wang)任何一个字符
  • [^wang] 匹配列表(wang)中的所有字符以外的字符
  • 预定义的字符类:
    查看man帮助:man 7 glob
    [:digit:]:任意数字,相当于0-9。
    因此[:digit:]需再加[]即[[:digit:]]才相当于[0-9],其他通配符与此类似
    [:lower:]:任意小写字母
    [:alnum:]:任意数字或字母
    [:blank:]:水平空白字符
    [:space:]:水平或垂直空白字符
    [:punct:]:标点符号
    [:print:]:可打印字符
    [:cntrl:]:控制(非打印)字符
    [:graph:]:图形字符
    [:xdigit:]:十六进制字符

练习:

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录  
/etc/l*[[:digit:]]*[[:lower:]]  
2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录  
/etc/[[:digit:]]*[^[:digit:]]  
3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录  
/etc/[^[:alpha:]][[:alpha:]]*  
4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
/etc/rc[0-6]*  
5、显示/etc目录下,所有以.d结尾的文件或目录  
/etc/*.d  
6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录  
/etc/[mnrp]*.conf  
7、只显示/root下的隐藏文件和目录  
/root/.*  
8、只显示/etc下的非隐藏目录  
/etc/[^.]*/  

创建空文件和刷新时间(更改文件时间戳)

  • touch命令
      当文件不存在时,创建新文件;当文件存在时,刷新该文件的访问时间
  • 用法:touch [OPTION]... FILE...
      -a 改变atime和ctime
      -m 改变mtime和ctime-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
      -c 如果文件不存在,则不创建文件。(刷新文件时间)

3、复制、转移和删除文件

复制文件和目录cp
用法:

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

cp常用选项

  • -a:复制文件所有属性,相当于-dR --preserv=all
  • -d:--no-dereference --preserv=links 不复制原文件,只复制链接名,该命令针对链接文件。
  • -i:覆盖前提示 -n:不覆盖,注意两者顺序
  • -r,-R:递归复制目录及内部的所有内容,针对于目录中存在目录或文件。
  • -p --preserv[=ATTR_LIST] 复制文件时,指定复制的属性(权限)
      mode: 权限
      ownership: 属主属组
      timestamp:
      links
      xattr
      context
      all
  • -v:--verbose复制时显示详细过程
  • -f:--force,强制复制
  • -u:只复制发生变化的文件,文件更新时使用
  • --backup=numbered 目标存在,覆盖前先备份,并且本分文件加数字后缀
    [root@centos7 data]#ls
    fstab
    [root@centos7 data]#cp --backup=numbered /etc/fstab fstab 
    cp: overwrite ‘fstab’? y
    [root@centos7 data]#ls
    fstab  fstab.~1~

练习:

1、定义别名命令baketc,每天将/etc/目录下所有文件,备份到/app独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见  
alias baketc="cp -av /etc/  /app/backup`date  +%F`"
2、创建/app/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限  
cp -a  /root/  /app/rootdir  
3、备份/root下所有内容(包括隐藏和非隐藏)到/data目录下  
cp -rf /root/  /data  

知识扩展:
给屏幕录像:
开始:script -t 2> time.log -a cmd.session
结束:exit
播放:scriptreplay time.log cmd.session

mv 移动和重命名文件

  • 命令用法:
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
  • 常用选项
     -i: 交互式
     -f: 强制

rm 删除

  • 命令用法:
    rm [OPTION]... FILE...
  • 常用选项:
     -i 交互式
     -f 强制删除
     -r 递归
     --no-preserve-root 删除根目录(/)

知识扩展:
1、rename 批量更改文件
touch f{1..10}.txt
rename 'txt' 'txt.bak' *.txt 把txt后缀批量修改为txt.bak
rename '.bak' '' *.bak 把.bak后缀删除

2、如何立即删除大文件。
当删除一个文件bigfile时,该文件正在被访问,使用rm删除该文件后,该文件占用的空间不会被立即释放,需要等待一段时间后才会释放空间。
解决方法:> bigfile 将bigfile文件内容清0
rm -f bigfile 再rm删除big文件

目录操作

  • tree(该命令需要安装软件包才能使用) 显示目录树
      -d: 只显示目录

示例:

[root@centos7 ~]#tree -d
.
├── bin
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── Templates
└── Videos

9 directories

  -L level:指定显示的层级数目

[root@centos7 data]#tree -L 2 /data
/data
├── dir1
│   └── dir2
├── f1
├── f2
├── fstab
└── fstab.~1~

2 directories, 4 files

  -P pattern: 只显示由指定pattern匹配到的路径

[root@centos7 data]#tree -P d /data    显示包含d字母的目录
/data
└── dir1
    └── dir2
        └── dir3

3 directories, 0 files
  • mkdir 创建目录
      -p: 存在于不报错,且可自动创建所需的各目录
      -v: 显示详细信息
      -m MODE: 创建目录时直接指定权限
  • rmdir 删除空目录
      -p: 递归删除父空目录
      -v: 显示详细信息
  • rm -r 递归删除目录树

练习:

(1) 如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b  
mkdir  -p  /testdir/dir1/{x,y}/{a,b}  
(2) 如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b  
mkdir  -p  /testdir/dir2/{x/{a,b},y}  
(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7  
mkdir  -p  /testdir/dir{3,4,5/dir{6,7}}  

索引节点

  • inode(index node)表中包含文件系统所有文件列表
  • 一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:
      文件类型,权限,UID,GID
      链接数(指向这个文件名路径名称个数)
      该文件的大小和不同的时间戳
      指向磁盘上文件的数据块指针
      有关文件的其他数据
    关于索引节点具体概念,可以查看该链接:http://www.cnblogs.com/adforce/p/3522433.html
  • inode表运行原理:
      inode表中存储内容:元数据、直接指针(ext系统结构有12个直接指针)、间接指针(双重间接指针、三重间接指针)
      inode表中的直接指针和间接指针指向数据块,每个直接指针指向一个数据块,每个数据块大小4K,那么直接指针能够寻找的数据块大小只有48K。
      当继续存储数据时,48K空间被占用完后,若想要继续存储数据,就需要使用到双重间接块指针,间接指针指向一个数据块,该数据块是一个指针块,不存储数据,被分割成若干小块,每个小块大小4个字节(byte),那么共有1024个小块。每个小块又将指针指向磁盘中存储数据的数据块,那么该数据块能够存储的数据大小为4k*1024=4M。
      当4M空间被占用完以后,若想要再存储数据,就要使用三重间接块指针,按照以上运行原理,可存储数据空间为4T。
  • 如何访问目录、文件:
      首先,查询目录、文件的节点编号
      然后根据节点编号找到inode表中对应的inode信息,
      最后,根据inode信息找到指针指向的数据块(block),该数据块指向存放该文件的磁盘路径。
  • ls -i 查看inode节点编号
      不同分区的节点编号一样
      不同分区节点编号即使一致,也不是同一个文件
      同一个分区中,节点编号一致,就是同一个文件

知识扩展:
复制文件时,提示no space left on device,这是什么原因
答案:节点编号inode被用完

cp、rm、mv和inode运行原理
cp和inode

  • CP 命令:
      分配一个空闲的inode号,在inode表中生成新条目
      在目录中创建一个目录项,将名称与inode编号关联
      拷贝数据生成新的文件

rm和inode

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

mv和inode

  • 如果mv命令的目标和源在相同的文件系统,作为mv 命令
     用新的文件名创建对应新的目录项
      删除旧目录条目对应的旧的文件名
     不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
  • 如果目标和源在一个不同的文件系统, mv相当于cp和rm

4、软和硬链接

硬链接

  • 创建硬链接会增加额外的记录项以引用文件
  • 对应于同一文件系统上一个物理文件
  • 每个目录引用相同的inode号
  • 创建时链接数递增
  • 删除文件时:
      rm命令递减计数的链接
      文件要存在,至少有一个链接数
      当链接数为零时,该文件被删除
  • 不能跨越驱动器或分区
  • 语法:
     ln filename [linkname ]

软链接

  • 一个符号链接指向另一个文件
  • ls - l的 显示链接的名称和引用的文件
  • 一个符号链接的内容是它引用文件的名称
  • 可以对目录进行
  • 可以跨分区
  • 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
  • 语法:
      ln -s filename [linkname]

硬链接和软链接的区别:
1、文件:硬链接指的是同一个文件,是给文件起了一个新名,节点编号一致;软链接不是同一个文件(算是一个新文件),是给文件增加一个快捷方式(或起个别名),节点编号不一致。
2、分区:硬链接不可以跨分区(设备),软链接可以跨分区、设备甚至是网络
3、依赖关系:硬链接和原始文件之间的关系是平等关系,硬链接被删除,只要不是删除的最后一个硬链接,源文件不受影响,只是链接数-1;而软链接是依赖源文件而存在的,源文件被删除,软链接不可用
4、链接数:创建硬链接,链接数+1;创建软链接,链接数不变
5、目录:针对目录,软链接可以创建目录的软链接;硬链接不能,是为了防止硬链接死循环嵌套

确定文件内容

  • 文件可以包含多种类型的数据
  • 检查文件的类型,然后确定适当的打开命令或应用程序使用
  • 语法:file [options] ...
  • 常用选项:
      -b 列出文件辨识结果时,不显示文件名称
      -f filelist 列出文件filelist中文件名的文件类型
      -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
      -L 查看对应软链接对应文件的文件类型
      --help 显示命令在线帮助
标签: 文件管理
最后更新:2023年6月15日

袁党生

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2023 linux学习. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备18039507号-1