Linux开发环境及应用·第三周·文件名和文件通配符

本文整理了有关文件名和文件通配符的笔记

文件和目录的命名规则

文件名的长度:一般在1~255个字符,有些Unix不支持长文件名,但至少支持到14个字符

文件名合法名称:

  • 斜线/留做路径名分割符,不可使用,其它都可使用
  • 因为字节0是字符串的结束符,理所当然地不能出现在文件名,要是出现了,就截断了文件名了

在Linux下,文件名是大小写敏感的,即test.txtText.Txt是不同的文件,为了便于Windows与Linux之间的迁移,最好不要依靠文件名字母大小写来区分不同的文件

系统目录

/etc

/etc目录下主要存放了供系统维护管理用的命令和配置文件(功能类似Windows的注册表),如:

  • passwd文件保存了用户的密码hash值、HOME目录路径等信息
  • hosts文件
  • 一系列的*.conf文件
  • ssh,apt等目录
  • 系统启动阶段系统初始化和启动各服务的脚本rc*.d
  • profile/bash.bashrc 系统级的bash等shell偏好设置
  • 自定义的需要自启动的服务脚本rc.local

/tmp

/tmp是用来存放临时文件的目录,通常系统关机时,该目录的文件会被清除。

每个用户都可以在这里临时创建文件,但只能删除自己的文件,不可以删除其他用户创建的文件

/var

/var目录存放了系统运行时要改变的数据,系统日志等

可运行程序

可运行程序一般存放在以下几个目录:

  • /bin 系统常用命令,如ls、ln、cp、cat等
  • /usr/bin 存放常用命令,如ssh、ftp、make、gcc等
  • /sbin,/usr/sbin 系统管理员专用命令

/dev

/dev目录下都是一些设备文件,如终端设备,打印机等

头文件和库文件

/usr/include目录下是一些C语言头文件(usr是Unix System Resource的缩写)

/lib,/usr/lib下的文件主要是各种库文件,C语言的链接库文件,以及terminfo终端库等。

  • 静态链接库.a文件(a是archive的缩写,译为“存档”)
  • 动态链接库.so文件(shared objects:“共享目标代码”,多个.o文件集成)

gcc编译器通过-static选项来使用静态链接,静态链接的程序一般要比动态链接的程序要大得多


文件通配符规则

  • 星号*:匹配任意长度的文件名字符串(包括空字符串
    注意
    • 点字符.,当它作为文件名或路径名分量的第一个字符时,必须显式匹配,如:*file不匹配.profile.*file才匹配.profile
    • 斜线/也要显式匹配
  • 问号?:匹配任一单字符
  • 方括号[]:匹配括号内任一字符,也可用减号-指定一个范围,如:[A-Z]**.[ch]
  • 波浪线~
    :当前用户的主目录(HOME目录)
    ~lee:用户lee的主目录(HOME目录)

注意.是当前目录,..是上级目录,这两个是真实存在的文件,不是通配符处理程序解释出来的;不同shell的通配符会略有差别;


文件通配符处理过程

文件通配符的处理由shell完成,分三步:

  1. 在shell提示符下,从键盘输入命令,被shell接受
  2. shell对所键入的内容作若干加工处理,其中含有对文件通配符的展开工作,生成结果命令
  3. 执行生成的结果命令

例如:

  • 手工键入vi m*e,实际上执行了vi makefile
  • 手工键入ls *.txt,实际上执行了ls 1.txt 2.txt 3.txt

注意:Windows由命令自身处理通配符(也就是cmd不处理),而Linux由shell处理