linux 基础教程 图文并茂笔记_第1页
linux 基础教程 图文并茂笔记_第2页
linux 基础教程 图文并茂笔记_第3页
linux 基础教程 图文并茂笔记_第4页
linux 基础教程 图文并茂笔记_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux:1. linux的安装。本套教程我们使用VMWare7.0+Redhat AS 4进行演示。VMWare是一个虚拟机软件,说白了就是我们现在没有真实的能安装linux的机器,所以要用虚拟机软件在我们的windows系统的机器上虚拟出一台机器,然后安装linux,方便我们测试使用。一般的电脑不能直接装linux?由于linux对硬件有特定的要求,所以它一般不能直接安装在普通的电脑上,实际开发中,我们使用的linux是安装在linux服务器上的,这个服务器是厂家把硬件帮你配置好,非特殊情况,你很少接触到linux服务器,很少会让你在服务器上直接安装linux,操作linux,部署及调试

2、程序等,这些操作都是通过远程的客户端间接进行。正是因为我们没有硬件条件,VMWare虚拟机才要帮我们创造这个条件,否则无法进行linux的学习。VMWare是在我们的windows机器上获取一系列的硬件资源,虚拟出一台机器,把原来电脑中不兼容的硬件,经过VMWare的处理都变得兼容linux了,在你的眼里,虚拟出来的机器应该和真实的机器没有两样。有了VMWare,我们就拥有了一台能安装linux系统的机器了。VMWare7.0的安装:下载它的安装文件,在vmware官网注册一个账号(账1035097367密xxx,以后下载,首选是官网,注意习惯。),在首页的:选择相应的版本下载即可,我下的是7

3、.0(含VMware Tools的一体包),教程用的是5.5,但是5.5已经不支持win7了。我安装文件下载后放在了” E:SoftDeveloplinuxvmware7.0”,点击安装文件进行安装即可,那些英文你基本都能看懂。Redhat AS 4是linux其中一个服务商的产品,严格意义上的linux只是一个内核系统,它只有和硬件打交道的最核心的程序,没有配套的外围软件,但是如果给你一个linux内核,是没有什么用的,我们始终还是使用运行在linux上的软件,而在linux上安装软件,脚本,编译程序等都是比较麻烦的,所以出现了这样一批厂商,它帮你把一系列的软件在linux上安装好了,就变成

4、了一个产品,一个所谓的linux版本,或者说是发行套件,然后卖给你直接使用,Redhat AS 4就是Redhat公司的其中一个版本的套件,与其类似的公司还有很多:所以会出现五花八门的linux版本,他们都是基于linux原始内核进行外围封装的,只是封装的方式不同而已。所以笼统的把这些公司封装出来的linux都称为linux的版本,而实际上真正的linux版本是指linux内核的版本。就Redhat而言,它的linux又分为两种类型,一种是桌面操作系统,个人电脑用的,另外一种是服务器操作系统。我们一般不会接触到linux的桌面操作系统,因为国内几乎没有人直接在linux上开发上层的客户端,一般

5、都是windows上开发好,部署到linux上,所以只要说到linux,我们指的都是linux的服务器操作系统。这里说两句题外话,为什么就不能用桌面操作系统来做服务器操作系统呢?非要用基于命令行的操作系统来作为服务器操作系统,因为后者占用资源少,系统本身小,系统中的软件占用的资源也比图形界面的小,它比图形界面的系统更单纯,坚固,不容易崩溃,并且linux是开源的,所以他容易控制,所以安全。linux的内核对以下部分的内容进行处理:就是硬件呀,内存呀,数据的传输呀(I/O),文件系统呀(VFS),还有进程管理等。这里解释一下什么叫文件系统,windows下的FAT16,FAT32,NTSF等就是

6、文件系统,同一块硬盘空间,可以被划分成不同的形状、大小的格子来存放数据,这些不同的划分形式就是不同的文件系统。linux也有一系列和windows类似的文件系统,它们之间一般是不兼容的,它们不能相互拷贝数据,不能互相转换等,但是后来linux出现了VFS文件系统(虚拟的文件系统),原来互不兼容饿文件系统经过VFS的处理就兼容了,VFS如同统一的interface,在它看来,所有的文件系统都是一样的,它实际上是在原有的不同的文件系统中抽象出了一层,帮编程人员屏蔽了一层,编程的时候我们只需要针对VFS编程即可,而不需要针对其底层的各种文件系统编程,简化了编程,可以类比JDBC。另外就是linux的

7、进程管理,在windows中,进程是静态的概念,是重量级的东西,而linux的进程则相当于windows的线程,是轻量级的概念,linux没有线程的概念。 linux内核的版本号的含义:linux的版本号由三部分组成,格式是r.x.y,如2.0.38,其中2表示该版本可发性(release version可发行的版本),一般还有版(bata版,客户测试过的版本),版(Alpha版,开发商自行测试的版本);0表示稳定版本,因为他是偶数,如果是奇数,表示开发中的版本,一般发行套件中的这个数字不会出现奇数;最后的38指错误修补的次数。Redhat AS 4的安装(以vmware7.0演示):首先下载

8、Redhat AS 4的安装光盘,一共四个iso镜像光盘,我放在了” E:SoftDeveloplinuxRedhat AS 4”。打开vmware7.0:如果安装的过程中出现:这个问题,进入biosconfigCPU,将disabled都变成enable就可以。 下一步是配置虚拟机的硬件配置,这个忘了截图,我配置了1g内存,两个处理器,每个处理器一个核心(上面其实是虚拟机创建的过程,有了机器才能装系统)。点击finish,就进入了Redhat AS 4的正式安装,自动进行一系列的安装,直到第一张光碟安装完毕,会停下来换碟(如果是win8系统,会出现“not enough physical m

9、emory is available to power on this virtual machine.”提示内存不足,以管理员身份再运行VMware就行了):换完碟之后点上面对话框的”OK”会继续安装系统。下面的操作是一样的,直到全部的碟读完。其实换碟的标准操作应该是单机左边栏的虚拟机右键settings.找到光驱换碟换完后再点击linux系统中的”OK”(这个操作貌似不行)。这个过程和我 们操作一台真实的机器很像。不过上面提供的”Change Disc”按钮方便我们换碟而已: 当四张碟都换完之后,它会让你再换一次第一张碟。然后就是一段长时间的初始化。它会自行安装VMware Tools,因

10、为我下载的VMware是含有VMware Tools的一体包,安装VMware Tools之后最显著的特点就是鼠标可以在虚拟机屏幕和本机屏幕间平滑切换了,而不用按ctrl+alt从虚拟机屏幕中释放鼠标。系统装好后出现” I can not start the X server.”的错误,不知道什么意思,重启后就能进入系统了。输入密码后弹出这玩意,应该是记住密码的上面我们在虚拟机上安装完成了linux,但是当前没有条件在真实的机器上安装,老马说,如果有机会在真实的机器上安装,会遇到的最严重的问题是找不到linux硬件驱动,有些硬件厂商压根没有linux的驱动,不知道有没有linux万能驱动之类的

11、.所以他建议尽量找老一点的硬件进行安装,最好先把硬件的型号记下来,但是极少遇到这种情况,一般的linux服务器都是买现成带系统的,要维修的时候估计也轮不到你。Linux硬件兼容查询地址:2. linux硬盘分区的问题。教程中的安装方式在安装的过程中是需要对硬盘进行分区的,但是我的安装过程没有遇到,估计他是默认为你自动分区了。那么下面就说一下分区的一些基本知识。和分区离不开的概念是格式化,格式化就是为当前分区设定一个文件系统,顺序是先分区再格式化,这样就能为每个分区进设定不同的文件系统。硬盘中存放数据类似hash表的存放方式,具体看资料汇总的“297.Map接口”。硬盘存放数据也不是顺序存放的,

12、所以像DiskGenius这些软件有“调整分区大小”的功能,它是先将硬盘中的数据紧密规律放在一起,然后把空余的地方分割,这样才能保证硬盘数据不丢失。一块硬盘最重要的是硬盘分区表(MBR,Master Boot Record,包含硬盘主引导程序和硬盘分区表),它记录着硬盘分区的情况,每个分区从哪个地方到哪个地方,方便进行数据的存取,如果分区表破坏了,数据无法存取,硬盘就报废了。分区有三种类型:主分区,扩展分区,逻辑分区,主分区一般是指装系统的分区,但是不一定,你可以把系统装载其他分区,DiskGenius可以把某个分区激活为活动分区,就是这个意思。扩展分区一般指的是不装系统的主分区。而逻辑分区是

13、在扩展分区上分出来的分区。不管是什么系统,主分区+扩展分区的总和不能超过4个,因为硬盘分区表只能记录4条数据。但是为什么我们的电脑可以有n个分区呢?因为我们的电脑一般是这种情况,一个主分区装系统,一个扩展分区,在扩展分区上,我们会分出好多的逻辑分区,这个数量不限,所以表面上,你会得到n个分区,我们直接使用的是主分区和逻辑分区,而扩展分区只是一个概念,它是逻辑分区的基体。在每个扩展分区上,又有一个分区表,记录着每个逻辑分区的情况,逻辑分区之间是互不干扰的,可以有自己的文件系统。事实上,我们将linux装在一个文件夹中并不考虑,应该专门腾一个分区出来安装。linux系统把机器中的所有设备都当做是文

14、件的形式来处理,这些文件分为字符文件和二进制文件(块文件),其实是按照这些设备读取数据的方式来区分的,键盘,打印机等等字符为单位读取的设为为字符设备,分别映射成Linux中的一个字符文件;硬盘,U盘,光驱等以数据块方式读取数据的设为称为块设备(block driver),映射到linux中块文件。将这些设备映射为文件的原因是编程方便,把跟底层的设备交互变成了跟文件的数据交互,比如你想让打印机打印东西只需要向相应的文件中写入数据即可。分区的命名。linux中分区的命名不像windows的c,d,e,f.盘顺着来命名,而是根据硬盘的类型,硬盘所在的接口,硬盘中分区的情况来命名的,而且对于分区的命名

15、,用户无权过问,完全由linux的命名规则决定。首先是硬盘的类型,分为hd和sd,分别代表IDE和SCSI硬盘,不过我们是用虚拟机启动的linux,虚拟机把我们的硬盘类型统一认为是SCSI的,所以分区的前两个字母是sd。然后是硬盘插在哪个接口上,linux机器的主板上的硬盘接口是a,b,c,d.排列的,那么插在第一个接口上的IDE硬盘就是hda,一般称为第一块IDE硬盘,插在第二个接口上的SCSI硬盘是sdb,一般称为第二块SCSI硬盘。最后用数字代表分区,1,2,3,4必须是主分区或者扩展分区,而逻辑分区永远从5开始。所以/dev/hda3中的hda3就是某个分区的全称了,它表示第一块IDE

16、硬盘的第三个主分区或者扩展分区,而/dev/sdb6,表示第二块SCSI硬盘的第二个逻辑分区。下面的图解析磁盘分区很直观,截下来:windows分区:windows和linux分区命名对比:3. 下面开始,就应该学习linux的一些基本命令了。【startx】进入linux图形界面。如果开机启动linux进入命令行状态,你想进入图形界面状态时可输入此命令。 linux中的图形界面称为xwindow,所以startx是启动xwindow的意思。进入图形界面后,我们依然可以启动一个命令行终端,像windows中启动cmd一样,在linux桌面中右键open terminal即可:【cd /】进入根

17、目录。linux的根目录就是”/”,cmd也可以输入cd /,进入的是C盘,而linux中没有什么盘什么盘的,它是从根目录/开始旅程的。cd后面可以跟绝对路径,也可以跟相对路径,跟绝对路径就是把从/开始到目标目录的路径写全了,跟相对路径就是一级一级的进入下一个目录,而不是跟路径。cd .返回上层目录,cd .是当前目录,你也可以在.或.后面跟一条路径,也是一种相对路径的做法。【pwd】会显示一条完整的目录路径,告诉你当前处于什么位置。【whoami】告诉你当前使用的用户名。【ls】列出当前目录下的所有文件。相当于windows的dir吧。但是直接ls只会列出目录或者文件名,你根本分不清哪个是目

18、录哪个是文件,常用的参数有【ls -l】,它会竖排的列出每个目录或者文件的信息。如你在/dev目录下输入【ls -l】命令,就会看到非常丰富的文件类型的文件了(最左边的是文件类型+文件权限):文件类型是c开头,表示字符设备文件,如键盘。文件类型是l开头,表示链接文件,用ln命令产生的文件。文件类型是b开头,表示块设备文件,如硬盘,软驱。文件类型是s开头,表示套接口文件,如当我们启动MySQL服务器时,会产生一个mysql.sock的文件。文件类型是d开头的,就是我们最常见的目录文件。文件类型是-开头的,就是普通文件,如图像工具、文档工具等。用touch指令创建的文件。既然说到这里,就顺便把列出

19、来的其他信息也简单说明一下,上面的信息从左到右的含义分别是:【-rw-r-r-】 【1】 【root】 【root】 【585】 【Aug 16 18:43】 【yp.conf】【文件类型 属主权限 组权限 其他权限】 【(硬)链接数】 【所有者】 【用户组】 【字节数】 【日期 时间】 【文件名】。  这里说一下linux中的文件权限,我们知道ls -l列出的内容中,第一段内容必须有10个字符,第一个字符表示文件的类型,后面的9个字符,分成三组,三个字符一组,每一组都由r,w,x,-这四个字符组成,分别表示read,write,execute和null,第一组权限是拥有着

20、权限,第二组权限是同组用户权限,第三组权限是其他用户权限,对于每组权限,都必然是rwx的顺序排列,表示可读可写可执行,如果某一位字符上用”-”代替了,表示没有该权限,如-wx表示没有读的权限,以此类推。修改用【chmod】指令,chmod +w 1.txt表示为1.txt的三个权限组都加上write权限(也可以用-w,就是去掉write权限),而chmod u+w 1.txt表示仅为拥有者权限组加上write权限,因为u表示user,另外g表示group,o表示other,这样你就可以分别为同组成员指定权限,以及为其他成员指定权限。但是以上这种方式使用chmod效率太低了,不专业呀,下面我们要

21、使用一条chmod指令来改变所有权限组的所有权限,做法是chmod 753 1.txt,意思是,既然有三组用户权限,我就用三个数字去修改,当你把这三个数字转换为二进制数字时,就会发现,7111;5101;3011,每个数字都会转换为三个二进制数字,如果把每个二进制数字对应一位权限,1表示有该权限,0表示没有该权限,就能同时指定所有权限组的所有权限了。所以753的意思是,拥有者权限是rwx,同组权限是r-x,其他用户权限是-wx。当你要修改权限的时候,思路刚好是倒过来的,比如要把权限修改成r-x rwx r-,先变成对应的二进制数101 111 100,然后把每组的二进制数变成十进制即574。这

22、里顺便把修改文件所有者也说一下,用【chown】指令,表示change owner,使用方式【chown 用户名 文件名】,前提是该用户名已经存在。如:执行chown disalong 1.txt后变成:如果你修改了一个目录的所有者为A,那么该目录下创建的所有文件的所有者都是A了。【ls R】是树状结构列出目录结构。【cd dev】在根目录的基础进入dev目录,这个目录存放着所有设备的映射文件。输入ls命令后可以看到dev目录下的所有文件,这些文件都是以设备名来命名的,所以就印证了linux下的所有设备都是一个目录或者文件。现在你已经在dev目录下了,你看到很多的设备目录,如cdrom,你想进

23、入这些设备目录,是直接cd cdrom吗?不是,尽管linux把所有的设备都映射为dev目录下的目录,但是这些目录并不是随便直接就能进的,你必须将他们挂载后方可访问,所谓的挂载就是将设备目录和现有的普通目录关联起来,你通过访问关联后的普通目录就可以间接的访问设备目录了。原则上你可以把设备目录挂载在任何一个普通目录上,包括根目录,但是约定俗成的,我们会在/mnt/目录下新建一个目录对设备文件进行挂载,如挂载cdrom,就在/mnt/目录下新建一个名为cdr的目录,然后进行挂载操作,指令如下:解释上面过程,因为我是以普通用户disalong的身份启动的terminal(终端),所以我必须切换到管理

24、员身份才能进行下面的操作,因为新建文件夹等的操作就必须管理员身份,否则报“Permission denied”的错误,即不够权限,普通用户切换到管理员输入【su】,然后它会让你输入password,然后,下面的操作显示的用户名就是root了,当你用su来切换用户之后,默认的当前路径为该用户的主目录。如果你想切换回disalong,执行【su disalong】或者【exit】指令即可。接着我们进入/mnt/目录下,用【mkdir cdr】创建名为cdr的新目录(文件夹),mkdir是make dir的意思,创建新目录,删除某个空目录是【rmdir 目录名】,rmdir是remove dir的意

25、思,但是如果该目录不是空的,使用【rm rf 目录名】就可以删除连同该目录一起的所有子目录,当然,你也可以使用【rm r 目录名】,此时每删除一个目录它都会让你确定一下,一般不用。告诉你,-r这个参数很多命令都有,一般是表示递归(Recursion)操作的意思,比如删除,copy,move一个目录呀,如果这个目录不是空的,我们一般都要用-r命令来进行操作,表示递归的把该目录下的全部子目录都进行同样的操作,而-f则表示强制(force)的意思,所以rm -rf是强行递归删除。接着我们使用【mount /dev/cdrom /mnt/cdr】指令就可以将/dev/cdrom这个设备目录挂载在/mn

26、t/cdr目录上,mount是挂载的意思,挂载完成后会出现“mount: block device /dev/cdrom is write-protected, mounting read-only”这样一句警告,意思是虽然现在你可以访问cdrom了,但是它是只读的。然后我们进入cdr就可以ls出cdrom中光盘的所有内容,前提是此时虚拟机的cdrom中有光盘。那么不想挂载cdrom呢?先退出cdr文件夹,执行【umount /dev/cdrom】进行反挂载(卸载),否则会出”device is busy”的错误,因为你当前正在cdrom内呢,当然busy。这里有个概念叫挂载点(mount p

27、oint)指的就是上面的cdr目录。(进行反挂载后,可以使用【eject】命令来弹出光驱)。不单只cdrom呀,dvd呀,mouse呀等的设备有挂载点,硬盘中的每个分区也应该有挂载点,否则你访问不到分区中的内容。这是windows用户不习惯的地方,windows相当于把硬盘的分区帮你主动挂载在某个目录下,或者说给每个分区都绑定一个盘符,这样用户就根据盘符来访问分区中的内容,此时,目录和分区融为一体了。而在linux中,目录就是目录,硬件就是硬件,你要使用硬件,必须先将它挂载在目录中,像上面挂载cdrom的操作一样,你可以任何的硬件挂载在任何的目录中,也就是说,挂载点是任意的,然后你往挂载点中写

28、入数据,硬件就会记录着,下次挂载访问的时候,数据依然存在。当你卸载该硬件后,腾出的挂载点又可以挂载别的硬件,往硬件中写入数据,相当于挂载点就是水龙头,硬件就是桶,你可以用一个水龙头往所有的桶中装水,也可以为每个桶指定一个水龙头,每个桶习惯性的就去指定给它的水龙头中拿水。而一般的,我们不会只用一个挂载点去挂载所有的硬件,这样不方便记忆和管理,而是习惯为每个硬件指定一个挂载点,如果让我们手动分区,一般都会有下面这些区:自动分区会采取以下方案:上面这些目录说白了就是挂载点,当你把硬盘分成多个区,每个区就是可以对号入座的挂载在上面的这些目录上,从目录的名字你可以知道这个分区的大概功能,而根据这个功能,

29、有经验的人就可以判断这个分区需要多大空间,这样就能充分利用磁盘的空间。其实和我们装windows时分区的原理是一样的,用来装系统的,分配40g,装Database的分配30g,装Sofe的分配100g,装Learn的分配250g,把整个硬盘按需进行分配,方便管理和充分利用。区别在于windows的“挂载点”和分区(或所有硬件)都是一对一绑定的,而linux则挂载点和分区(或所有的硬件)每个是完全分开的,没有绝对的联系,只有当分区(或所有的硬件)挂载到挂载点后,两者才是绑定的,此时,windows和linux没有太大区别,不过linux的每个挂载点都可以挂载任何的硬件,显得比较灵活,但是使用上却

30、没有windows方便(这是我习惯了使用windows的原因?)。上面的哪个挂载点要挂载哪个硬盘分区,你应该心里有数,因为分区都是你自己分出来的,分区的大小也是你自己划定的,某个分区要做什么内容,你当然要心里有数,这样的话,你就知道该分区要挂载到哪个挂载点上了。至于分区挂载到挂载点后,会写入什么类型的内容,图片上已经写明了,但是,这只是linux的“建议”,当然,当你用久了,你就会习惯它这种建议,把软件装载/user分区中把临时文件放在/var分区中等等,不需要强背这些东西。【touch 文件名】,这个命令用于创建普通的文本文件,而不是目录。这个“文件名”要跟上后缀名吗?你可以跟,但是没有意义

31、,如touch 1和touch 1.txt在linux看来意思一样。也就是说,在linux中,文件的后缀只有提示意义,没有实际意义,它只能让你习惯性的觉得1.txt我最好把它当做文本文件,而1.exe我最好把它当做可执行文件,实际上1.txt可以是任何类型的文件,它可能是文本文件,也可能是可执行文件,所以并不像windows对文件后缀的严格规定,linux中的文件后缀没有技术意义,只有提示意义,你可以写,也可以完全不写,看你的习惯,反正没有意义。删除文件使用【rm -f 文件名】来执行。【cp】copy,拷贝文件。如【cp /1 /home/2】意思是将/目录下的1文件copy一份到/home

32、,并且命名为2。注意,这种格式只能copy文件,不能copy目录,若要copy目录,则加-r参数,如【cp r /a /home/b】,注意,/a必须是一个目录名。【mv】move,移动、剪切文件。和cp的用法差不多,不多说了。【vi】相当于windows中的notepad记事本。当我们用touch指令来创建一个文件,然后就可以用这个vi指令来打开了这个文件进行编辑了,如【vi 文件路径】,但是就算当前根本没有这个文件,你直接【vi 文件路径】,它也会帮你自动创建一个文件,原则是有则打开,没有则新建。打开记事本之后:刚开始进入记事本的时候,你想编辑内容,是不行的,因为linux的记事本有两种状

33、态,刚开始进入的是命令行状态,只能敲命令,不能编辑内容,敲命令前先敲”:”。如果你想编辑内容,要进入编辑状态,就是敲一下a就直接进入编辑状态了,你就可以输入任何字符了。当你输入完内容后想保存内容、退出记事本、想进行内容的大量选定、整行的删除等操作,你就必须回到命令行模式,敲一下Esc即可,同时记得输入命令前先敲”:”。记事本常用的命令有w(存盘),q(退出记事本回到终端,但是执行q前必须要存盘,所以一般使用的是wq保存并退出记事本,也可以执行q!表示不存盘退出),dd(删除整行),dw(删除一个单词),o(往下插入一行,相当于windows的End+回车,在插入一行的同时,记事本转成编辑状态,

34、你马上可以输入了),O(网上插入一行)。vi记事本的命令相当多,但是它也是我们远程修改程序必须掌握的东西,所以以后你可以将vi的指令用一张纸打印出来,经常看。【more】直接在终端中打印出文件的内容,如【more 文件路径】,打印的过程是分页的,空格键会显示下一页,回车键会显示下一行。【cat】也是直接在终端中打印出文件的内容,但是是一次性打印全部,不分页。【tac】是cat指令的倒序打印指令。也就是把文件的内容从最后一行开始打印到第一行。linux有些指令的命名是会把原指令的单词倒过来表示愿指令的倒序指令。【head】多用于把文件的前几行打印出来,如head -3 1.txt表示把1.txt

35、文件的前三行打印出来。【tail】多用于把文件的后倒数几行打印出来,如tail -3 1.txt,不解释了,和head指令相反的指令,不够这个指令更加实用,如果一个文件行数非常多,你想浏览最后的几行,用上面的指令打印是比较困难的,而这个指令就可以做到。【find】用于查找文件,目录等的内容。最常用的做法是find /etc -name *local,意思是我的本意是想找rc.local这个目录,我只记得它是etc目录下的某个子目录,所以find后面直接跟的就是从哪个目录开始找,然后-name参数是根据目录名来找,它还提供了其他参数根据时间,大小什么的来找.但是我也记不清我要找的目录具体叫什么了

36、,隐约记得是xxxlocal什么的,所以我用正则表达式去匹配它,也就是*local,find指令是完全支持正则表达式的,而且这里的正则表达式和javaScript一样,直接写的,不用转义字符。这就是上面指令的全部意思。【whereis】这个指令后面一般直接跟另外一个指令,目的是打印出该指令的执行文件所在的地址,如whereis ls,则得到ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz。其实windows和linux都一样,当你敲一个指令的时候,linux的内核会到环境变量指定的路径中取找对应的执行文件

37、。在linux下查看环境变量的指令是echo $PATH(实际上是【echo $环境变量名】来查看某个环境变量的值),它的环境变量的每个路径是用”:”来分开,而dos下看环境变量是echo %path%,环境变量的每个路径是用”;”来分割。在linux下可以执行【env】来查看所有的环境变量,添加一个环境便令的指令是【export 环境变量名=环境变量值】,删除一个环境变量的指令则是【unset 环境变量名】。【ln】为某个文件创建一个连接。分为硬链接和软链接。硬链接的创建方式是ln 1.txt 2.txt,意思是,把当前目录下的1.txt文件创建一个硬链接为当前目录下的2.txt文件,这个硬

38、链接实际上就是把1.txt文件copy一份到2.txt中,然后让这个两个文件产生关联,不管修改哪个文件,另一个文件都会随即修改。而另一种是软链接,创建方式是ln -s 1.txt 3.txt,加上了一个-s参数(创建出来的软链接是蓝颜色的,当软连接的原文件删除后,它变成了红颜色)软链接相当于windows的快捷方式,硬链接和软链接的区别就是,当原文件删除后,硬链接还可以打开编辑,而软链接则会报出“No such file or directory”的错误,因为硬链接是copy一份,它和原文件有关联,但不绝对依赖,而软链接只是一个快捷方式,它绝对依赖于原文件。还有一个区别是,硬链接创建之后,它是

39、一个文件,从ls -l可以看出:而软链接才是真正的一个连接类型的文件:【wc】指令,word count的缩写,用于统计一个文档中文本的字节数,行数,字符数等,用法很简单,以下是它的指令:执行举例:【grep】用于文件内容的搜索,如grep java 1.txt,它会在终端中打印出1.txt文件中含有java这个单词的所有行,很常用的命令。这个指令也是支持正则表达式的。但是使用正则表达式时要加双引号,如grep “正则表达式” 1.txt,而不是grep 正则表达式 1.txt,否则该正则表达式不起作用。【date】显示和设置日期时间。【stat】显示指定文件的相关信息。【who、w】显示在线

40、登陆用户。【id】显示当前用户的id信息。【hostname】显示主机名称。【uname】显示操作系统信息。【dmesg】显示系统启动信息。【du】显示指定的文件(目录)已使用的磁盘空间总量。【df】显示文件系统磁盘空间的使用情况。【free】显示当前内存和交换空间的使用情况。【fdisk -l】显示磁盘信息。【locale】显示当前语言环境。【col】过滤字符的作用。【wall】warning all的意思。它可以在某个终端中给其他所有终端发送一条警告信息,比如你启动两个终端,然后在其中一个终端中输入wall hello,那么所有终端都会先显示一个时间,然后显示hello:而如果你在一个终端

41、中输入wall date呢,注意”是数字1旁边的符号,那么就会将里面的字符当做指令先执行,把执行的结果作为警告语句发送给其他客户端。得到:也可以用管道来完成上面的操作,如date|wall。【quit】,【bye】一般都是用来退出某些终端,如mysql,ftp等。4. 用户操作相关的一些命令。【useradd】或者【adduser】都是添加用户的指令,前提是必须是root用户下使用(不能直接su切换到root哦,要用”su -“来切换,前者虽然切换成root了,但是没有把环境变量修改为root的环境变量,所以useradd指令访问不到,而”su -”则同时把root的环境变量添加进来了)。添加

42、用户后,在/home目录下会自动为每个新添加的用户生成一个和用户名同名的主目录,如:然后你more /etc/passwd文件,就可以看到linux系统当前的所有用户,当然拖到最后就可以看到你刚添加的用户,注意只是用户信息,而没有密码,如:上面的信息分别代表什么呢:【用户名disalong】【用户id500】【用户组编号500】【用户主目录/home/disalong】【用所用的shell是/bin/bash】这里补充一下shell是什么玩意,shell是“外壳”的意思,在linux内核的外层就包裹着不同版本的shell,每个版本的shell都提供一系列的指令给我们的终端使用,也就是说我们敲的

43、指令是通过shell让内核工作的,而不是直接和内核打交道。而不同版本的shell的指令是有区别的,也就是说同样指令,如果你所处的shell不用,很可能得不到同样的结果,当然,一些基础的指令还是通用的。shell的版本很多:csh,bsh,bash,ksh,sh等,我们一般用的是csh和bash,root用户默认使用的是bash,从提示符可以看出:而如果此时输入csh,则会自动切换到普通用户下,提示符也变为$:要查看用户组的信息执行more /etc/group,可以看到我们添加的用户所在的组信息:当你添加用户时不为该用户指定一个用户组,那么默认会生成一个与该用户用户名相同的组。添加用户组的指令

44、是【groupadd 组名】,删除用户组【groupdel 组名】,但是删除该组之前要确定该组的用户已经删除,在添加用户的时候可以为它指定组【useradd 用户名 -g 用户组】,你也可以把当前的用户移动的到别的组中【usermod -g 组编号 用户名】。【passwd】修改某个用户的密码,直接在指令后面加上用户名即可。【userdel】删除用户,后面跟用户名即可。但是删除用户之后,该用户的主目录还在,所以你还应该把该用户的主目录也删掉。 5. 关于开机关机指定的一些命令。【login】登录。切换到root用户可执行,其实是bash可执行。【logout】注销。redhat不支持,用exi

45、t代替。【exit】退出当前终端。如果你用su命令切换到其他的用户终端,那么指定exit指令会从其他用户终端中退回到原来的用户终端。【shutdown】关机。redhat不管用。【reboot】重启。【init】切换系统运行层次,也就是上面所说的7个层次。不过在redhat中貌似不管用。连续敲5下Esc会显示Linux中的1805个可使用的命令,如果你不想看了,可以按【q】或【ctrl+c】或【ctrl+d】退出。【clear】清屏,其实就是把屏幕往下拉,拉出一块空白的屏幕,之前的内容你直接往上拉,还是会看到。dos中是cls。6. 帮助命令。当你知道某个命令,但是不知道该命令有哪些参数时,有

46、三种方式可以让你得到帮助:1. 直接使用该命名,出错了,会有一系列的提示。2. 在给命令后面加【-help】或者【-?】就能得到帮助。3. 在命令前面加【man】也会列出更详细的解释,包括对所有参数的使用说明等等一大段东西。q指令退出。以man shutdown为例:/sbin/shutdown -t sec -arkhncfF time warning-message会得到这样一段使用示例,在里面的是可选参数,也就是可以写可以不写,而没有在里面的参数,像上面的time就是必须要的参数,对于每个参数的使用示例,man中内容会具体说明。-t sec这种是可选参数,sec是-t参数的值7. lin

47、ux的默认目录结构以及用途(大概浏览):8. linux的启动顺序。简略的介绍一下上面启动的每一步。1.加载bios(buy鹅死)的过程,其实就是检测硬件的过程,运行固化在硬件本身的程序,系统加电后首先运行的是这套程序;2.读取MBR的内容寻找要启动的操作系统(有的硬盘好几个操作系统);3.从MBR中确定启动某个操作系统后,找到该系统所在的磁盘分区,并加载该系统的核心文件;4.对于linux系统,运行它的第一个进程init进程;5.接着执行/etc/rc.d/目录下的 sysinit进程,etc是linux的核心目录,很少去动,否则很可能就进不去了,rc.d目录的全称是run command

48、daemon,这下面装的全部是启动需要的底层守护进程;6.启动其他模块程序,如内存管理模块,硬盘管理模块等;7.执行启动层次脚本,前面是linux的内核启动过程,接着你要进入系统,但是linux的系统分为多个层次:第零个层次是直接关机,第一个层次是只有root管理员的状态,第二个层次是多用户状态(没有网络文件系统),第三个层次是我们一般使用的纯命令行状态,多用户且有网络文件系统,可以和其他机器联网进行文件共享的状态,第四个层次估计是待机状态吧,而第五个层次是图形界面状态,第六层次是重启状态。层次脚本中记录着linux加载完成后默认进入的层次状态,也就决定你启动linux后直接进入的状态;8.执

49、行开机自启动脚本,我们可以在这里指定让某些程序开机自启动;9.执行登录程序,输入用户名,密码;10.系统启动完毕。当前系统的默认启动层次是5,也就是启动或直接进入图形界面,但是实际开发中我们并不需要再图形界面中操作,所以我们要修改系统的默认启动层次为3,直接进入纯命令行的界面。做法是修改/etc/inittab文件,修改之前注意要先备份,用vi打开该文件,找到id:5:initdefault:这行内容,将其中的5改成3,然后保存退出,重启即可。9. 管道。非常常用的功能。用”|”连接多条指令,也就像管道一样把这些指令连接起来,如”指令1|指令2|指令3|.”,意思是”|”前面的内容执行完后,执

50、行结果作为基础交给”|”后面的指令继续执行,以此类推。或者说将|前的指令的输出作为|后的指令的输入。例子:ls -R /|more如果直接执行ls -R /则会把/目录下的文件全部以树状形式列出,不会分页,如何让它分页显示呢?加一个管道|more即可,管道前树状列出所有信息,把这些信息交给管道后面的指令处理,也就是将这些信息进行分页显示。注意,我们使用管道一般是配合grep来执行,而不是用find,如chkconfig -list | grep vsftpd,之前认为grep是查询某个txt文件中的内容,但是管道前半段的执行结果其实就是当做文本传给管道后面的指令的。而不是用find,find是

51、搜索文件地址。10. 重定向(用得并不多)。在java中有一个System.setOut()方法,用于将System.out.println()方法的打印地点重定向为其他地方。而linux的重定向也差不多,使用【>】【>>】这两个特殊字符。比如说我们平时ls指令的时候,所有的内容是打印在终端的,现在我们想让这些内容打印在一个cmd.txt文件夹中,我先su -进入root身份,然后执行:ls > cmd.txt那么当前目录下会自动创建一个cmd.txt文件,里面就有ls指令执行的内容,我们more cmd.txt就可以看到。而:ls >> cmd.txt又是

52、什么意思呢,很简单,>永远都是先把cmd.txt文件的内容清空,然后再输入内容,所以永远只有一份内容。而>>是在原有的内容上进行累加。而如果我执行的命令有误,如:lssss > cmd.txt输出的结果是:-bash: lssss: command not found,表示lssss这个命令是错误的,所以它不会把错误的内容重定向到cmd.txt中,如果你依然需要把错误的内容进行重定向,那么要使用【2>】来重定向:lssss 2> cmd.txt那么此时你在more cmd.txt得到的就是-bash: lssss: command not found了。上面

53、介绍的是重定向输出,还有重定向输入,使用【<】,如:wall < cmd.txt意思是将cmd.txt的内容读取出来,输入给wall指令执行,很简单。11.搭建vsftp服务器。学习如何把本地的文件上传到linux服务器上,有两种方法,一种是文件的共享,也就是让linux中的文件夹和window的文件夹共享,然后两台机器对拷,使用到一个叫SAMBA的软件,但是先说明,这种情况基本不用,因为文件共享的机器必须在同一个局域网中,而一般的linux服务器在远程,如电信,联通等的机房中,很少在同一个局域网中。另一种是通过FTP服务器来传输,而FTP服务器又分两种情况,是把FTP服务器搭建在

54、本地机器上,让linux服务器去本地机器中下载,还是把FTP搭建在linux服务器上,让本地机器将文件上传,选择后者。因为如果本地机器做FTP服务器,linux服务器根本没有办法访问本地机器,因为本地机器一般没有真实的IP,比如我们的家用机,是铁通分下来的虚拟IP而已,真实的IP在铁通的机器上,就算公司的机器,也不可能每台机器都有真实的IP吧,而linux服务器则拥有真实的IP,所以你能远程访问它,它不能访问你,所以选择把FTP服务器搭建在linux服务器上。linux中的ftp服务器种类非常多,但是redhat中默认已经帮你安装了一个ftp服务器,叫vsftp,其实不然,你要具体检查一下你的

55、redhat才知道它究竟有没有帮你装上vsftp,方法是输入【rpm -qa | grep ftp】,下面会对【rpm】指令做具体的介绍,得出的结果是:从查询结果中我们可以看到vsftp以及它的版本号,所以可以确定vsftp已经装上了。但是,如果你没有得到任何关于vsftp的结果,说明redhat没有默认帮你装vdftp,我就是这种情况,所以要你自己进行安装。安装的方法也很简单,在rehat as 4的第一张安装光盘中,你是可以找到vsftp的安装文件的,我们在虚拟机的光驱中插入第一张光盘后,挂载该光盘到/mnt/cdr目录下,然后进入/mnt/cdr/RedHat/RPMS目录下,用find

56、 vsftp*就可以找到安装文件:我们看到vsftp的安装文件是vsftpd-2.0.1-5.i386.rpm,那么在该目录下执行【rpm -ivh vsftpd-2.0.1-5.i386.rpm】,就可以完成vsftp的安装。【这里解释一下【rpm】指令,rpm(redhat package management)是redhat公司开发的程序管理器,主要进行程序的安装和卸载的管理,非常好用,rpm出来后,可以摒弃以往的源码安装程序的繁琐,各种软件提供商都会把软件打包成.rpm格式供用户下载安装,它和.bin格式的安装文件同样受欢迎。我们可以通过rpm来查看当前系统中已经安装的所有程序:【rp

57、m -qa】,就会列出所有的安装程序的名字,如果我想查询有没有安装jdk,我可以执行【rpm -qa | grep jdk】,这是非常常用的用来查询系统中是否安装了某个软件的指令,要卸载文件用【rpm -e 软件的名字】指令,“软件的名字”指【rpm -qa | grep jdk】查出来的内容,这里查出来的是jdk的软件名字,根据这个名字你可以卸载jdk,还有强制卸载什么的,用到去网上查。要安装.rpm类型的文件可以用【rpm -ivh .rpm文件名】。】完成了vsftp的安装只是第一步,下一步是启动vsftp服务,你要注意的是,我们使用的linux身为一台服务器,它上面跑的绝大部分程序都是

58、服务器器程序,都是对外提供服务的,要让他们对外提供服务,就要先启动服务,用【service vsftpd start】就可以启动vsftp服务器。【service】指令是针对服务器程序启动(start),关闭(shut),重启(restart)等操作的重要指令,用法很简单,不多解释了。注意,你要启动的是vsftpd进程,而不是vsftp进程,linux中的服务器进程一般都是xxxd,最后的d是daemon的意思,以前说过。启动vsftp服务器之后,紧接着你必须验证一下它有没有启动成功,如何验证,有可能你会想,用远程的机器来连接ftp就可以验证了,但是这是不严谨的做法,因为有太多的外界因素影响,比如网络通不通,防火墙等等的问题,现在我们仅仅是要验证vsftp服务器是否启动成功,只需要在linux本机连接一下vsftp即可,在linux中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论