美文网首页Shell
Bash编程017——文件类型与格式

Bash编程017——文件类型与格式

作者: 若梦儿 | 来源:发表于2019-01-09 16:37 被阅读3次

    Bash编程017——文件类型与格式

    17.1 文件

    计算机能在多种不同的物理介质上存储信息,为了方便地使用计算机系统,操作系统一般提供了信息存储的统一逻辑接口。操作系统对存储设备的各种属性加以抽象,从而定义了逻辑存储单元(文件)。文件是记录在外存上的关联信息的集合。

    17.2 文件类型

    在Linux文件系统中通常有多种文件类型,最常见的是普通文件和目录。除此之外,还有另外五种不同类型的文件。

    我们可以使用ls -l命令来查看文件类型。

    7种文件类型分别为:

    1. -:普通类型
    2. d:目录
    3. c:字符设备文件
    4. b:块设备文件
    5. s:本地套接字文件
    6. p:命名管道
    7. l:链接文件
    # 示例
    ls -l ~
    # 输出如下:
    总用量 64
    drwxrwxr-x 2 ruo ruo 4096 1月   6 19:50 bin
    drwxrwxr-x 4 ruo ruo 4096 1月   4 17:46 Codes
    drwxr-xr-x 3 ruo ruo 4096 1月   9 16:00 Desktop
    drwxr-xr-x 2 ruo ruo 4096 12月  9 11:09 Documents
    drwxr-xr-x 4 ruo ruo 4096 12月 21 23:14 Downloads
    -rw-rw-r-- 1 ruo ruo  151 12月 27 09:29 fault.c
    drwxr-xr-x 2 ruo ruo 4096 12月  9 11:09 Music
    drwxr-xr-x 2 ruo ruo 4096 12月  9 11:09 Pictures
    -rw-rw-r-- 1 ruo ruo 9223 1月   4 18:07 ps.txt
    drwxr-xr-x 2 ruo ruo 4096 12月  9 11:09 Public
    drwxr-xr-x 3 ruo ruo 4096 12月 22 21:58 snap
    drwxr-xr-x 2 ruo ruo 4096 12月  9 11:09 Templates
    drwxrwxr-x 2 ruo ruo 4096 1月   6 19:59 Test
    drwxr-xr-x 2 ruo ruo 4096 12月  9 11:09 Videos
    

    在上述长格式的输出下,每个文件的第一个字母表示了文件类型。可以看出,这里有普通文件和目录文件。

    # 查看别的类型
    ls -l /dev
    # 输出:
    总用量 0
    crw-------  1 root root     10, 175 1月   9 15:50 agpgart
    crw-r--r--  1 root root     10, 235 1月   9 15:50 autofs
    drwxr-xr-x  2 root root         300 1月   9 15:50 block
    drwxr-xr-x  2 root root          80 1月   9 15:50 bsg
    crw-------  1 root root     10, 234 1月   9 15:50 btrfs-control
    drwxr-xr-x  3 root root          60 1月   9 15:50 bus
    lrwxrwxrwx  1 root root           3 1月   9 15:50 cdrom -> sr0
    lrwxrwxrwx  1 root root           3 1月   9 15:50 cdrw -> sr0
    drwxr-xr-x  2 root root        3560 1月   9 15:50 char
    crw-------  1 root root      5,   1 1月   9 15:50 console
    lrwxrwxrwx  1 root root          11 1月   9 15:50 core -> /proc/kcore
    crw-------  1 root root     10,  59 1月   9 15:50 cpu_dma_latency
    crw-------  1 root root     10, 203 1月   9 15:50 cuse
    drwxr-xr-x  7 root root         140 1月   9 15:50 disk
    crw-rw----+ 1 root audio    14,   9 1月   9 15:50 dmmidi
    drwxr-xr-x  2 root root          80 1月   9 15:50 dri
    lrwxrwxrwx  1 root root           3 1月   9 15:50 dvd -> sr0
    crw-------  1 root root     10,  61 1月   9 15:50 ecryptfs
    crw-rw----  1 root video    29,   0 1月   9 15:50 fb0
    lrwxrwxrwx  1 root root          13 1月   9 15:50 fd -> /proc/self/fd
    crw-rw-rw-  1 root root      1,   7 1月   9 15:50 full
    crw-rw-rw-  1 root root     10, 229 1月   9 15:50 fuse
    crw-------  1 root root    244,   0 1月   9 15:50 hidraw0
    crw-------  1 root root     10, 228 1月   9 15:50 hpet
    drwxr-xr-x  2 root root           0 1月   9 15:50 hugepages
    crw-------  1 root root     10, 183 1月   9 15:50 hwrng
    lrwxrwxrwx  1 root root          25 1月   9 15:50 initctl -> /run/systemd/initctl/fifo
    drwxr-xr-x  4 root root         260 1月   9 15:50 input
    crw-r--r--  1 root root      1,  11 1月   9 15:50 kmsg
    drwxr-xr-x  2 root root          60 1月   9 15:50 lightnvm
    lrwxrwxrwx  1 root root          28 1月   9 15:50 log -> /run/systemd/journal/dev-log
    brw-rw----  1 root disk      7,   0 1月   9 15:50 loop0
    brw-rw----  1 root disk      7,   1 1月   9 15:50 loop1
    brw-rw----  1 root disk      7,   2 1月   9 15:51 loop2
    brw-rw----  1 root disk      7,   3 1月   9 15:50 loop3
    brw-rw----  1 root disk      7,   4 1月   9 15:51 loop4
    brw-rw----  1 root disk      7,   5 1月   9 15:50 loop5
    brw-rw----  1 root disk      7,   6 1月   9 15:50 loop6
    brw-rw----  1 root disk      7,   7 1月   9 15:50 loop7
    crw-rw----  1 root disk     10, 237 1月   9 15:50 loop-control
    drwxr-xr-x  2 root root          60 1月   9 15:50 mapper
    crw-------  1 root root     10, 227 1月   9 15:50 mcelog
    crw-r-----  1 root kmem      1,   1 1月   9 15:50 mem
    crw-------  1 root root     10,  56 1月   9 15:50 memory_bandwidth
    crw-rw----+ 1 root audio    14,   2 1月   9 15:50 midi
    drwxrwxrwt  2 root root          40 1月   9 15:50 mqueue
    drwxr-xr-x  2 root root          60 1月   9 15:50 net
    crw-------  1 root root     10,  58 1月   9 15:50 network_latency
    crw-------  1 root root     10,  57 1月   9 15:50 network_throughput
    crw-rw-rw-  1 root root      1,   3 1月   9 15:50 null
    crw-r-----  1 root kmem      1,   4 1月   9 15:50 port
    crw-------  1 root root    108,   0 1月   9 15:50 ppp
    crw-------  1 root root     10,   1 1月   9 15:50 psaux
    crw-rw-rw-  1 root tty       5,   2 1月   9 16:21 ptmx
    drwxr-xr-x  2 root root           0 1月   9 15:50 pts
    crw-rw-rw-  1 root root      1,   8 1月   9 15:50 random
    crw-rw-r--+ 1 root netdev   10,  62 1月   9 15:50 rfkill
    lrwxrwxrwx  1 root root           4 1月   9 15:50 rtc -> rtc0
    crw-------  1 root root    249,   0 1月   9 15:50 rtc0
    brw-rw----  1 root disk      8,   0 1月   9 15:50 sda
    brw-rw----  1 root disk      8,   1 1月   9 15:50 sda1
    brw-rw----  1 root disk      8,   2 1月   9 15:50 sda2
    brw-rw----  1 root disk      8,   3 1月   9 15:50 sda3
    crw-rw----  1 root disk     21,   0 1月   9 15:50 sg0
    crw-rw----+ 1 root cdrom    21,   1 1月   9 15:50 sg1
    drwxrwxrwt  2 root root         240 1月   9 15:51 shm
    crw-------  1 root root     10, 231 1月   9 15:50 snapshot
    drwxr-xr-x  3 root root         200 1月   9 15:50 snd
    brw-rw----+ 1 root cdrom    11,   0 1月   9 15:50 sr0
    lrwxrwxrwx  1 root root          15 1月   9 15:50 stderr -> /proc/self/fd/2
    lrwxrwxrwx  1 root root          15 1月   9 15:50 stdin -> /proc/self/fd/0
    lrwxrwxrwx  1 root root          15 1月   9 15:50 stdout -> /proc/self/fd/1
    crw-rw-rw-  1 root tty       5,   0 1月   9 15:57 tty
    crw--w----  1 root tty       4,   0 1月   9 15:50 tty0
    crw--w----  1 root tty       4,   1 1月   9 15:50 tty1
    crw--w----  1 root tty       4,  10 1月   9 15:50 tty10
    crw--w----  1 root tty       4,  11 1月   9 15:50 tty11
    crw--w----  1 root tty       4,  12 1月   9 15:50 tty12
    crw--w----  1 root tty       4,  13 1月   9 15:50 tty13
    crw--w----  1 root tty       4,  14 1月   9 15:50 tty14
    crw--w----  1 root tty       4,  15 1月   9 15:50 tty15
    crw--w----  1 root tty       4,  16 1月   9 15:50 tty16
    crw--w----  1 root tty       4,  17 1月   9 15:50 tty17
    crw--w----  1 root tty       4,  18 1月   9 15:50 tty18
    crw--w----  1 root tty       4,  19 1月   9 15:50 tty19
    crw--w----  1 ruo  tty       4,   2 1月   9 15:50 tty2
    crw--w----  1 root tty       4,  20 1月   9 15:50 tty20
    crw--w----  1 root tty       4,  21 1月   9 15:50 tty21
    crw--w----  1 root tty       4,  22 1月   9 15:50 tty22
    crw--w----  1 root tty       4,  23 1月   9 15:50 tty23
    crw--w----  1 root tty       4,  24 1月   9 15:50 tty24
    crw--w----  1 root tty       4,  25 1月   9 15:50 tty25
    crw--w----  1 root tty       4,  26 1月   9 15:50 tty26
    crw--w----  1 root tty       4,  27 1月   9 15:50 tty27
    crw--w----  1 root tty       4,  28 1月   9 15:50 tty28
    crw--w----  1 root tty       4,  29 1月   9 15:50 tty29
    crw--w----  1 root tty       4,   3 1月   9 15:50 tty3
    crw--w----  1 root tty       4,  30 1月   9 15:50 tty30
    crw--w----  1 root tty       4,  31 1月   9 15:50 tty31
    crw--w----  1 root tty       4,  32 1月   9 15:50 tty32
    crw--w----  1 root tty       4,  33 1月   9 15:50 tty33
    crw--w----  1 root tty       4,  34 1月   9 15:50 tty34
    crw--w----  1 root tty       4,  35 1月   9 15:50 tty35
    crw--w----  1 root tty       4,  36 1月   9 15:50 tty36
    crw--w----  1 root tty       4,  37 1月   9 15:50 tty37
    crw--w----  1 root tty       4,  38 1月   9 15:50 tty38
    crw--w----  1 root tty       4,  39 1月   9 15:50 tty39
    crw--w----  1 root tty       4,   4 1月   9 15:50 tty4
    crw--w----  1 root tty       4,  40 1月   9 15:50 tty40
    crw--w----  1 root tty       4,  41 1月   9 15:50 tty41
    crw--w----  1 root tty       4,  42 1月   9 15:50 tty42
    crw--w----  1 root tty       4,  43 1月   9 15:50 tty43
    crw--w----  1 root tty       4,  44 1月   9 15:50 tty44
    crw--w----  1 root tty       4,  45 1月   9 15:50 tty45
    crw--w----  1 root tty       4,  46 1月   9 15:50 tty46
    crw--w----  1 root tty       4,  47 1月   9 15:50 tty47
    crw--w----  1 root tty       4,  48 1月   9 15:50 tty48
    crw--w----  1 root tty       4,  49 1月   9 15:50 tty49
    crw--w----  1 root tty       4,   5 1月   9 15:50 tty5
    crw--w----  1 root tty       4,  50 1月   9 15:50 tty50
    crw--w----  1 root tty       4,  51 1月   9 15:50 tty51
    crw--w----  1 root tty       4,  52 1月   9 15:50 tty52
    crw--w----  1 root tty       4,  53 1月   9 15:50 tty53
    crw--w----  1 root tty       4,  54 1月   9 15:50 tty54
    crw--w----  1 root tty       4,  55 1月   9 15:50 tty55
    crw--w----  1 root tty       4,  56 1月   9 15:50 tty56
    crw--w----  1 root tty       4,  57 1月   9 15:50 tty57
    crw--w----  1 root tty       4,  58 1月   9 15:50 tty58
    crw--w----  1 root tty       4,  59 1月   9 15:50 tty59
    crw--w----  1 root tty       4,   6 1月   9 15:50 tty6
    crw--w----  1 root tty       4,  60 1月   9 15:50 tty60
    crw--w----  1 root tty       4,  61 1月   9 15:50 tty61
    crw--w----  1 root tty       4,  62 1月   9 15:50 tty62
    crw--w----  1 root tty       4,  63 1月   9 15:50 tty63
    crw--w----  1 gdm  tty       4,   7 1月   9 15:50 tty7
    crw--w----  1 root tty       4,   8 1月   9 15:50 tty8
    crw--w----  1 root tty       4,   9 1月   9 15:50 tty9
    crw-------  1 root root      5,   3 1月   9 15:50 ttyprintk
    crw-rw----  1 root dialout   4,  64 1月   9 15:50 ttyS0
    crw-rw----  1 root dialout   4,  65 1月   9 15:50 ttyS1
    crw-rw----  1 root dialout   4,  74 1月   9 15:50 ttyS10
    crw-rw----  1 root dialout   4,  75 1月   9 15:50 ttyS11
    crw-rw----  1 root dialout   4,  76 1月   9 15:50 ttyS12
    crw-rw----  1 root dialout   4,  77 1月   9 15:50 ttyS13
    crw-rw----  1 root dialout   4,  78 1月   9 15:50 ttyS14
    crw-rw----  1 root dialout   4,  79 1月   9 15:50 ttyS15
    crw-rw----  1 root dialout   4,  80 1月   9 15:50 ttyS16
    crw-rw----  1 root dialout   4,  81 1月   9 15:50 ttyS17
    crw-rw----  1 root dialout   4,  82 1月   9 15:50 ttyS18
    crw-rw----  1 root dialout   4,  83 1月   9 15:50 ttyS19
    crw-rw----  1 root dialout   4,  66 1月   9 15:50 ttyS2
    crw-rw----  1 root dialout   4,  84 1月   9 15:50 ttyS20
    crw-rw----  1 root dialout   4,  85 1月   9 15:50 ttyS21
    crw-rw----  1 root dialout   4,  86 1月   9 15:50 ttyS22
    crw-rw----  1 root dialout   4,  87 1月   9 15:50 ttyS23
    crw-rw----  1 root dialout   4,  88 1月   9 15:50 ttyS24
    crw-rw----  1 root dialout   4,  89 1月   9 15:50 ttyS25
    crw-rw----  1 root dialout   4,  90 1月   9 15:50 ttyS26
    crw-rw----  1 root dialout   4,  91 1月   9 15:50 ttyS27
    crw-rw----  1 root dialout   4,  92 1月   9 15:50 ttyS28
    crw-rw----  1 root dialout   4,  93 1月   9 15:50 ttyS29
    crw-rw----  1 root dialout   4,  67 1月   9 15:50 ttyS3
    crw-rw----  1 root dialout   4,  94 1月   9 15:50 ttyS30
    crw-rw----  1 root dialout   4,  95 1月   9 15:50 ttyS31
    crw-rw----  1 root dialout   4,  68 1月   9 15:50 ttyS4
    crw-rw----  1 root dialout   4,  69 1月   9 15:50 ttyS5
    crw-rw----  1 root dialout   4,  70 1月   9 15:50 ttyS6
    crw-rw----  1 root dialout   4,  71 1月   9 15:50 ttyS7
    crw-rw----  1 root dialout   4,  72 1月   9 15:50 ttyS8
    crw-rw----  1 root dialout   4,  73 1月   9 15:50 ttyS9
    crw-------  1 root root     10, 239 1月   9 15:50 uhid
    crw-------  1 root root     10, 223 1月   9 15:50 uinput
    crw-rw-rw-  1 root root      1,   9 1月   9 15:50 urandom
    crw-------  1 root root     10, 240 1月   9 15:50 userio
    crw-rw----  1 root tty       7,   0 1月   9 15:50 vcs
    crw-rw----  1 root tty       7,   1 1月   9 15:50 vcs1
    crw-rw----  1 root tty       7,   2 1月   9 15:50 vcs2
    crw-rw----  1 root tty       7,   3 1月   9 15:50 vcs3
    crw-rw----  1 root tty       7,   4 1月   9 15:50 vcs4
    crw-rw----  1 root tty       7,   5 1月   9 15:50 vcs5
    crw-rw----  1 root tty       7,   6 1月   9 15:50 vcs6
    crw-rw----  1 root tty       7, 128 1月   9 15:50 vcsa
    crw-rw----  1 root tty       7, 129 1月   9 15:50 vcsa1
    crw-rw----  1 root tty       7, 130 1月   9 15:50 vcsa2
    crw-rw----  1 root tty       7, 131 1月   9 15:50 vcsa3
    crw-rw----  1 root tty       7, 132 1月   9 15:50 vcsa4
    crw-rw----  1 root tty       7, 133 1月   9 15:50 vcsa5
    crw-rw----  1 root tty       7, 134 1月   9 15:50 vcsa6
    drwxr-xr-x  2 root root          60 1月   9 15:50 vfio
    crw-------  1 root root     10,  63 1月   9 15:50 vga_arbiter
    crw-------  1 root root     10, 137 1月   9 15:50 vhci
    crw-------  1 root root     10, 238 1月   9 15:50 vhost-net
    crw-------  1 root root     10, 241 1月   9 15:50 vhost-vsock
    crw-------  1 root root     10,  55 1月   9 15:50 vmci
    crw-rw-rw-  1 root root     10,  54 1月   9 15:50 vsock
    crw-rw-rw-  1 root root      1,   5 1月   9 15:50 zero
    

    从上述输出中可以看出有,块设备文件,字符设备文件,链接文件。

    17.3 文件格式

    在Windows系统中,采用文件扩展名来标识文件格式,比如1.txt,2.exe,3.doc,4.mp3等。这里的.txt,.exe,.doc,.mp3就是文件扩展名,通常Windows系统会根据文件扩展名选择相应的应用程序处理文件。

    而在Linux系统中,并不依据文件扩展名来区分文件格式。实际上,Linux系统中的文件后缀名通常是帮助用户区分不同格式的文件。一个文件具体为什么格式跟其扩展名没有任何关系。可以使用file命令查看文件格式。

    file命令的详细使用方法,请参阅man file。

    # 首先下载一个压缩文件
    wget https://mirrors.tuna.tsinghua.edu.cn/gnu/bc/bc-1.07.tar.gz
    file bc-1.07.tar.gz
    # 输出如下:
    bc-1.07.tar.gz: gzip compressed data, last modified: Mon Mar 27 01:00:49 2017, max compression, from Unix
    
    # 修改文件后缀,类型无变化
    cp bc-1.07.tar.gz bc
    file bc
    bc: gzip compressed data, last modified: Mon Mar 27 01:00:49 2017, max compression, from Unix
    

    相关文章

      网友评论

        本文标题:Bash编程017——文件类型与格式

        本文链接:https://www.haomeiwen.com/subject/gwygrqtx.html