Linux开发环境及应用·第三周·文件名和文件通配符
本文整理了有关文件名和文件通配符的笔记
文件和目录的命名规则
文件名的长度:一般在1~255个字符,有些Unix不支持长文件名,但至少支持到14个字符
文件名合法名称:
- 斜线
/
留做路径名分割符,不可使用,其它都可使用 - 因为字节0是字符串的结束符,理所当然地不能出现在文件名,要是出现了,就截断了文件名了
在Linux下,文件名是大小写敏感的,即test.txt
和Text.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完成,分三步:
- 在shell提示符下,从键盘输入命令,被shell接受
- shell对所键入的内容作若干加工处理,其中含有对文件通配符的展开工作,生成结果命令
- 执行生成的结果命令
例如:
- 手工键入
vi m*e
,实际上执行了vi makefile
- 手工键入
ls *.txt
,实际上执行了ls 1.txt 2.txt 3.txt
注意:Windows由命令自身处理通配符(也就是cmd不处理),而Linux由shell处理