Shell

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

2019-01-09  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读