LINUX基础知识.docx
《LINUX基础知识.docx》由会员分享,可在线阅读,更多相关《LINUX基础知识.docx(10页珍藏版)》请在冰豆网上搜索。
![LINUX基础知识.docx](https://file1.bdocx.com/fileroot1/2022-12/31/bec1bfb0-b9c9-4992-b841-912434fef051/bec1bfb0-b9c9-4992-b841-912434fef0511.gif)
LINUX基础知识
LINUX基础知识
LINUX是什么?
诞生:
1990年,芬兰大学生LinusTorvalds用汇编语言写了一个在80386保护模式下处理多任务切换的程序。
发展:
他把源代码发布在网上,随即就引起爱好者的注意,他们通过互连网也加入了Linux的内核开发工作,一大批高水平程序员的加入,使得Linux达到迅猛发展
Linux一开始是要求所有的源码必须公开,并且任何人均不得从Linux交易中获利。
然而这种纯粹的自由软件的理想对于Linux的普及和发展是不利的,于是Linux开始转向GPL,成为GNU阵营中的主要一员。
成长:
1993年加入GPL(GeneralPublicLicense)
现在,Linux凭借优秀的设计,不凡的性能,加上IBM、INTEL、CA、CORE、ORACLE等国际知名企业的大力支持,市场份额逐步扩大,逐渐成为主流操作系统之一。
Linux是一套免费使用和自由传播的操作系统,它主要用于基于Intel系列CPU的计算机上。
这个系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux是一种优秀的操作系统,支持多用户、多线程、多进程,实时性好,功能强大而稳定。
同时,它又具有良好的兼容性和可移植性,被广泛应用在各种计算机平台上。
LINUX系统结构
硬盘
硬盘是可以存储大量信息资源的媒介。
现在的硬盘越来越大,存放的资源越来越多。
为了更合理的管理使用硬盘资源,更有效的提高查询速度和访问质量,我们可以把硬盘划分为很多分区,分别存放一些信息。
当你需要读取某一个资料的时候,系统会自动使用最近的磁头去读取,加快读取速度。
硬盘分区是从硬件的基础上对资源进行合理管理的手段。
分区已经了解了,但是我们不能只有分区啊,我们得用一个方法来控制分区。
Windows操作系统使用了盘符这个概念,用单一的字母来表示硬盘上的不同分区,比如,C盘,D盘等等。
在Windows2000以前,C盘对应了第一个分区,D盘对应第二个分区,依此类推。
到了Winows2000,这个对应关系可以自己调整了。
在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。
为了保证文章的完整性,简单说说目录吧,其实大家都很清楚的。
如果我们把数以万计的水果扔在一个箩筐里面是不是很难找?
但是如果我们把苹果放在叫做苹果的箩筐里面,把梨放在叫做梨的箩筐里面……这样是不是大大简化了我们寻找指定水果的速度?
这些水果如果是我们的文件,那么我们用的箩筐就叫目录。
新的问题出现了,即使把桃子扔在叫做桃子的箩筐中,我们仍然很难从好几千个桃子里面找出来自四川成都龙泉驿的桃子啊。
聪明的你一定想到在桃子的箩筐中再放入很多叫做四川啊,河北啊,广州啊这些名字的箩筐,把不同产地的桃子放进去。
对!
就这样!
我们在一个文件目录下面可以再建立新的文件目录,把文件进行非常细致的管理。
到这里你明白了什么叫做目录,还明白了目录是可以嵌套的,这就可以了。
目录技术是从软件的基础上对资源进行管理的方法。
回到Linux对于硬盘的管理里面来:
在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。
把每一个分区和某一个目录对应,以后对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。
这个把分区和目录对应的过程叫做挂载-mount。
这种对应关系可以由用户随时中断和改变。
SWAP交换分区
分区的知识大家已经熟习了,这里需要提一下交换分区。
我们如果没有足够的内存,也许就不能运行某些大型的软件,解决的办法是在硬盘上划出一个区域来当作临时的内存,好像内存变大了。
Windows操作系统把这个区域叫做虚拟内存,Linux把它叫做交换分区swap。
虽然随着硬件价格的下降内存已经不大会限制我们了,但是交换分区这个概念却保留下来,而且有继续保留下去的原因,当然涉及到内核的问题,我们不多讨论,我们要说明的是,安装Linux时候建立交换分区时,如果你的内存只有64M或则128M,那么交换分区最好设置成为它的3倍,如果你的分区足够大,有256M或则512M,那么设置成为相同大小就可以了。
但是请注意,最好大小为2的N次幂的数字。
分区格式
今天说了好多的与硬盘有关的问题,现在还要补充一个,就是分区格式。
硬盘只是一个用电磁的方式纪录信息的媒介,我们可以通过不同的格式来管理。
不同的操作系统选择了不同的格式,同一种操作系统也可能支持多种格式。
微软的操作系统选择了fat16格式作为DOS的分区格式,往后windows95和windows98支持fat32格式,windowsNT使用NTFS4格式,windows2000以及XP支持NTFS5,也支持fat32,但是她们都不支持Linux上常见的分区格式。
Linux是一个开放的操作系统,它最初使用ext2格式,后来使用ext3格式,但是它同时支持非常多的分区格式,包括很多大型机上UNIX使用的XFS格式,也包括微软的那些fat以及NTFS格式。
在给硬盘分区时就需要指定使用的分区格式。
掌握Linux的目录结构
既然目录是用来方便文件管理的工具,那么Linux下面不同的目录到底保存了哪一类的文件呢?
目录名称意义
/bin该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。
/boot该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息
/dev该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。
例如在系统中键入“cd/dev/cdrom”,就可以看到光驱中的文件;键入“cd/dev/mouse”即可看鼠标的相关文件。
/cdrom该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下,例如“mount/dev/cdrom/cdrom”
/etc该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin该目录用来存放系统管理员的系统管理程序。
/home如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。
/lib该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库
/lost+found该目录在大多数情况下都是空的。
但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
/mnt该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的
/root如果你是以超级用户的身份登录的,这个就是超级用户的主目录
/tmp用来存放不同程序执行时产生的临时文件
介绍bashshell
如果您使用过Linux系统,那么您知道当登录时,将会看到像这样的提示符:
$
您所看到的特殊的提示符可能看起来很不一样。
它可能包含系统的主机名、当前的工作目录名,或者两者都有。
但是不管这个特殊的提示符看起来像什么,有一件事是肯定的。
打印出这个提示符的程序叫“shell”,极有可能您的特殊的shell是一个叫bash的程序。
您可以通过输入下面的命令来检查您是否正在运行bash:
$echo$SHELL
/bin/bash
如果上面的命令行报错或者不会类似地响应我们的示例,那么您可能正在运行一个不同于bash的shell。
关于bash
Bash是“Bourne-againshell”的首字母缩写,它是大多数Linux系统缺省的shell。
shell的任务是执行您的命令,使您能够与Linux系统进行交互。
当您输完命令,您可以通知shell执行exit或logout命令,在此您将返回到登录提示符。
顺便提一下,您还可以通过在bash提示符下按control-D来注销。
使用“cd”
您可能已经发现,目不转睛地盯着bash提示符可不是世界上最让人感到有劲的事。
那么,让我们来开始用bash来浏览我们的文件系统。
在提示符下,输入下面的命令(不包括$):
$cd/
我们只告诉bash您想在/(也称为根目录)中工作;系统上的所有目录形成一棵树,/被认为是这棵树的顶部,或者是根。
cd设置当前您正在工作的目录,也称为“当前工作目录”。
路径
要看bash的当前工作目录,您可以输入:
$pwd
/
在上面的示例中,cd的/参数叫做路径。
它告诉cd我们要转到什么地方。
特别是,/参数是一个绝对路径,意味着它指定了相对于文件系统树的根的位置。
绝对路径这里有几个其它的绝对路径:
/dev
/usr
/usr/bin
/usr/local/bin
您可以看到,所有绝对路径有一个共同点就是,它们都以/开头。
通过路径/usr/local/bin,我们告诉cd进入/目录,接着进入这个目录之下的usr目录,然后再进入local和bin。
绝对路径总是通过是否以/开头来判断。
相对路径
另一种路径叫相对路径。
在Bash中,cd以及其它命令总是解释那些相对于当前目录的路径。
相对路径绝不会以/开头。
这样,如果我们在/usr中:
$cd/usr
那么,我们可以使用相对路径来转到/usr/local/bin目录:
$cdlocal/bin
$pwd
/usr/local/bin
使用“..”
相对路径还可以包含一个或多个..目录。
..目录是指向父目录的专门目录。
那么,继续前面的示例:
$pwd
/usr/local/bin
$cd..
$pwd
/usr/local
您可以看到,现在我们的当前目录是/usr/local。
我们能够“后退”到相对于我们所在的当前目录的一个目录。
此外,我们还可以将\\\"..\\\"添加到一个现有的相对路径中,使我们可以进入与我们已在目录并排的目录,例如:
$pwd
/usr/local
$cd../share
$pwd
/usr/share
相对路径示例
相对路径可以变得相当复杂。
这里有几个示例,所有的都没有显示出结果的目标路径。
请试着推断一下,输入这些命令后,您最终将会转到什么地方:
$cd/bin
$cd../usr/share/zoneinfo
$cd/usr/X11R6/bin
$cd../lib/X11
$cd/usr/bin
$cd../bin/../bin
现在,试验一次,看看您的推断是否正确。
理解“.”
在我们结束cd的介绍之前,我们还需要讨论一些更多的内容。
首先,还有另一个叫.的专门的目录。
它表示“当前目录”。
然而该目录不为cd命令使用,它通常用来执行一些当前目录中的程序,如下所示:
$./myprog
在上面的示例中,驻留在当前工作目录中的myprog可执行文件将被执行。
cd和主目录
如果我们想要转到主目录,我们可以输入:
$cd
没有参数,cd将转到主目录,对于超级用户来说是/root,对于一般用户来说通常是
/home/username。
但是,如果我们想要指定一个主目录中的文件,将会怎样呢?
可能我们想要将一个文件参数传给myprog命令。
如果该文件在主目录中,我们可以输入:
$./myprog/home/drobbins/myfile.txt
但是,使用像这样的绝对路径并不总是很方便。
幸好,我们可以使用~(代字符)字符来完成同样的事:
$./myprog~/myfile.txt
其他用户的主目录Bash将把单独的~扩展为指向主目录,然而您还可以用它来指向其他用户的主目录。
例如,如果我们想要引用fred的主目录中的名为fredsfile.txt的文件,可以输入:
$./myprog~fred/fredsfile.txt
介绍通配符
在您日常的Linux使用中,有很多时候您可能需要一次对多个文件系统对象执行单一操作(比如rm)。
在这些情况下,在命令行中输入许多文件通常让人感到厌烦,为了解决这个问题,您可以利用Linux内置的通配符支持。
这种支持也叫做“globbing”(由于历史原因),允许您通过使用通配符模式一次指定多个文件。
Bash和其它Linux命令将通过在磁盘上查找并找到任何与之匹配的文件来解释这种模式。
因此,如果在当前工作目录中,您有从file1到file8的文件,那么您可以输入下面的命令来删除这些文件:
$rmfile[1-8]
或者,如果您只想要删除文件名以file开头的所有文件,您可以输入:
$rmfile*
理解不匹配
或者,如果您想要列出/etc中以g开头的所有文件系统对象,您可以输入:
$ls-d/etc/g*
/etc/gconf/etc/ggi/etc/gimp/etc/gnome
/etc/gnome-vfs-mime-magic/etc/gpm
/etc/group/etc/group-
现在,如果您指定了没有任何文件系统对象与之匹配的模式,会怎么样呢?
在下面的示例中,我们试图列出/usr/bin中以asdf开头并且以jkl结尾的所有文件:
$ls-d/usr/bin/asdf*jkl
ls:
/usr/bin/asdf*jkl:
Nosuchfileordirectory
这里是对所发生情况的说明。
通常,当我们指定一种模式时,该模式与底层系统上的一个或多个文件匹配,bash以空格隔开的所有匹配对象的列表来替换该模式。
但是,当模式不能找到匹配对象时,bash将不理会参数、通配符等等,保留原样。
因此,当“ls”不能找到文件/usr/bin/asdf*jkl时,它会报错。
此处的有效的规则是:
glob模式只在与文件系统中的对象匹配时才可以进行扩展。
常用命令
1.man对你熟悉或不熟悉的命令提供帮助解释
eg:
manls就可以查看ls相关的用法
注:
按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。
2.ls查看目录或者文件的属*,列举出任一目录下面的文件
eg:
ls/usr/man
ls-l
a.d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)
b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。
3.cp拷贝文件
eg:
cpfilename1filename2//把filename1拷贝成filename2
cp1.cnetseek/2.c//将1.c拷到netseek目录下命名为2.c
4.rm删除文件和目录
eg:
rm1.c//将1.c这个文件删除
5.mv移走目录或者改文件名
eg:
mvfilename1filename2//将filename1改名为filename2
mvqib.tgz../qib.tgz//移到上一级目录
6.cd改变当前目录pwd查看当前所在目录完整路径
eg:
pwd//查看当前所在目录路径
cdnetseek//进入netseek这个目录
cd//退出当前目录
7.cat,more命令
将某个文件的内容显示出来。
两个命令所不同的是:
cat把文件内容一直打印出来,而more则分屏显示
eg;cat>1.c//就可以把代码粘帖到1.c文件里,按ctrl+d保存代码。
cat1.c或more1.c//都可以查看里面的内容。
gcc-o11.c//将1.c编译成.exe文件,我们可以用此命编译出代码。
8.chmod命令权限修改用法:
chmod一位8进制数filename。
eg:
chmodu+xfilenmame//只想给自己运行,别人只能读
//u表示文件主人,g表示文件文件所在组。
o表示其他人;r表可读,w表可写,x表可以运行
chmodg+xfilename//同组的人来执行
9.clear,date命令
clear:
清屏,相当与DOS下的cls;date:
显示当前时间。
10.mount加载一个硬件设备
用法:
mount[参数]要加载的设备载入点
eg:
mount/dev/cdrom
cd/mnt/cdrom//进入光盘目录
11.su在不退出登陆的情况下,切换到另外一个人的身份
用法:
su-l用户名(如果用户名缺省,则切换到root状态)
eg:
su-lnetseek(切换到netseek这个用户,将提示输入密码)
12.whoami,whereis,which,id
//whoami:
确认自己身份
//whereis:
查询命令所在目录以及帮助文档所在目录
//which:
查询该命令所在目录(类似whereis)
//id:
打印出自己的UID以及GID。
(UID:
用户身份唯一标识。
GID:
用户组身份唯一标识。
每一个用户只能有一个唯一的UID和GID)
eg:
whoami//显示你自已登陆的用户名
whereisbin显示bin所在的目录,将显示为:
/usr/local/bin
whichbin
13.grep,find
grep:
文本内容搜索;find:
文件或者目录名以及权限属主等匹配搜索
eg:
grepsuccess*/*查找当前目录下面所有文件里面含有success字符的文件
14.kill可以杀死某个正在进行或者已经是dest状态的进程
eg;psax
15.passwd可以设置口令
16.history用户用过的命令
eg:
history//可以显示用户过去使用的命令
17.!
!
执行最近一次的命令
18.mkdir命令
eg:
mkdirnetseek//创建netseek这个目录
19.tar解压命令
eg:
tar-zxvfnmap-3.45.tgz//将这个解压到nmap-3.45这个目录里
20.finger可以让使用者查询一些其他使用者的资料
eg:
finger//查看所用用户的使用资料
fingerroot//查看root的资料