从零开始的linux 第三章
同学们~起床咯~~(小编拿着喇叭在宿舍楼下喊道)
美好的一天从...从赞小编的博客开始~~
(↓看见小编的同学们)
什么!?你们对着可爱的小编说什么!?再说一遍!!?
同学们:“还敢自称扛把子”
(↓受到惊吓的小编)
你们...你们要做什么...不要过来,小编还是个孩子...小编...小编不做扛把子的了...就想做一条咸鱼...留着小编还有价值,可以继续给你们讲课....
(突然出现的老师):“别急,让他讲,等他讲完再揍他!”
为什么小编给你们讲课还要被你们揍...小编不服!!
(拿枪指着小编)“少废话!快讲课!”
好啦同学们~~每日每周放松一次的时间结束啦~下面小编带大家进入这周的主题!
又一个周末要来啦~~是不是很期待小编这次讲的课呢,什么!?超级期待?!哼哼~那就对啦~~因为这次小编讲的东西,可是超乎你们的想象哦~(吐槽:吃瓜群众的瓜都吃完了,你到底讲不讲!)
唉??不要着急嘛,这么厉害的东西,就不能让小编多卖点关子吗?(吐槽:你是想多水几句话吧!!)
没有没有!小编怎么会水帖呢,小编的原则就是:坚决不水帖!!
嗯,对!坚决不水帖!小编这就带大家进入主题:
在第二章的时候,小编给大家讲了终端、如何切换终端、图形界面和命令行界面以及切换用户(su - username)和查看当前所在的终端(tty)、还有最后小编提到的 linux哲学思想
那接下来小编要讲什么内容呢?2333...(←大笑)别急,再让小编卖点关子(可把小编厉害坏了,叉会儿腰)好啦,关子卖完啦~小编继续讲咯~
这章呢,实际操作可能要少一点,因为小编个人认为,学习linux应该先了解一下在linux中有哪些文件,以及我们初步学习的时候如何去查看和进入这些文件(这里以及下面提到的“文件”都包含“目录”)中。
上一章小编讲过linux哲学思想,还记得第一条是什么吗?
路人甲:“在linux中一切皆文件”
嗯,答的好,奖励一朵小花~~上一章小编说过,linux中一切皆文件,那linux中的基础文件有哪些呢?小编接下来给大家讲一下文件系统:
linux中的文件,可以看成一个单根倒置的树状结构。所有的文件都从根开始,根在linux中表示为“/”(←这是正斜杠!)看到这个标志是不是有点熟悉呢?没错,就是小编第一个星期安装虚拟机,分区的时候分了一个“/”分区。这个就是文件的根,也是在linux中必须存在的。(其实小编分区的时候,那些分区出/app不是必须的以外,其他的都是必须存在的哦~)
为什么说是一个单根倒置的树状,因为,linux中所有的文件有在“/”下面,就相当于大家在windows中文件存放在C盘下、或D盘下,这里所有的文件都在“/”下
(为了方便大家理解,小编又跑去给你们画图,你们再也找不到像我这么好的小编惹~~)
文件名严格区分大小写。我们都知道,windows中,同一个目录下的文件名是不能同名的,在linux中同样如此(似乎...任何地方都不能同名),linux和windows文件名不同的是,在linux文件名中,严格区分文件名字母的大小写。小编在这里就不做示范啦~~同学们在windows中改一下文件名试一下,而linux中的创建文件和目录还没有讲(马上就讲到咯~),可以先不实验,记住就行啦~~
以“.”开头的为隐藏文件。小编还用windows来作比较,在windows中,想隐藏一个文件,我们直接右键然后点属性,之后点下面的隐藏。而linux中,创建文件或目录时候直接在名字前面加“.”即可(无法直接查看,需在命令上加一个选项才能查看,具体命令小标下面会讲到的)。小编觉得,这并非真正意义上的隐藏文件,应该是在linux中所有以“.”开头的文件默认不显示出来。。。
路径分隔符“/”。相信同学们都明白路径是什么,在windows中的路径分隔符为“\”(←反斜杠),linux中为“/”。
文件的两类数据:
元数据(metadata):指的是文件的属性(比如文件的大小,存放位置等等)
数据(data):文件的内容
文件名最多不超过255个字节。嗯,这个就不用解释了吧~谁都不会把一个文件名字弄到255个字节,那还算是人类嘛???
路径及其文件名总长不超过4095个字节。和上面一样,不会有人弄这么长的~~
好啦~~介绍完上面这些,我们来看看linux文件系统的结构:
FHS(Filesystem Hierarchy Standard)(这个网上可以搜到的哦~不过是英文)
/bin:所有用户可用的基本命令程序文件(我们所使用的命令有两种,一种只用是root用户才能使用的,另一种是所有用户都能使用。)
/sbin:供系统管理使用的工具程序
/boot:引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等(grub存放着系统的模块,其他的...额...小编也不懂啦~~)
/dev:存储特殊文件或设备文件(设备文件分为两种:字符设备(线性),块设备(随机))
/etc:系统程序的配置文件,只能为静态
/home:普通用户的家目录的集中位置,一般每个普通用户的家目录默认为此目录下与用户名同名的子目录
/root:管理员的家目录
/lib:为系统启动或根文件系统上的应用程序(/bin,sbin等)提供共享库,以及为内核提供模块
lib.so*:动态链接的C库
lb*:运行时连接器/加载器.
modules:用于存储内核模块的目录
/lib64:64位系统特有的存放64位共享库的路径
/media:便携式挂载点,cdrom,floppy等。(什么是挂载点呢??这个...不做示范语言解释起来有那么一点点困难~嘛~小编就简单说一下吧,不理解没关系,以后会理解的:这个用windows为例,我们右键点击桌面的计算机,然后点击管理,弹出一个窗口,里面有个磁盘管理,点磁盘管理后会看到我们的磁盘分区,右键这些磁盘会有一个更改驱动号和路径。我们所谓的挂载点,基本上算是这个东西,比如,我们在其他磁盘内部创建一个空文件夹,再回过来点击更改驱动号和路径,将刚才创建的空文件夹的路径复制上去,之后点确定。回过来看这个文件夹,是否发现它已经变成了磁盘的形状了呢~~这就是所谓的挂载。在linux中也是这个道理。)
/mnt:其他文件系统的临时挂载点
/opt:附加应用程序的安装位置
/srv:当前主机为服务提供的数据
/tmp:为那些产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户执行写入操作,有特殊权限
/usr:usr Hiararchy.全局共享的只读数据路径
bin,sbin,lib,lib64
inclide:C程序头文件
share:命令手册页和自带文档等架构特有的文件存储位置
local:另一层级目录
XIIR6:X window程序的安装位置
src:程序源码文件的存储位置
/usr/local:local Hierarchy.让系统管理员安装本地应用程序.通常也用于安装第三方程序
/var:var Hierarchy.存储常发生变化的数据目录
cache:应用程序缓存数据
lib:发生变化的状态信息(一个程序的状态数据)
local:主要为/usr/local提供可变化数据
lock:锁文件
log:日志文件
opt:只要为/opt提供可变化数据存储位置
run:与运行过程中相关的数据
spool:应用程序的spool数据
tmp:系统重启后依然需要留存的临时数据
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息,他们多为内核参数。
/sys:systs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理linux设备提供一种统一的模型的接口
/selinux:security enhanced linux,selinux相关的安全策略等信息的存储位置
好啦~~以上就是linux中的基本的文件系统,也可以说必须要有的文件。FHS很重要哦~~在写这个的时候,小编可是费了好多好多功夫,手动打上去的!手动打上去的!手动打上去的!!(非常重要,说三遍)老师的课件上面都没有这么详细!!(虽然好多有百度,那是因为...有些小编也不知道啦~)
现在,文件结构小编已经讲咯~接下来我们要如何查看这些文件呢??
(注意!)我们这周要学的命令来咯!!!
ls:列出指定目录下的内容
这就是小编现在所在目录下的内容。这条命令的描述是 列出指定目录下的内容 小编刚才列出的是当前目录下的内容,那怎么列出其他目录呢??
路人乙:“在ls后面加上路径”
没错!在ls后面加上要查看内容的路径即可(注意:ls和路径直接要有空格!)
这是列出目录里面的内容,那我们若想进入到目录里面要怎么做呢?
这就要用到我们这次要学习的另一条命令啦~
cd 路径:切换至指定目录中
而只在命令行中输入 cd 则是切换至当前用户的家目录中(什么是用户的家目录,小编上面在FHS中提到了,同学们要认真阅读)
小编还以进入/etc目录下为例:
唉??怎么什么也没显示呢?要知道我们有没有进入到该目录下,看左边这个提示符,这个提示符是不是从“~”变成了“/etc”呢?这就表示我们已经成功的进入了该目录下。
然后,我们再直接输入 cd
又成功回到原本的目录中。
从上面的实验中,我们看到了左边提示符在“~”与“/etc”之间发生变化,而小编又告诉过大家“/etc”是存放系统配置文件的目录,那“~”也是目录嘛?
没错,在linux中“~”表示当前用户的家目录。这个家目录若没修改过,默认是在/home目录下与用户名同名的目录中。
“~”知道后,其左边的字符同学们有没有猜到呢??What!?没有!?这么笨嘛?
我们先来看“~”最左边的“root”这个位置代表的是当前所在使用的用户,为了证明小编说的正确,小编就来找一个其他用户:
“su -”这个命令小编就不再解释啦~~~切换完其他用户,之前显示“root”的位置显示了当前切换后的“zzc”用户
接着下一位“@”这个是什么....额...这个没有什么意思啦~~只是用户名和其后面字符的链接符而已
下一个“local....”这个是我们当前的主机名字(不会全部显示,只显示一部分),默认情况下是这个名字,当然我们是可以修改的~要如何修改,小编以后会讲的~~~
“~”小编说过了,那中括号外部的“#”与“$”分别是什么:
看小编上面的图,当我们使用“root”用户的时候,中括号外部是“#”,而切换至普通用户的时候,中括号外部是“$”,而小编说过,“root”用户为管理员用户,所以同学们似乎已经猜到啦~“#”代表是管理员,而“$”代表是普通用户。
好啦,用户的提示符介绍完咯,我们下面来做一个总结:
中括号内部从左到右一次是:[当前用户的用户名@当前主机名(显示部分名字) 用户所在的目录(只显示路径的最后一段)]命令提示符(#、$)
好啦,回到我们刚才的话题~~小编上面说过,所有的文件都是从“/”开始的,所以,在写路径之前要加上“/”,那,是不是所有的路径都要加上“/”呢??错!!打错特错!!果然只要小编不讲你们就不懂(吐槽:一派胡言,我们懂!你还没等我们回答呢!!)
路径有两种:绝对路径和相对路径
绝对路径:绝对路径就是从“/”开始的路径
相对路径:相对路径是当前所在的目录相对于我们要操作的目录或文件所在的路径。这 个路径可以不是从“/”开始的
普及完路径分类之后,小编就带大家正式的认识一下我们上面提到的两种命令:
小编讲文件系统的时候说过,“.”开头的文件为隐藏文件,而我们直接用ls查看文件都是不以“.”开头,那要如何查看这些隐藏文件呢?
这就要涉及到小编下面将的命令所拥有的选项啦~~
在linux中,命令的基本格式为:
COMMAND(命令) [OPTION(选项)] ARGUMENTS(参数)...
OPTION:决定了命令的功能(多个选项是可以同时使用的~)
ARGUMENTS:决定了命令的作用对象
了解了命令的基本格式之后,小编就来说说上面我们提到的两个命令:
ls:列出指定目录下的内容
ls [option]...[FILE(文件)]...
对于该命令如何使用,小编上面已经演示过咯,我们来说说ls的选项
[option]:
-a:显示目录下的所有文件,包括隐藏文件
ls -a 后面若不加参数,则会查看当前所在的路径,要查看其它路径后面跟上要查看的路径即可
-A:显示出“.”“..”以外的所有文件。
上面两张图作比较,-A选项列出的文件中没有显示-a列出的文件中的“.”“..”,对于这两个分别是什么,我们下面讲到 cd 命令的时候就会解释啦~~
-l:显示文件的详细属性信息
(吐槽:这都是啥!?)...额...这个现在还不是要讲的内容,小编只是让大家看一下效果,ls -l里面包含了文件的类型,权限,所属人和所属组等等....
-d:显示目录自身而不显示目录内的文件
这句话什么意思呢?现在小编找一个目录。嗯..就用/etc这个目录吧。我们知道,直接使用ls 去查看/etc目录,会将其目录下的内容显示出来(图片演示在上面哦~~)
ls -d 只会显示目录自身,目录下的文件不会显示。所以这样有什么意义呢?没错,毫无意义!!所以-d 这个选项是不会单独使用的,通常会配合 -l 一起使用,查看目录自身的详细信息
-h:对文件大小进行换算
这里要特别注意咯,单独使用 -h 选项是没有作用的,同样需要配合 -l 一起使用
哎呀~~差点忘记说了~~~这个换算可是非精确的换算~~至于那几个显示数字“6”的是什么,为什么没有被换算成大小,等以后小编在告诉大家~~
-R:递归显示
什么是递归显示呢?就是说:若要查看的目录中,有子目录的存在,则将子目录中的内容一起显示
啊咧??怎么没有显示呢??哼哼~~不要被骗了,之所以没有显示出小编家目录下中子目录的内容,那是因为小编家目录下的子目录中没有文件或者是隐藏文件~~~
(已经身心疲惫的小编)↓以下的选项基本上是用不到的,有些我们还没有讲到,所以下面这些就不做示范啦~~
-r:查看时候逆序显示
-S:按文件大小排序显示
-t:按修改时间排序
-u:按文件开头第一个字母排序
-ut:按访问时间排序
-X:没有后缀名的文件按文件第一个字母排序,有后缀名的文件按 后缀名最后一个字母排序(小编试出来的,和帮助文档不一样)
-i:显示文件的inode号
-Z:显示文件的context值
呼~~小编好累~~~眼睛好痛~~要不....这一章...这一章就这么结束吧~~嗯,就这么结束吧~~同学们下周再见咯~~
老师:“讲完了?”
(还在被威胁的小编)“完...完了...”
老师:“cd 命令呢?”
“那...那个...下..下周吧...”
(委屈的小编)“怎么又揍我”
老师:“排版烂的不能看!!这就是你说的改正错误!?”
“我...我努力改正了,可它就是不听我的话....我也很绝望。可能,它继承了小编大人的意志:一生在世上桀骜不驯”
↑(边说边揍小编)同学们:“桀骜不驯?还敢装逼!”
↓被揍后的小编