《鸟哥的linux私房菜(基础篇)》学习笔记----------李晶
第一部分:linux的规划与安装
这里个人相对来说比较熟悉,对于如何安装linux书上有详细介绍。不过我一般用的都是ubuntu,这个发行版的安装并不是很复杂。
1.linux历史与简介:
计算机是由一堆硬件所组成的,操作系统是为了更加有效地控制和使用这些硬件资源。我们最熟悉的windows就是一种操作系统。但是linux是完全不同于windows的一种操作系统。众所皀知癿,Linux癿核心是由Linus Torvalds在1991年癿时候给他开发出来的。linux沿袭了unix 的许多良好的特性,最重要的也是现今非常受欢迎的原因之一就是linux是开源的,并且在其之上的软件也是免费开源的,以此为基本最后发展出来了开源社区,对整个计算机科学的发展都有很重要的作用。
linux目前有着众多的发行版,Red Hat, SuSE,Ubuntu, Fedora, Debian。我个人使用的是ubuntu-10.10。
linux的发展路径:
Unix癿前身是由贝尔实验室(Bell lab.)癿Ken Thompson利用汇编语言写成的,后来在1971-1973年间由Dennis Ritchie以C语言重新改写,才称为Unix。
1977年由Bill Joy开发出BSD (Berkeley Software Distribution),这些称为Unix-like的操作系统。
1984年由Andrew Tannenbaum制作出Minix操作系统,该系统可以提供原始码以及软件;
1984年由Richard Stallman提倡GNU计划,倡导自由软件(Free software),强调其软件可以自由获得,修改,再发行。
1991年由芬兰大学生Linus Torvalds开发出Linux操作系统。Linux成功主要在于:Minix(Unix), GNU, Internet, POSIX 及虚拟团队的产生。
Linux本身就是个操作系统,其开发网站在,我们亦称Linux操作系统最核心的数据为内核Kernel。
目前Linux核心的发展分为两种版本,分别是稳定版本偶数版,如2.6.X,适合商业和家用环境使用;一种是发展中版本如2.5.X 版,适合开发特殊功能的环境。
Linux distributions的组成有:『Linux Kernel + Free Software + Documentations(Tools) + 可完全安装的程序』所制成癿一套完整的系统。
2.分区:
目前各种机器安装linux都比较方便了,特别是像我使用ubuntu10.10,基本上全是自动安装的,不过经常困惑我们的一般都是分区。如何分区才合理呢,对于初学者,分区可以直接只分一个根分区和交换(SWAP)分区。这里值得说一下的是磁盘只能分四个主分区。不过可以通过扩展分区来扩充,这样的话就是三个主分区和多个逻辑分区。SWAP分区的大小一般建议2倍于你的物理内存。将/home等数据量会较大的目录单独分区是一个非常不错的做法,具体分配多少容量,看你最终的数据量,估算后尽量多分。
3.多重引导:
目前我们使用学习linux的最大的苦恼就是关于如何与windows共存的问题了。书中详
细介绍了如何安装centOS,附带很多截图,并且也描述了在已经装了windows的情况下如何设置多重引导。这个我也有过很多关于引导的经历。现在绝大多数的引导程序都会选择使用GRUB,这是一个交互式的引导程序。当我们的引导程序如果出现故障,或者是重装了windows的时候,我们将无法正常进入linux,如果使用的系统是ubuntu这个时候可以使用如下方法:
用ubuntu9.10以上(9.10以下的就是修复grub1(如不会,在我博客另一章里有介绍))的系统盘,启动光盘选择“试用而不安装”,进入后打开终端(注意命令间的空格,特别是mnt前面有空格)
1. sudo -i
2. mount /dev/sda6 /mnt
3. mount /dev/sdaX /mnt/boot这一步是有给/boot 单独分区的命令,若没单独分区跳过这步
4. grub-install --root-directory=/mnt/ /dev/sda
5. 重启grub>提示符下输入find /boot/grub/core.img (若boot单独分区则:find /grub/core.ima)此命令会得到个结果:(hdx,y)
8. root (hdx,y)
9. kernel /boot/grub/core.img (boot单独分区则:kernel /grub/core.img)
10. boot执行该命令后就转入到GRUB菜单,此时选择进入Ubuntu
11. 在ubuntu下启动终端
12. sudo grub-install /dev/sda此命令用作修复grub,
如果使用的是很早前的版本很类似并且简单很多的。
第二部分:linux文件,目录与文件系统格式
1.管理文件权限:
Linux文件以及目录都会有所有者,而所有者又会处于某个用户组,这样导致了文件的权限有了对象。也就是三种对象,对于文件所有者,以及对于所有者所在的组,然后就是其他的人。权限分为三种,读,写,执行。使用ls –al命令可以查看当前目录下的文件的各种属性,如下所示。其中drwxr-xr-x中的rwx代表的就是权限。
$ ls -al
total 2593852
drwxr-xr-x 153 rd work 8192 Jan 6 11:59 .
drwxr-xr-x 26 root root 4096 Nov 26 2009 ..
-rw-r--r-- 1 rd work 59311 Nov 13 2008 0
-rw-r--r-- 1 rd work 595 Nov 13 2008 0.sh
这里有10位,第一位代表文件类型,比如d代表目录,l代表链接,-代表普通文件。后面是连续的rwx,每三位分别对应于文件所有者,所有者组,其他人,其中rwx代表拥有读写执行权限,若相应的位上是’-‘代表不拥有相应权限。
如何改变权限,使用chgrp,chown,chmod分别可以改变文件的所有者,文件所有者组,文件的权限。
使用chmod有两种重要的方式。一是使用8进制数字模式rwxrwxrwx对应于777,rw-r—r—对应于644,例如chmod 777 file,另外一种是使用字符模式:
Chmod u+x abc.sh就是为文件abc.sh增加执行权限。
特别值得说一下的是目录的权限,由于目录与普通文件有区别,因此这个权限的含义也是有很大的不同的。R 代表拥有对目录结构列表的读取权限,这样也就是说用vim可以直接打开目录,看到其中的一些文件名称,所以使用ls是可以列出其中的文件或目录。W 代表你可以改变目录的结构列表,这样一位这你拥有很多权利,比如建立新的文件或目录,删除文件或目录(忽略其本身的权限),重命名以及移动文件或目录。X 意味着你是否可以进入此目录将其作为当前的工作目录。
2.管理文件以及目录:
“.”代表当前目录,“..”代表父目录,“~”代表家目录。
pwd 显示当前的工作目录。
cd 进入目录将该目录作为工作目录。
mkdir创建目录。
rmdir删除空目录。
ls 最常见的一个命令,列出目录下的文件的信息。
cp 复制一个文件或者目录。
rm 删除一个文件或目录。
mv 移动一个目录或文件,可以实现重命名。
cat 由第一行开始显示文件内容。
linux使用vim编辑文件
tac 从最后一行开始显示,可以看出tac是cat的倒写。
nl 显示的时候,输出行号。
more 分页的显示档案内容。
less 与more 类似,但是比more 更好的是,他可以往前翻页。
head 查看头几行
tail 查看尾几行
od 以二进制的方式读取文件内容!
touch更改文件的相关属性,文件不存在时会创建文件。
环境变量$PATH保存着这些命令的目录,使得键入命令式不用输入目录,系统会自动去搜索。另外文件还有很多属性,比如suid等。
3.管理磁盘与文件系统:
Linux下的标准文件系统为ext2,现在已经有ext3,ext4等,不过它所支持的文件系统就很多了。windows下的FAT16,FAT32,NTFS等等几乎所有的文件系统,linux都是可以很好的支持的。对于ext2,其中包含有超级块,block,还有inode等数据结构来保证文件系统的正常使用,个人觉得这个地方比较难理解,这些数据结构的结构和每个项的意义都是需要我们对操作系统有一定了理解能力的。
每个filesystem 都有独立的inode / block / superblock 等信息,这些文件系统都是鼓励的,必须要与目录树连接上,才能够被我们正常使用。这个链接就是mount(挂载)。Linux 是通过VFS(Virtual Filesystem Switch)来统一管理系统所支持的各种文件系统的。
下面说一下基本的文件系统的操作:
df:列出文件系统的整体磁盘使用量。
du:计算文件系统的磁盘使用量(常用在计算目录所占容量)。
ln:创建链接。有两种情况,1.软连接,就是常说的快捷方式,此种链接被删除或者操作是不会影响源文件的。2.硬链接,这种方式不能跨文件系统。由于是直接引用相同的inode 信息,所以对其修改就会修改原文件,因为这个链接与原文件的地位相当。
fdisk:对磁盘进行分区
mkfs:对磁盘进行格式化处理
mount:挂载文件系统
fsck:用来检查文件系统是否出错
开机自动挂载可以在/etc/fstab文件中设置,设置完成以后,一定记得使用mount –a选项来验证语法是否正确。
4.文件的打包压缩:
Linux下的压缩指令实在是很多,因此产生了众多的压缩文件的后缀名:
gzip,bzip2目前是最流行的压缩程序。但是这些程序只能针对单个文件进行压缩,因此需要进行打包,由此tar完成了这个任务。
tar的基本用法如下:
其中下划线的字母代表了它的动作。
备份与还原:dump 和restore
第三部分:shell
1.vim:
vim是一个强大的编辑器。与emacs是linux世界的两个使用人数最多的编辑器。由于这两个编辑器在绝大多数linux发行版中都会自己包含,linux0.11内核中就已经集成了简单的vi工具,因此我们必须至少掌握其中的一个。书中介绍的是VIM,我个人使用的也是VIM,不过还有很大一部分人使用得是Emacs。
VIM的使用与我们在windows下图形编辑器有很大的差别。它有三种模式,插入(编辑)模式,编辑模式,命令模式。下面是书中关于这三个模式的一个转换图。
在一般模式中hjkl这四个键控制光标移动。还有很多其他的控制键。
在命令模式中w是写入,q是退出,!是执行SHELL命令,/是搜索字符串
在编辑模式中就是可以直接编辑文本内容。ESC可以返回一般模式。
Vim拥有许多插件,支持各种语言的语法高亮,可以自动补全,还拥有多窗口,多标签等功能,总之使用好了vim对平常的管理,还有编写程序会有很大的帮助。
2.shell:
操作系统为用户解决了大多数的苦难,使得我们不用再和系统底层打交道,但是我们最终还必须和计算机有交流啊,因此操作系统提供了shell来处理我们与系统的交互。书上说的是操作系统将所有重要的资源以及函数等都封装在内核中,而我们能够通过shell输入指令来与其更好的沟通,是内核能够更加正确的操作硬件。
Shell有很多种类,例如bsh,csh,ksh。。。,我们经常使用是BASH,shell有以下的几种功能:命令编程;命令与文件名补全功能;命令别名设置功能;作业控刢、前景背景控刢;程序化脚本;通配符。
Shell变量:就是使用标识符来代替一些数据或者程序。Shell变量主要分为环境变量和自定义变量。env可以查看所有的环境变量。export可以将自定义变量转化为环境变量。set 可以查看当前bash下的所有变量。特殊变量:
bash 癿配置文件主要分为login shell 与non-login shell。login shell 主要读取/etc/profile 与~/.bash_profile,non-login shell 则仅读取~/.bashrc。
shell支持文件通配符:*代表0-无穷多个字符,?代表至少一个字符,[]代表[]中的字符一定有一个。
shell还有一个特征就是支持数据重定向。当我们从键盘输入从屏幕上显示的时候,输入设备的文件描述符是STDIN,输出的是STDOUT,错误输出是STDERR,假如我们想从文件in从读取数据,输出到out文件,将错误输出至err文件,那么我们可以使用如下方法:$命令<in >out 2>err
>是覆盖方式输出,>>是追加方式输出。/dev/null这个文件是一个黑洞,写进去的东西就再也读不出来了。
shell命令有时候需要一行执行多个,可以直接用’;’隔开,就会执行完一条命令后继续执行下一条。还有两个分隔&& 与||,cmd1 && cmd2表示只有cmd1正确执行了cmd2才会执行。cmd1 || cmd2表示cmd1执行完成后返回值$?!=0,即是cmd1执行出错了,cmd2才会执行。
shell另外的一个强大之处在于shell管道“|”。cmd1 | cmd2 会将cmd1的标准输出当做cmd2的标准输入而传给cmd2,这样使得cmd2可以直接使用cmd1的执行结果。这样程序间的协作将会使的功能变得异常强大。常用管道命令:
cut:将一段信息的某一段给窃取出来。
grep:这个是很强大的一个行提取工具,使用正则表达式进行匹配,提取出那些与我们定的规则相匹配的行。
sort:对输出的结果进行排序。
wc:统计输出的结果有多少行。
uniq:去除重复行。
tee:将输出拷贝一份到文件中。
tr:替换删除字符。
3.正则表达式:
书中主要是结合了几种工具对正则表达式的理解。先看一下正则表达式的基本元字符:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论