9 18 2008
《A Practical Guide to Ubuntu Linux》笔记
这本书《A Practical Guide to Ubuntu Linux》(Amazon,豆瓣),2007年12月出版的,一千多页的书,网上有英文的电子版,PDF文件,非图像扫描,文字是能选中的(哪里下载?Google一下书名就行了),没有中文版,也不知道国内出版社会不会引进翻译,不过Ubuntu一年更新2次,翻译完说不定作者都发布新版了,还是挂个星际译王啃英文吧,里面的英语不难,不用鸟什么他妈的主谓宾定状补中心思想段落大意。讲解很详细,详细到标题栏最小化最大化按钮也要解释一下,前面说安装解释图形界面的要记的东西不多,所以我从第五章开始记,都是一句话,极不全面和很随便,不保证所说的都是正确。不过作者的确是个很牛逼的人,也是他写的有本《Linux命令、编辑器与Shell编程》(Amazon,豆瓣),有中文版,2本书部分章节有重复,上次在购书中心看到,厚厚的很有分量,看了下内容,初步印象不错,翻去看价格,妈的,98元,还好我在学校图书馆借到一本,网上也有CHM格式的英文版(懂英文就是好啊)。
第五章 Linux工具
定位命令
- “which”和“whereis”的区别是后者显示所有匹配命令。
第六章 Linux文件系统
存取权限
- 运行一个Shell Script需要读取和执行权限,而二进制则只需要执行权限。
- 不要给Shell Script设置Setuid权限,因为有潜在危险。
- 一个目录的other只有x权限,只能用”ls -d”命令来显示目录属性。
连接
- 用“/bin/pwd”来显示目录连接的实际路径。
第七章 Shell
命令行
- “–”后边加的参数作为文件名,比如“ls — -l”列出文件名为“-l”的文件信息。
- “>bb <aa cat”是合法的,Shell先确认重定向符号“<>”,然后再查找并执行命令。
标准输入和标准输出
- “echo hello > /dev/pts/1”,将回显输出到pts/1中去,而不是当前的终端。终端设备可以用“who”命令查看。
- Ctrl+D发送EOF信号给命令。
- 运行“set -o noclobber”避免输出重定向覆盖文件,“set +o noclobber”则恢复允许覆盖文件,用“>|”强制允许覆盖。
- “cat /dev/null > messages”,清除文件messages的内容,但保留了读写权限。
- 按Ctrl+Z暂时把程序丢到后台运行,用fg返回,如果只有一个后台程序,不用添加后台程序序号。
- 把进程丢会前台可以用“fg 1”或者“%N”,N为后台进程序号。
- 可以使用“kill %N”来终止进程。还需要多按一下回车。
文件路径名扩展
- 文件名中使用通配符,如果通配符没有展开,那么shell直接传第通配符的给命令。
- 通配符“?”和“*”都不匹配文件开头的小数点,即要指定隐藏文件的明确指定开头的点。
- “ls .*”会列出当目录的所有文件,包括隐藏文件,同时也包括当前目录的父目录的文件(“..”给扩展了)。
第八章 Linux GUI:X 和 GNOME
X Windows 系统
- xev是一个测试教学X Windows工具
第九章 The Bourne Again Shell
背景
- “bash –posix”让bash更加遵从POSIX标准。
Shell基础
- 在虚拟终端里不执行这几个文件,~/.bash_profile, ~/.bash_login, and ~/.profile。
- 登录Sehll在“.bash_profile”调用“.bashrc”。
- “[ –f ~/.bashrc ]”,测试是否存在这个文件。
- 在脚本头加上“#! xxxx“,xxxx可以不是一个Shell,其它程序也行。
- 使用“bash ./aScript”来运行比有运行权限直接用“./aScript”来运行效率要低。
- 分隔命令的分号“;”后不一定要加空格,加空格只是便于阅读。
- “d & e & f”,后台运行程序“d”和“e”,前台运行“f”。
- 使用“fg %aString”来查找一个后台程序,aString为要查找程序的开头字符。
- 使用“fg %?aString”,也是查找后台程序,不过部分匹配。
- Ctrt+Z是暂停一个程序,而bg是把程序调到后台继续运行。
- 如果有后台程序在运行,Shell不允许exit,但用jobs检查后则可以exit,而后台程序依然继续运行。
- pushd,加上参数进入目录(像cd),不加参数交换目录栈(dirs,显示目录栈)的顶2个目录,并切换目录。
- “cd -”,回到上一个工作目录,与目录栈无关。
- “pushd +N”,切换到目录栈第N个目录,栈顶为0,用减号则从栈底起算。
- “popd +N”,用法同pushd,弹出目录栈。除0之外不改变当前目录。
参数和变量
- 全局变量通常用大写字母表示,在启动脚本中设定。
- 用花括号分隔表示变量,${FREE}clock,${10}。
- 用“readonly”命令为变量加上只读属性。
- typeset和declare是同一个命令,用于设置变量属性。
历史
- HISTSIZE变量表示每个会话的保存历史条目数,而HISTFILESIZE则表示全部会话。
- 迅速替换“^old^new^”相当于“!!:s/old/new/“。
- “set -o vi”编辑模式,“set -o emacs”模式。
- “bind –P”显示键位绑定。
别名
- 别名不会递归。
- 别名功能会在非交互式shell中禁用,比如脚本。
- 用双引号包围别名会替换变量(如$PWD),而用单引号则不会。
- 如果暂时不用别名,可在命令前加“\”。
函数
- 在shell定义的函数在注销后失效。
- 如果别名和函数都定义为同一名字,那么用“unset”先取消的是别名,再运行取消是函数。
控制bash的特征和选项
- 调用bash的命令行长选项要在短选项之前。
- 用“$(())”或“let”命令来做算术时,表达式中的变量不需要加上“$”号,但加上是个好习惯。
- 如果想在“$(”后使用括号,必须在第一个“(”后加一个空格,否则就当成了算术表达式了。

博主给个英文版的下载地址吧,邮箱:f.wissler@gmail.com
@wissler
Google一下书名就行了。