您的位置:首页 > 运维架构 > Linux

[一天几个linux命令] 文件种类与扩展名

2017-05-29 17:58 330 查看

文件种类

我们在基础篇一直强调一个概念,那就是:任何设备在Linux下面都是文件,不仅如此,连数据通信的接口也有专门的文件负责。所以,你会了解到,Linux的文件种类真的很多,除了前面提到的一般文件(-)与目录文件(d)之外,还有哪些种类的文件呢?

我们在刚刚提到使用”ls -l”查看到第一列那10个字符串中,第一个字符为文件的类型。除了常见的一般文件(-)与目录文件(d)之外,还有哪些种类的文件类型呢?

普通文件(regular file)

就是一般我们在进行访问的类型的文件,在由ls -al所显示出来的属性方面,第一个字符为[-],例如[-rwxrwxrwx]。另外,依照文件的内容,又大略可以分为:

纯文本文件(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本文件是因为内容为我们可以直接读到的数据,例如数字、字母等。几乎只要我们可以用来作为设置的文件都属于这一种文件类型 。举例来说,你可以执行“cat ~/.bashrc”就可以看到该文件的内容

二进制文件(binary):我们的系统其实仅认识且可以执行二进制文件(binary file)。你的Linux当中的可执行文件(scripts, 文字批处理文件不算)就是和中格式的。举例来说,刚刚执行的命令cat就是一个binary file。

数据格式文件(data):有些程序在运行的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件(data file)。举例来说,我们的Linux在用户登陆时,都会将登陆的数据记录在/var/log/wtmp那个文件内,该文件是一个data file,它能够通过last这个命令读出来。但是使用cat时,会读出乱码,因为它属于一种特殊格式的文件。

目录(directory)

第一个属性为[d],例如[drwxrwxrwx]

连接文件(link)

就是类似windows系统下面的快捷方式,每一个属性为[l],例如[lrwxrwxrwx]

设备与设备文件(device)

与系统外设及存储等相关的一些文件,通常都集中在/dev这个目录。通常又分为两种

块(block)设备文件:就是一些存储数据,以提供系统随机访问的接口设备,例如硬盘、软盘。你可以随机地在硬盘的不同块读写,这种设备就是成组设备,你可以自行查一下/dev/sda看看,会发现第一个属性为

[b]字符(character)设备文件
:也即是一些串行端吕的接口设备,例如键盘,鼠标等。这些设备的特征就是”一次性读取”的,不能够截断输出。举例来说,你不可能让鼠标“跳到”另一个界面,而是“滑动”到另一个地主。其第一个属性为[c]。

套接字(sockets)

既然被称为数据接口文件,这种类型的文件通常被用在网络上的数据连接。我们可以启动一个程序来监听客户端的请求,而客户端就可以通过这个socket来进行数据通信了。其第一个属性为[s],通常在/var/run这个目录中可以看到这种文件类型

管道(FIFO, pipe)

FIFO也是一种特殊的文件类型,它主要的目的在解决多个程序同时访问一个文件所造成的错误问题。FIFO是first-in-first-out的缩写。第一个属性为[p]

文件种类总结

除了设备文件是我们系统中很重要的文件,最好不要随意修改之外(通常它也不会让你修改的),另一个比较有趣的文件就是连接文件。如果你常常将应用程序放到桌面来的话,你就应该知道在Windows下面的所谓的“快捷方式”。同样,你可以将linux下的连接文件简单地视为一个文件或目录的快捷方式。至于socket与FIFO文件比较难理解,因为这两个东西与进程(process)比较有关系,这个等到将来你了解process这后再回来查阅。此外你也可以通过man fifo 及 man socket 来查阅系统上的说明。

Linux文件扩展名

基本上Linux的文件是没有所谓的“扩展名”,我们刚刚就谈过,一个Linux文件能不能被执行,与它的第一列的10个属性有关,与文件名根本一点关系也没有。这个观念跟Windows的情况不相同。在Windows下面,能被执行的文件扩展名通常是.com, .exe, .bat等,而在Linux下面,只要你的权限当中具有x的话,例如[-rwxr-xr-x]即代表这个文件可以被执行

不过可以被执行
bec3
跟可以执行成功是不一样的。举例来说,在root主文件夹下的install.log是一个纯文本文件,如要经由修改权限成为-rwxrwxrwxr后,这个文件能够真的执行成功吗?当然不行,因为它的内容根本就没有可以执行的数据。所以说这个x代表这个文件具有可执行的能力,但是能不能执行成功,当然就得要看该文件的内容。

虽然如此,不过我们仍然希望可以由扩展名来了解该文件是什么东西,所以通常我们还是会以适当的扩展名来表示该文件是什么种类。

下面数种常用的扩展名

*.sh
:脚本或批处理文件(scripts),因为批处理文件是使用shell写成的,所以扩展名就编成.sh

*.Z, *.tar, *tar.gz, *.zip, *.tgz
:经过打包的压缩文件。这是因为压缩软件分别为gunzip, tar等的,由于不同的压缩软伯,而取其相关的扩展名

*.html, *.php
:网页相关文件,分别代表HTML 语法 与PHP语法的网页文件

基本上Linux系统中的文件名真的只是让你了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行。例如虽然有一个文件为可执行文件,如常见的/bin/ls这个显示文件属性的命令,不过如果这个文件的权限被修改成无法执行时,那么ls就变成不能执行了。

上述的这种问题最容易发生在文件传递的过程中。例如你在网络上下载一个可执行文件,但是偏偏在你的Linux系统中就是无法执行。那么就是可能文件的属性被改变了。不要怀疑,从网络上传送到你的Linux系统中,文件的属性与权限确实是会被改变的

Linux文件长度限制

在Linux下面,使用默认的Ext2/Ext3文件系统时,针对文件的文件名长度限制为:

单一文件或目录的最大允许文件名为255个字符

包含完整路径名称及目录(/)的完整文件名为4096个字符

可以通过[Tab]按键来确认文件的文件名

Linux文件名的限制

由于Linux在文字界面下的一些命令操作关系,一般来说,你在设置Linux下面的文件名时,最好可以避免一些特殊字符。例如下面这些:

* ? > < ; & ! [ ] | \ ' " ( ) {}


因为这些符号在命令行界面下是有特殊含义的。文件名的开头为小数点”.”时,代表这个文件为隐藏文件。同时由于命令执行当中, 常常会使用到 -option之类的参数,所以你最好也避免将文件名的开头以- 或 + 来命名

参考文献

本文基本摘自《鸟哥的私房菜-基础学习篇》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: