快乐的Linux命令行 http://billie66.github.io/TLCL/ 2015-01-16
快乐的 Linux 命令行 http://billie66.github.io/TLCL/ 2015-01-16
Contents 1引言 17 1.1为什么使用命令行 17 1.2这本书讲什么..... 18 1.3谁应该读这本书.. 18 1.4这本书的内容.. 19 1.5怎样阅读这本书..· 19 1.5.1前提条件 20 1.6拓展阅读...... 21 2什么是shell 22 2.1终端仿真器 22 2.2第一次按键 22 2.3命令历史 23 2.4移动光标 23 2.5关于鼠标和光标.... 23 2.6试试运行一些简单命令 24 2.7结束终端会话 25 2.8幕后控制台 25 2.9拓展阅读... 25 3文件系统中跳转 26 3.1理解文件系统树.· 26 3.2当前工作目录... 27 3.3列出目录内容 28 3.4更改当前工作目录 28 3.5绝对路径 28 1
Contents 1 引言 17 1.1 为什么使用命令行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2 这本书讲什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 谁应该读这本书 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4 这本书的内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.5 怎样阅读这本书 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.5.1 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6 拓展阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2 什么是 shell 22 2.1 终端仿真器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2 第一次按键 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3 命令历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4 移动光标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.5 关于鼠标和光标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6 试试运行一些简单命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.7 结束终端会话 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.8 幕后控制台 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.9 拓展阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3 文件系统中跳转 26 3.1 理解文件系统树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2 当前工作目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3 列出目录内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 更改当前工作目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5 绝对路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1
3.6相对路径 29 3.7有用的快捷键 30 4探究操作系统 32 4.1ls乐趣.·.·· 32 42选项和参数··.·. 33 4.3深入研究长格式输出 34 4.4确定文件类型 35 4.5用1ess浏览文件内容 36 4.6 less就是more(禅语:色即是空) 38 4.7旅行指南 38 4.8符号链接 41 4.9硬链接.·. 42 4.10拓展阅读 42 5操作文件和目录 43 5.1通配符.···· 43 5.2 nkdir-创建目录 46 5.3cp-复制文件和目录 47 5.4有用的选项和实例 47 5.5mv-移动和重命名文件 48 5.6有用的选项和实例 49 5.7rm-删除文件和目录.. 49 5.8有用的选项和实例 50 5.9ln一创建链接 51 5.10硬链接 51 5.11符号链接 52 5.12创建游戏场(实战演习) 52 5.13创建目录....... 52 5.14移动和重命名文件 54 5.15创建硬链接 55 5.16创建符号链接 56 5.17移动文件和目录.. 58 5.18总结 59 2
3.6 相对路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7 有用的快捷键 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 探究操作系统 32 4.1 ls 乐趣 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.2 选项和参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3 深入研究长格式输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4 确定文件类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.5 用 less 浏览文件内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.6 less 就是 more(禅语:色即是空) . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7 旅行指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.8 符号链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.9 硬链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.10 拓展阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5 操作文件和目录 43 5.1 通配符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2 mkdir - 创建目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.3 cp - 复制文件和目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.4 有用的选项和实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.5 mv - 移动和重命名文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.6 有用的选项和实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.7 rm - 删除文件和目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.8 有用的选项和实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.9 ln —创建链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.10 硬链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.11 符号链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.12 创建游戏场(实战演习) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.13 创建目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.14 移动和重命名文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.15 创建硬链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.16 创建符号链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.17 移动文件和目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.18 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2
6使用命令 60 6.1到底什么是命令? 60 6.2识别命令 61 6.3type-显示命令的类型 61 6.4 which一显示一个可执行程序的位置 61 6.5得到命令文档 62 6.6help一得到shell内部命令的帮助文档 62 6.7-help-显示用法信息.... 63 6.8man-显示程序手册页 63 6.9 apropos-显示适当的命令.··.. 64 6.l0 whatis一显示非常简洁的命令说明 65 6.11info-显示程序Info条目 65 6.12 README和其它程序文档 66 6.13用别名(alias)创建你自己的命令 66 6.14拜访老朋友...... 69 6.15拓展阅读 69 7重定向 70 7.1标准输入,输出,和错误 70 7.2重定向标准输出.··.··· 71 7.3重定向标准错误 72 7.4重定向标准输出和错误到同一个文件 73 75处理不需要的输出..:··. 74 7.6重定向标准输入. 74 7.7cat-连接文件 74 7.8管道线 77 7.9过滤器.····.··· 77 7.10niq-报道或忽略重复行.·· 77 7.11wc一打印行,字和字节数.··.. 78 7.12grep一打印匹配行 78 7.13head/tail一打印文件开头部分/结尾部分 79 7.l4tee一从Stdin读取数据,并同时输出到Stdout和文件 80 7.15总结归纳 80 3
6 使用命令 60 6.1 到底什么是命令? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.2 识别命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.3 type -显示命令的类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.4 which -显示一个可执行程序的位置 . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.5 得到命令文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.6 help -得到 shell 内部命令的帮助文档 . . . . . . . . . . . . . . . . . . . . . . . . 62 6.7 --help - 显示用法信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.8 man -显示程序手册页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.9 apropos -显示适当的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.10 whatis -显示非常简洁的命令说明 . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.11 info -显示程序 Info 条目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.12 README 和其它程序文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.13 用别名(alias)创建你自己的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.14 拜访老朋友 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 6.15 拓展阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7 重定向 70 7.1 标准输入,输出,和错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.2 重定向标准输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.3 重定向标准错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.4 重定向标准输出和错误到同一个文件 . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.5 处理不需要的输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.6 重定向标准输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.7 cat -连接文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.8 管道线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.9 过滤器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.10 uniq - 报道或忽略重复行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.11 wc -打印行,字和字节数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.12 grep -打印匹配行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.13 head / tail -打印文件开头部分/结尾部分 . . . . . . . . . . . . . . . . . . . . . . 79 7.14 tee -从 Stdin 读取数据,并同时输出到 Stdout 和文件 . . . . . . . . . . . . . . 80 7.15 总结归纳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3
8从shell眼中看世界 82 8.1(字符)展开 82 8.2路径名展开 83 8.3波浪线展开 84 8.4算术表达式展开 85 8.5花括号展开 86 8.6参数展开 88 8.7命令替换 88 8.8引用·· 89 8.9双引号.. 90 8.10单引号... 91 8.11转义字符 92 8.12总结归纳 93 8.13拓展阅读 93 9键盘高级操作技巧 94 9.1命令行编辑 94 9.2移动光标 94 9.3修改文本 95 9.4 剪切和粘贴文本. 95 9.5 自动补全 96 9.6利用历史命令 98 9.7搜索历史命令 98 9.8历史命令展开 100 9.9总结归纳 101 9.10拓展阅读 101 10权限 102 10.1拥有者,组成员,和其他人 103 10.2读取,写入,和执行... 104 10.3 chmod-更改文件模式 105 10.4借助GUI来设置文件模式.. 108 10.5 umask-设置默认权限... 108 10.6更改身份 111
8 从 shell 眼中看世界 82 8.1 (字符) 展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 8.2 路径名展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 8.3 波浪线展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 8.4 算术表达式展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 8.5 花括号展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.6 参数展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.7 命令替换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.8 引用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 8.9 双引号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 8.10 单引号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 8.11 转义字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 8.12 总结归纳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8.13 拓展阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 9 键盘高级操作技巧 94 9.1 命令行编辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 9.2 移动光标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 9.3 修改文本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 9.4 剪切和粘贴文本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 9.5 自动补全 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 9.6 利用历史命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 9.7 搜索历史命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 9.8 历史命令展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 9.9 总结归纳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.10 拓展阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10 权限 102 10.1 拥有者,组成员,和其他人 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.2 读取,写入,和执行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 10.3 chmod -更改文件模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.4 借助 GUI 来设置文件模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.5 umask -设置默认权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.6 更改身份 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4