Linux是什么:
Linux是一套操作系统。Linux就是内核与系统调用接口的那两层。
内核负责控制硬件资源分配,而如果只有内核,则只能让计算机硬件运行,而不能有任何功能,因此需要系统调用提供给开发者使用,从而开发应用程序;
内核能够控制硬件,比如:让CPU可以运算、让硬盘可以读写数据等;只有内核的话,只能让计算机运行,但是我们不能控制计算机;
而系统调用是操作系统提供给开发者的调用接口;
任何硬件都不会默认就被操作系统控制,而需要开发商根据操作系统提供的接口开发驱动程序,只有安装了驱动程序才能够控制硬件设备;
Linux之前UNIX的历史:
Unix一开始是开源的,后来AT&T收回版权,并且不公开源代码;
Unix的代码是由90%的C语言和10%的汇编组成;
Unix后来的两大分支:AT&T的System V和BSD;
一、Linux的简介与发展
1.简介
Linux系统是一款免费的,开源的,多用户的,多线程的操作系统。
Linux核心理念:万物皆目录;
Linux:是一个内核,而不是一个操作系统;因此我们平常说的“操作系统用的是Windows、Mac还是Linux啊?”是错误的,Ubuntu、Fedora等才是操作系统的名字,他们都使用Linux内核;
1991年最初由Linus Torvalds针对386(个人计算机)开发;Linus Torvalds那时是芬兰的一名研究生;
Unix Like:很像Unix的操作系统;
苹果电脑为什么现在能装Windows操作系统?因为苹果使用了Intel的X86架构,而windows也是针对此架构的,因此按理论来说一般的PC上也可以安装mac操作系统;
Linux的吉祥物是企鹅(英文名:Tux),因为Torvalds在小时候被企鹅咬过,因此印象非常深刻;
Unix和Linux的代码是由90%的C语言和10%的汇编组成,因此只需要稍加修改,就能移植到其他硬件上;
2.Linux的发展
Unix是用90%的C语言和10%汇编语言混合编写的,因此对于硬件平台的移植时还是需要更改代码,因此各个公司都推出了针对自家机型的Unix系统;
到了AT&T System V第七版时,终于推出了针对X86的Unix,因此终于能够在个人计算机上安装Unix,但是有一条规定:“不能向学生公开源码”,因此Tanebaum教授就不看Unix源码,编写了兼容Unix的针对X86的Minix操作系统;
因为Minix只是教学使用,因此功能并不强,因此Torvalds利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核-v0.02,但是一开始Linux并不能兼容Unix,即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致,因为Unix是遵循POSIX规范的,因此Torvalds修改了Linux,并遵循POSIX(Portable Operating System Interface,他规范了应用程序与内核的接口规范);
一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件;
二、文件系统
1.文件系统的简介
首先回答最常见的问题,“什么是文件系统”。文件系统是对一个存储设备上的数据和元数据进行组织的机制。由于定义如此宽泛,支持它的代码会很有意思。正如前面提到的,有许多种文件系统和媒体。由于存在这么多类型,可以预料到 Linux 文件系统接口实现为分层的体系结构,从而将用户接口层、文件系统实现和操作存储设备的驱动程序分隔开。
2.目录树的介绍
Linux系统的文件组织结构是:树状图。
树状图的优点:特别适合管理数据和存取数据,像图书馆一样,先按照
书架将书籍分成大类别,然后再逐步细分...
/:根目录,位于Linux文件系统目录结构的顶层。通常根目录下只存放目录,不存放文件,/etc,/bin,/dev,/lib,/sbin应该和根目录放置在一个分区中。包含了几乎所的文件目录。相当于中央系统。进入的最简单方法是:cd /。
/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。可以被root与一般账号所使用,主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命令
/boot: 该目引导程序,内核等存放的目录。Linux kermel常用的文件名位vmlinuz,如果使用的是grub这个引导装在程序 ,则还会存在/boot/grub这个目录。建议单独分区,分区大小100M即可。
/dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备(终端、磁盘驱动器、光驱及网卡等,包括字符设备和块设备)等,常用的是挂载光驱mount /dev/cdrom/mnt。
/etc: 系统配置文件目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件。FHS建议不要放置可执行文件(binary)在这个目录中。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。
/home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,~表示当前用户的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。~dmtsal:则代表dmtsal的主文件夹。
/lib:根目录下的所程序的共享库目录。系统最基本的动态连接资源库,内核模块文件目录。类似于Windows上面的system32目录。理说,这里存放的文件应该是/bin目录下程序所需要的库文件的存放地,也不排除一些例外的情况。类似的目还/usr/lib,/usr/local/lib等等。
/lost+fount:恢复文件存放的位置。 在EXT2或EXT3文件系统中,系统意外崩溃或意外关机时,产生的一些文件碎片放在这里。当系统重新启动时,fsck工具会检查这里,并修复已经损坏的文件系统。可能就会在这里被找到了,这个目录一般为空。
/mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点。这个目录一般是用于存放挂载储存设备的挂载目录的,比如磁盘,光驱,网络文件系统等,当我们需要挂载某个磁盘设备的时候,可以把磁盘设备挂载到这个目录上去,这样我们可以直接通过访问这个目录来访问那个磁盘了。一般来说,我们最好在/mnt目录下面多建立几个子目录,挂载的时候挂载到这些子目录上面,因为通常我们可能不仅仅是挂载一个设备吧?
/opt: 给主机额外安装软件所摆放的目录。可择的文件目录。
这个目录表示的是可择的意思,些自定义软件包或者第方工具,就可以安装在这里。比如在Fedora Core 5.0中,OpenOffice就是安装在这里。些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以把它们的安装路径设置成/opt这样来安装。这个目录的作用一点类似/usr/local。
/proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。
/root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。系统管理员(就是root用户或超级用户)的主目录比较特殊,不存放在/home中,而是直接放在/root目录下了。
/sbin:超级用户可以使用的命令的存放目录。
存放大多涉及系统管理的命令(例如引导系统的init程序,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令(但是时普通用户也可能会用到。这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin等目录是相似的,我们要记住,凡是目录sbin中包含的都是root权限才能执行的,这样就行了。后面会具体区分。
/tmp: 存放系统产生的临时文件,因此重要文件不要放在此目录下。
/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。
/usr/lib
目标库文件,包括动态连接库加上一些通常不是直接调用的可执行文件的存放位置。
这个目录功能类似/lib目录,理说,这里存放的文件应该是/bin目录下程序所需要的库文件的存放地,也不排除一些例外的情况。
/usr/bin
一般使用者使用并且不是系统自检等所必需可执行文件的目录。
此目录相当于根文件系统下的对应目录(/bin,非启动系统,非修复系统以及非本地安装的程序一般都放在此目录下。
/usr/sbin
管理员使用的非系统必须的可执行文件存放目录。
此目录相当于根文件系统下的对应目录(/sbin,保存系统管理程序的二进制文件,并且这些文件不是系统启动或文件系统挂载 /usr 目录或修复系统所必需的。
/usr/share:存放共享文件的目录。
在此目录下不同的子目录中保存了同一个操作系统在不同构架下工作时特定应用程序的共享数据(例如程序文档信息)。使用者可以找到通常放在 /usr/doc 或 /usr/lib 或 /usr/man 目录下的这些类似数据。
/usr/include:C程序语言编译使用的头文件。
linux下开发和编译应用程序所需要的头文件一般都存放在这里,通过头文件来使用某些库函数。默认来说这个路径被添加到了环境变量中,这样编译开发程序的时候编译器会自动搜索这个路径,从中找到你的程序中可能包含的头文件。
/usr/local:安装本地程序的一般默认路径。
当我们下载一个程序源代码,编译并且安装的时候,如果不特别指定安装的程序路径,那么默认会将程序相关的文件安装到这个目录的对应目录下。例如,安装的程序可执行文件被安装(安装实质就是复制到了/usr/local/bin下面,此程序(可执行文件所需要依赖的库文件被安装到了/usr/local/lib目录下,被安装的软件如果是某个开发库(例如Qt,Gtk等那么相应的头文件可能就被安装到了/usr/local/include中等等。也就是说,这个目录存放的内容,一般都是我们后来自己安装的软件的默认路径,如果择了这个默认路径作为软件的安装路径,被安装的软件的所文件都限制在这个目录中,其中的子目录就相应于根目录的子目录。
/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。
/sys:这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。
3.绝对路径和相对路径
在linux系统中,尤其是在命令行界面上,我们在访问文件/目录一定是涉及到路径的问题。
路径的写法有两种:
- 绝对路径:一定从根目录 / 开始写起。
- 相对路径:相对于目前工作目录的路径
- . :指代的是当前目录(当前位置)
- .. :指代的是上一级目录(父目录)
- cd命令:是切换目录的作用,相当于鼠标
- ls命令:显示目录内的文件和目录
- pwd命令:显示工作路径的绝对路径
1,什么是路径:你要去哪的路线嘛。如果你想要去哪个目录或者是去找哪个目录里的文件,那就用路径来找到了。注意:目录本身也是文件
2,在Linux中使用.来表示当前目录,使用..来表示上一级目录。-表示上次所在目录,~表示当前用户的“home”目录。使用命令pwd可以获得当前所在路径。注意是绝对路径。
3,绝对路径就是以根“/”目录为起点,以你所到达的目录为终点,表现形式为/usr/local/bin。
4,相对路径是以你当前的目录的路径。相对路径是以你当前的.目录为起点,以你到达的目录为终点的路径。比如:usr/local/bin这里假设当前目录为根目录。注意:表示相对路径时我们并没有加上表示当前目录的那个.,而是直接以目录名usr开头,因为这个usr目录是在根目录“/”下,可以省略那个.。
5,要进入哪个目录使用相对路径和绝对路径都可以。当然是哪个方便使用哪个了。比如我当前在/usr/local/bin下,要进入上一级目录当然是使用cd ..比使用cd /usr/local方便,而如果要进入usr目录,当然是使用cd /usr比cd ../..方便。
4.文件类型
- ‘ - ’ :普通文件
- ‘ d ’ :目录文件
- ‘ l ’ :软连接文件
- ‘ c ’ :字符文件,二进制
- ‘ b ’ :块存储设备,快文件,设备文件。
- ‘ p ’ :管道文件,在做io操作,由于错误产生的文件
- ‘ s ’ :socket文件 套接字文件
file: 查看文件类型
stat:格式: stat 文件名/目录名
显示的数据更详细
5.文件属性
查看方式:ls -l
文件的属性 有七列信息
[1] d 类型(目录)
[2] rwx---rwx 权限
r 对于文件,是否可以查看文件内容 对于目录,是否可以查看该目录下文件/目录的名称
w 对于文件,是否可以修改文件内容 对于目录,是否可以新建、删除、重命名该目录下的文件
x 对于文件,是否可以执行文件中记录的程序 对于目录,是否可以进入该目录中
[3] 3 子目录个数
[4] kiosk 目录拥有者
[5] kiosk 目录所在组
[6] 33 目录或文件中内容的属性大小
[7] Aug 27 09:47 目录中文件增加或减少或被更名的时间 [8] directory 目录名称