代码改变世界

学习Linux(一)

2012-12-29 16:02  lefan  阅读(212)  评论(0)    收藏  举报

 MBR硬盘MBR(Master Boot Record)就是我们经常说的”硬盘主引导记录”,它是由FDISK等磁盘分区命令写在硬盘绝对0扇区的一段数据,硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。

 这三部分组成,如下:

 在总共512字节的主引导扇区里引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。

 这3部分的大小加起来正好是512字节=1个扇区(硬盘每扇区固定为512个字节),因此,人们又形象地把MBR称为“硬盘主引导扇区”。这个扇区所在硬盘磁道上的其它扇区一般均空出,且这个扇区所在硬盘磁道是不属于分区范围内的,紧接着它后面的才是分区的内容(也就是说假如该盘每磁道扇区数为63,那么从绝对63扇区开始才是分区的内容)。从此看出硬盘分区表只能记录四条记录,所以主分区加扩展分区要少于四个。但是扩展分区可以分出一些列的逻辑分区。

 哈希表中数据的比较:哈希表是根据Key value直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做哈希表。数据的比较除了比较哈希值是否相等,还要查找值是否equals,这些是为什么再哈希表存数据除了哈希值方法函数还要有值相等方法。

 

Linux分区的命名:--/dev/xxyN

/dev/  这个字串是所有设备文件所在的目录名,因为分区在硬盘上,而硬盘是设备,所以这些文件代表了在/dev/上所有可能的分区。

 xx 分区名的前两个字母标明分区所在设备的类型,通常是hd(IDE磁盘)或sd(SCSI磁盘)

 y  这个字母标明分区所在的设备,例如,/dev/had(第一个IDE磁盘)或/dev/sdb(第二个SCSI磁盘)

 N  最后的数字代表分区,前四个分区(z主分区或扩展分区)是用数字从1排列到4,逻辑分区从5开始,例如,/dev/hda3是在第一个IDE硬盘上的第三个分区或扩展分区,/dev/sdb6是第二个SCSI硬盘上的第二个逻辑分区。

 

所有的设备,文件在linux看来都是文件设备,由两种文件设备,字符设备(打印机),块设备(磁盘)。硬盘或光驱的命名是固定的。取决据设备所接的接口。Linux中的每一个分区都是构成支持一组文件和目录所必须的存储区的一部分。它是通过挂载(mounting)来实现的,挂载是将分区关联到某一目录的过程,挂载分区使起始于这个指定目录(通常为挂载点,mount point)的贮存区能够被使用。

 

Linux常见命令:

pwd:显示当前目录

who am i: 显示当前用户

ls:查看当前文件夹的内容

rmdir:删除目录

mkdir :新建目录

mount /dev/cdrom  /mnt/cdr挂在硬件设备到目录上,以便访问

umount /dev/cdrom 卸载挂载点

login 登陆系统

exit 退出终端

shutdown  关机

Reboot 重启

Init n(0 系统停机状态;1 单用户工作状态;2 多用户工作状态(没有NFS);3 多用户工作状态(有NFS);4 系统未使用,留给用户;5 图形界面;6 系统正常关机并重新启动)

 

linux 字符界面和图形界面切换

 1. 硬盘安装的linux,在系统图形界面启动后,可使用Ctrl+Alt+F1`F6切换到字符界面,再用Ctrl+Alt+F7切换到字符界面切换到图形界面。

2. 对于使用虚拟机安装的linux,由于虚拟机屏蔽了Ctrl+Alt键,必须使用其它的热键:Ctrl+Alt+Shift+F1`6切换到字符界面;使用Alt+F7返回到图形界面。

3. 如果为了每此启动直接进入字符界面,则需要修改etc/inittab文件,将启动级别由5改为3即可。

4. 可以在图形界面下输入init 3 或telinit 3进入图形界面,在字符界面下输入 init 5 或init 5进入图形界面。

 

开机与关机:

shutdown -r now 立刻重新开机

shutdown -h now 立刻关机

shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有真的关机

shutdown -t3 -r now 立刻重新开机, 但在警告和删除processes 之间, 延迟3秒钟.

shutdown -h 10:42 'Hey! Go away!' 10:42 分关机

shutdown -r +10 'Hey! Go away!' 10 分钟後关机

shutdown -c 将刚才下的 shutdown 指令取消,必须切换至其它tty, 登入之後, 才能下此一指令.

shutdown now 切换至单人操作模式(不加任何选项时) 。

 

/   文件系统的入口,也是最高一级的目录,根分区;

/bin 基础系统所需的的那些命令位于此目录,也是最小系统所需的命令;比如:ls,cp,mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可以执行的,普通用户都可以使用的命令,做为基础系统所需的最基础的命令都是放在这里。

/boot Linux的内核及引导程序所需的文件,比如vmlinuz和initrd.img文件都位于这个目录中,在一般的情况下,GRUB或LILO系统引导管理器也位于这个目录;

/dev 设备文件存储目录,比如声卡、磁盘。。。。。。

/etc 系统配置文件所在地,一些服务器的配置文件也在这里;比如用户账号及密码配置文件;

/home 普通用户家目录默认存放的目录;

/lib库文件所在的目录

/usr  应用软件存放位置

/home 用户宿主目录的父文件

 

Linux启动过程:

1.load bios(hardware information)

2.read MBR’s config to find out the OS

3.load the kernel of the OS

4.init process starts

5.execute /etc/rc.d/sysinit

6.start other modules(etc/moules.conf)

7.execute the run level scripts

8 execute /etc/rc.d/rc.loal

9 execute /bin/login

10. shell started

 

Linux的文件类型:

Linux 常见的文件类型:

普通文件、目录、字符设备文件、块设备文件、符号链接文件

我们用ls –lh来查看某个文件的属性,可以看到有类似-rw-r-r-,值得注意的是第一个符号-,这样的的文件在Linux中就是普通文件,这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具。。。。或cp工具等。这类文件的删除方式是用rm命令;

drwxr-xr-x ,这样的文件就是目录,目录在Linux中是一个比较特殊的文件。注意它的第一个字符是d,创建目录的命令可以用mkdir命令,或cp命令,cp可以吧一个目录复制为另一个目录。删除用rm或rmdir

crw-rw-rw-,注意前面第一个字符是c,这表示字符设备文件,比如猫等端口设备;

brw-r---.注意前面的第一个字符是b,这表示块设备,比如硬盘光驱

lrwxrwxrrwx,注意第一个字符时l,这类文件时链接文件,是通过ln –s 源文件名 新文件名,这个和Windows操作系统当中的快捷方式有点类似。

 

Linux的文件扩展名:在Linux中一个文件是否能被执行,和后缀名没有多大的关系,重要看文件的属性有关,Linux文件的扩展名没有太大的意义。

 

 

创建和查看文件

touch 文件 创建文件

rm 文件名 删除文件

rm –r 文件夹名 递归删除文件夹

rm –rf 文件夹名 递归强制删除文件夹

rmdir 文件夹名  删除空文件夹

cp (-r)源文件/原文件夹  目标文件/目标文件夹

mv(-r) 源文件 目标文件/目标文件夹

tree 树状显示

查看环境变量:windows下查看所有环境变量:set;linux下查看所有环境变量:export

查看某一个名字的环境变量:windows下 set 环境变量名;linux 下  echo $环境变量名(大写)

more 文件名 查看文件

cat 文件名  查看文件

head –n 文件名 查看前几行

tail –n 文件名  查看后几行

find 位置  -name 匹配表达式 查找文件,支持通配符

whereis 命令 查看命令的一些信息

ln –s  文件  链接名 为某一文件建立一个链接(保持链接文件的同步性) ,带上参数-s ,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间, 不带参数,它会在你选定的位置上生成一个和源文件大小相同的文件。

 

用户名操作:

adduser(useradd) 用户名 增加用户

passwd 用户名 修改用户密码

/etc/passwd 文件中有所有用户信息

userdel –r 用户名  删除用户,加-r表述将用户目录下的文档一并删除

usermod  选项 用户名 修改用户信息, -g 组名  修改用户所属组

groupadd〔选项〕用户名, -g 添加组号(大于500)

groupmod 选项 组名 ,   -g 修改组号

su 用户名    su命令的常见用法是变成跟用户或超级用户,如果发出不带用户名的su命令,则系统提示输入根口令,输入之后则可换为根用户。如果登陆为根用户,则可以用su命令成为系统上任何用户而不需要口令。

who  -a显示所有用户的所有信息,-m显示运行该程序的用户名,和“who am I”的作用一样 -q只显示用户的登陆帐号和登陆用户的数量,该选项优先级高于其他任何选项,-u 在登陆用户后面显示该用户最后一次对系统进行操作距今的时间,-H显示列标题

 

Shell简介

shell用于和内核打交道,解释执行命令。Shell提供了用户与内核进行交互操作的一种接口, 它接收用户输入的命令并把它送入内核去执行。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 

每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。同Linux本身一样,Shell也有多种不同的版本。目前主要有下列版本的Shell: 

Bourne shell (bsh)  是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。

C shell ( csh)  是SUN公司Shell的BSD版本。

Korn shell ( ksh) 是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。

Z Shell(zsh)  The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。

 

linux Shell

Bourne Shell使用美元符($);

linux Shell中的C Shell使用百分号(%);

linux Shell中的Korn Shell使用美元符($)。

chmod [ugoa] +- rwx 文件 更改用户模式

chmod 777 文件

chown 用户 文件 更改用户的所有者

wc –cmlw 文件 显示文件包含多少行,多少个单词

grep 字符 文件返回文件中包含指定字符的行

date 显示和设置日期时间

stat 文件 显示指定文件的相关信息

id 显示当前用户的id信息

hostname 显示主机名

uname 显示操作系统的信息

dmemg 显示系统启动信息

du 显示指定的文件(目录)已使用磁盘空间的总量

df 显示文件系统磁盘空间的使用情况

free 显示当前内存和交换空间的使用情况

fdisk –l 显示磁盘信息

locale 显示当前语言信息

 

管道

讲一个命令的输出传送给另一个命令,作为另一个命令的输入(用的特别多)

ls –Rl  /etc |more(管道连接符,思就是把一个命令的输出,作为另一个进程的输入)

cat  /etc/passwd |wc

cat /etc/passwd |grep lrj

dmesg |grep eth0(第一块网卡 ,查看网卡正常不正常)

man bash |col –b > bash.txt(查?)
具体含义:man bash:可以看到bash的说明书,查看其相关的功能和描述。|:将前面的命令输出的内容以后面的命令再处理。
col -b:过滤掉所有的控制字符,包括RLF和HRLF(使得显示出来的文本没有乱码)。
>:将前面的命令输出的内容保存到后面所述的文件中。
综合起来,就是把bash的用户手册页的内容,去掉乱码(控制字符)之后,输出到当前目录下的bash.txt内。
当命令得到执行,则当前目录下会出现一个bash.txt文件,里面的内容正是man手册内关于bash的帮助和介绍

$ls –l | grep “^d”  列出所有的文件夹(正则表达式的视频,^代表一行的开头;只列出目录)

$ls –l |grep “^d”  列出所有的文件

wall 向所有用户发消息,`date` 把命令执行结果返回给所有用户

重定向:命令 文件将命令的执行结果送至指定的文件中。

ls –l  > list.txt 将执行ls –l命令的结果写入文件list中。

ls –l >! list.txt 将执行ls –l命令的结果写入文件中,若文件已经存在,则覆盖。

ls –l >& list.txt 将命令执行时屏幕上所产生的任何信息写入指定的文件中。

ls –l >> list.txt 文件,将执行命令的结果附加到指定的文件当中。

tar :linux下最常用的打包程序,使用tar程序打出来的包我们称为tar包,tar包通常都是以.tar结尾。生成tar包后,就可以使用其它的程序进行压缩了。-c,创建一个新归档。-f指定tar包文件名,-t显示包括在tar文件中的文件列表。-v显示文件的归档进度。-x,从归档中抽取文件, -z使用gzip来压缩tar文件,-j使用zip来压缩tar文件,注意tar默认不会压缩文件。

 

if you can't explain it simply, you don't understand it well enough.

学了点Linux知识,对照着这六个问题更好的理解下Linux。
 
  问题1: Winows有注册表,为什么Linux没有注册表

  问题2:Windows有完善的图形界面,而Linux为什么要学命令行。

  问题3:Linux有那么多目录,那么多命令,怎么记得住呢?

  问题4:Linux的文件夹结构看上去很复杂,怎么理解呢? 

  问题5: 什么是"/usr" ,"/etc"和“/var“

  问题6:用户自己产生的数据放到哪里?