Linux 基础教程 02-基本概念

一切都是文件

在Linux系统中,一切都是文件。如文本文档、OpenOffice文档、图片、MP3和视频等都是文件,这点和Windows是一样的。
  但是目录呢?它也是一种文件,只不过是一种特殊的文件,其中包含其他文件的信息。磁盘算是真正的大文件。网络连接也是文件,甚至运行中的进程也是文件,这些都是属于文件范畴。
  对于Linux来说,文件只是bit和字节流。Linux并不关心这些二进制和字节最终组成了什么格式,相反,在Linux上运行的程序才关心它们组成的格式。对于Linux而言,文本文档和网络连接都是文件,而文本编辑器知道如何使用文本文档,Internet应用程序则可以识别网络连接,所以在Linux,需要我们根据上下文将“文件”理解为“文件、目录、子目录以及系统中其他所有东西”

文件名最大长度

Linux和Unix文件名允许的最大长度为255个字符。在实际应用中,建议将文件名的长度控制在80以内比较好,因为大部分的终端都是这个宽度,文件名能在一行显示完,不用换行。

文件名区分大小写

与Windows和Mac OS不一样的是在Linux中,文件名是区分大小写的。对Linux而言,同一目录可以允许同时存在以下的3个文件:

  • foldertest
  • FolderTest
  • folderTest

对于Linux文件系统而言,它们是3个完全不同的文件(这一点与Windows区别还是很明显的)。区分大小写也就意味着必须准确输入命令和文件名。例如:如果要使用命令rm删除文件,就不能使用RM/rM/Rm

文件命名的限制

在各个不同的系统中,对于文件或目录的命令都会存在一些限制和禁止使用的字符。如在Mac OS中不允许使用,在Windows中不能使用**等等。在Linux中可以安全使用的字符如下所示:

数字、字母、圆点、下划线

其他的字符虽然也可以使用,但却代表一些特定的含义,因为Shell对它们的解释方法可能各不相同,而有一些则根本不能使用。
  /字符就禁止使用,因为在Linux中它是用来分隔目录和文件的特殊字符。如果文件名包含/为folder/Test,则代表在目录folder中存在文件Test,而实际上并不存在这个目录和文件。
空格虽然不禁止使用,但建议不要在文件名包含空格。因为在Shell中,通常将空格做为参数之间的分隔符,使用空格会让Shell解释时产生误解。如使用命令删除folder Test:

rm folder Test

Shell会理解为先删除文件folder再删除文件Test。那么如何处理文件名的中空格,甚至?、*、'、"呢?虽然在Shell命令可以使用转义符**、""和'',但还是建议避免使用。下面就列举一些在文件名中如何使用特殊字符:

字符 建议
/ 禁止使用,也不能被转义
\ 必须转义,避免使用
- 不能做为文件名或目录名的开始
[] 必须转义,避免使用
{} 必须转义,避免使用
* 必须转义,避免使用
? 必须转义,避免使用
' 必须转义,避免使用
" 必须转义,避免使用

通配符及其含义

在Linux中常见的通配符有三个*、?、[ ],含义分别如下:

参数 含义
* 匹配0个或多个任意字符
? 匹配单个字符
[ ] 匹配一组单个字符

假设计算机中某一目录下面有如下所示的文件
file1.jpg
file2.jpg
file3.jpg
file4.jpb
file5.jpg
file.log
现在想使用rm命令删除文件,使用通配符的示例如下:

命令 匹配
rm file*.jpg 删除所有file1-5.jpg文件,但不包含log文件
rm *log 删除file.log,但不会删除jpg文件
rm * 删除目录中所有文件
rm fil?1.jpg 删除file1.jpg文件
rm file?.jpg 删除所有file1-5.jpg文件,但不包含log文件
rm file[12].jpg 删除file1.jpg和file2.jpg
rm file[1-4].jpg 删除file1/fiel2/file3/file4.jpg文件

你可能感兴趣的:(Linux 基础教程 02-基本概念)