第1章 基本概念
所属:第一部分 shell入门 来源:Linux命令速查手册
真正深入学习bash shell之前,首先需要搞清楚一些概念,这有助于继续本书的学习。这些概念绝对是你必须知道的,而且有些概念并不显而易见。
1.1 一切都是文件
在Linux系统中,一切都是文件:
- 文本文档、OpenOffice.org文档是文件
- 图片、MP3和视频都是文件
- 目录也是一种特殊的文件,包含其他文件的信息
- 磁盘驱动器是真正的大文件
- 网络连接也是文件
- 运行中的进程都是文件
对于Linux来说,文件只是比特和字节流。Linux并不关心这些二进制位和字节最终组成了什么格式;相反,在Linux上运行的程序才关心它们组成的格式。
本书随处都会提到”文件”,可以根据上下文理解为”文件、目录、子目录以及系统中的其他所有东西”。很多命令对文档和目录都一样有效。
1.2 文件名的最大长度
Linux(和Unix)文件名最多可以长达 255个字符。
建议:将文件名长度控制在 80个字符以内,因为大部分显示终端都是这个宽度,文件名能在一行显示完,不用换行。
有了长达255个字符的空间,就可以自由地将文件名起得更加具有描述性也更准确——当然,过犹不及。
1.3 文件名区分大小写
与Windows和Mac OS不同,Linux对于文件名是区分大小写的。
同一目录中可以同时存在3个不同的文件:
bookstobuy.txtBooksToBuy.txtBoOkStObUy.txt
对于Linux文件系统来说,它们是3个完全不同的文件。但在Windows或者Mac OS上,后两个会被认为是同名文件。
命令也区分大小写
命令同样区分大小写:
rm不能写成RM、Rm或rM- 输入错误会导致删错文件或找不到命令
这一教训是双重的:Linux强制要求你必须精确,而精确性确实是个好东西。同时,Linux也给了你一定程度的灵活性,这在其他操作系统中是找不到的。
1.4 命名时不要使用的特殊字符
安全字符
总能安全使用的字符:
- 数字
- 字母(大写字母或小写字母)
- 圆点(
.) - 下划线(
_)
特殊字符使用建议
| 字符 | 建议 |
|---|---|
/ | 绝对不能使用,不能被转义 |
\ | 必须转义,避免使用 |
- | 不能作为文件名或目录名的开始 |
[ ] | 必须转义,避免使用 |
{ } | 必须转义,避免使用 |
* | 必须转义,避免使用 |
? | 必须转义,避免使用 |
' | 必须转义,避免使用 |
" | 必须转义,避免使用 |
为什么不能用 /
/ 是用于分隔目录和文件的特殊字符。如果文件名包含 /,shell会误以为是路径分隔。
替代方案:
- 用下划线代替斜线:
books_to_buy - 驼峰命名:
booksToBuy.txt或BooksToBuy.txt
为什么 - 不能开头
因为命令选项前面需要加上连字符。如果文件名以 - 开头,命令会把它误认为是选项:
rm -books_to_buy.txt
# 报错:rm: invalid option -- b如何处理空格和特殊字符
方法1:转义字符 \
rm Why\ don\'t\ I\ name\ files\ with\ \*\?.txt方法2:用引号括起来
rm "Why don't I name files with *?.txt"更好的选择就是根本不使用这些字符,省去转义的麻烦。
1.5 通配符及其含义
通配符可以通过字符匹配一次指定多个文件,极大简化批量操作。
有3种通配符:*(星号)、?(问号)、[ ](方括号)
* 通配符
匹配 0或多个任意字符。
| 命令 | 匹配结果 |
|---|---|
rm libby1*.jpg | libby10.jpg到libby12.jpg,不匹配libby1.txt |
rm libby*.jpg | libby1.jpg到libby12.jpg,不匹配libby1.txt |
rm *txt | libby1.txt,不匹配jpg文件 |
rm libby* | libby1.jpg到libby12.jpg,以及libby1.txt |
rm * | 目录中的所有文件 |
? 通配符
匹配 单个字符。
| 命令 | 匹配结果 |
|---|---|
rm libby1?.jpg | libby10.jpg到libby12.jpg,不匹配libby1.txt |
rm libby?.jpg | libby1.jpg到libby9.jpg,不匹配libby10.jpg |
rm libby?.* | libby1.jpg到libby9.jpg,以及libby1.txt |
[ ] 通配符
匹配 一组单个字符,或指定范围内的字符。
| 命令 | 匹配结果 |
|---|---|
rm libby1[12].jpg | libby11.jpg 和 libby12.jpg |
rm libby1[0-2].jpg | libby10.jpg 到 libby12.jpg |
rm libby[6-8].jpg | libby6.jpg 到 libby8.jpg |
1.6 小结
本章介绍的基础知识,对于新手来说意义可能并不那么明显,但当开始使用shell和它的命令时,它们就会派上用场。
要点回顾:
- Linux中一切都是文件,包括目录、设备、进程
- 文件名最长255字符,建议80字符以内
- 文件名和命令都区分大小写
- 避免使用特殊字符,空格需要转义或加引号
- 三种通配符:
*、?、[ ]是批量操作的利器
预先了解这些基础知识,就能够避免犯那些令很多人痛苦不堪的常见错误。