最近在拜读《鸟哥的Linux私房菜》这本书,这本书有PDF版的,也有实体书,鸟哥也有自己的一个网站http://linux.vbird.org/这个网址,网址里面是最新的内容。PDF版我是从CSDN上下载的http://download.csdn.net/download/xiaoyu5256/9896882?web=web,需要的可以自行去下载。
我是一个linux小白,希望大神们勿喷,这里只是做一下自己的学习笔记。
说一下我看这本书之前的关于linux的一些基础。最开始我是从阿里云自己租了一个服务器,学生价很便宜,10元/月,阿里云我租的是CentOS7的一个服务器,然后在服务器上已经安装了JDK,mysql,Tomcat等一些东西,同时也把自己写的一些小项目放到上面去跑了一下。而后去公司实习,公司租用的也是阿里云的服务器,于是在公司的服务器上也搭建了一两个小项目,前段时间在自己的电脑上安装了Ubuntu,也算是对linux的进一步了解,同时在阿里云上安装了GNOME可视化操作界面,也用VNC在自己的电脑上连接了一下阿里云的服务器。这些是这本书之前的自己对于linux的野路子学习。于是就读了一下鸟哥的书希望系统的了解一下linux。
一、指令格式
一行指令中第一个输入的部分绝对是『指令(command)』或『可执行档案(例如批次脚本,script)』
command 为指令的名称,例如变换工作目录的指令为cd 等等;
中刮号[]并不存在于实际的指令中,而加入选项设定时,通常选项前会带- 号,例如-h;有时候会使用选项的完整全名,则选项前带有– 符号,例如–help;parameter1 parameter2.. 为依附在选项后面的参数,或者是command 的参数;
指令,选项,参数等这几个咚咚中间以空格来区分,不论空几格shell都视为一格。所以空格是很重要的特殊字元!;
指令太长的时候,可以使用反斜线() 来跳脱[Enter]符号,使指令连续到下一行。注意!反斜线后就立刻接特殊字符,才能跳脱!-
鸟哥自己举了三个指令作为例子:
date print or set the system date and time
cal display a calendar
bc An arbitrary precision calculator language
二、在线文档
linux有超级多的命令,很多时候命令的用法是记不住的,linux提供了三种类似查看文档的方法
–help
在具体指令后加加上--help
这个命令之后就可以看到这个指令的一些主要用法。拿cal
这个指令试一下。
输入cal
得到的是当前的月份,同时当日的日期会被高亮
[root@iZuf6f32ql5nimbo2rfxsyZ ~]# cal
December 2017
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
输入cal -h
或者cal --help
就会得到一些cal
这个指令的一些具体用法。
[root@iZuf6f32ql5nimbo2rfxsyZ ~]# cal -h
Usage:
cal [options] [[[day] month] year]
Options:
-1, --one show only current month (default)
-3, --three show previous, current and next month
-s, --sunday Sunday as first day of week
-m, --monday Monday as first day of week
-j, --julian output Julian dates
-y, --year show whole current year
-V, --version display version information and exit
-h, --help display this help text and exit
如果足够帅气的话还可以显示为中文,这是因为我在安装的时候选择了中文
man page
如果想要获得指令更具体的用法介绍等方面的东西,就需要用到man
这个命令,鸟哥在书里打趣地说是找男人。man是manual的简写。
这里拿man date
试一下
DATE(1)
这一部分的DATE表示指令的名称(不是很区分大小写的吗?为什么这里是大写?)后面的1
的含义参照下表:
同时man page中的内容页主要可以分成下面几个部分:
在man page有下面几个指令
按键 | 含义 |
---|---|
空格/Page Down | 下一页 |
Page UP | 上一页 |
/string | 向下查找string这个字符串 |
?string | 向上查找string 这个字符串 |
n/N | 使用?string或者/string之后查找下一个 |
q | 退出本次的man page |
还有就是下面这两个指令:
info page
基本上,info与man的用途其实差不多,都是用来查询指令的用法或者是档案的格式。但是与man page一口气输出一堆资讯不同的是,info page则是将文件资料拆成一个一个的段落,每个段落用自己的页面来撰写,并且在各个页面中还有类似网页的『超连结』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。所以,你可以将info page想成是文字模式的网页显示资料。
这里使用info info
测试一下:
- File:代表这个info page的资料是来自info.info档案所提供的;
- Node:代表目前的这个页面是属于Top节点。意思是info.info内含有很多资讯,而Top仅是info.info档案内的一个节点内容而已;
- Next:下一个节点的名称为Getting Started,你也可以按『N』到下个节点去;
- Up:回到上一层的节点总揽画面,你也可以按下『U』回到上一层;
- Prev:前一个节点。但由于Top是info.info的第一个节点,所以上面没有前一个节点的资讯。
可以使用N,P,U来去到下一个,上一个与上一层节点。同时在任何时候都可以使用h来打开按键功能介绍。同时把光标悬停在*号的时候按下回车就可以直接跳转到该目录。
所以info这里指令的文档大概就像是下面这样的:
说一下个人的感受,这东西虽然很方便但是我还是比较喜欢man,因为这样跳来跳去我就不知道到哪里了,很容易把我自己绕晕进去。
三、文件、用户及权限(chmod/chgrp/chown)
在linux系统中,所有的账号都会加入一个或者多个群组,上述中root用户就属于root群组。linux中对文件的访问有三种身份,为owner/group/others。在linux中所有的群组都记录在/etc/group
文件中所有的用户信息都记录在/etc/passwd
文件中,可以自行打开这两个文件看看里面的内容。这里的三个命令都是只有root用户才有权限操作的。
在linux下使用ls -al
或者ll -a
可以查看当前目录下的所有文件,看一下下面的图:
图中已经标注了每个部分的含义,下面逐个做一下笔记:
权限
第一个表示文件的类型,示例中为-
表示这是个文件:
d 目录
- 文件
l 连结档(link file)
b 装置文件中的可供存储的接口设备
c 装置文件中的串行端口设备,键盘鼠标等
接下来9个分成三组,分别表示文件拥有者的权限,文件所属群组的权限和其他人的权限。
- 没有该位置代表的权限
r 可读
w 可写
x 可执行
在linux中文件是否可执行只与x这个权限有关,与文件的扩展名无关。
在linux中使用chmod
这个命令(change modify)改变文件的权限,具体的使用说明可以man
或者info
一下。在修改权限的时候有两种方法:
方法一:
用数字来代替权限(r:4/w:2/x:1),每种身份对应的权限为数字的累加和,例如如果要把文件权限改为rwxr-xr--
,则对应的数字为754,则可以使用下面的命令来修改文件权限:
chmod 754 文件/目录
方法二:
三种身份分别使用三个字母代替,u(user),g(group),o(others),a(all),可以参考下表:
还是一样,如果要把文件权限改为rwxr-xr--
,则可以使用下面的命令来修改文件权限:
chmod u=rwx,g=rx,o=r 文件/目录
同理也可以使用使用+
/-
来增加/移除文件的权限。
拥有者/所属群组
上面说的权限主要对的就是owner和group这两个来说的。
改变可操作性的群组:
改变可操作性文件的群组使用的是chgrp
这个命令(change group),还是一样,可以使用man
/info
这两个命令去看看使用说明。
chgrp [-R] 群组名 文件/目录
改变文件的拥有者:
使用的命令是chown
(change owner),下面这三个命令分别是改变文件的owner、改变文件owner和group、改变文件的group,所以说使用chown
在一定程度上也是可以达到chgrp
的目的。
chown [-R] 用户 文件/目录
chown [-R] 用户:群组 文件/目录
chown [-R] :群组 文件/目录
在改变使用chwon
的时候,:
是可以被替换成.
,但是按照鸟哥的说法,就是有时候用户的名字中会带有.
这个字符串,所以使用:
还是最安全的。
关于用户的权限,这里在逼逼一下:
用户创建文件或者目录的时候一般都有一个默认的权限,这个权限制可以用uamsk
这个命令获得。
umask
#得到0022
umask -S
#得到u=rwx,g=rx,o=rx
这个默认的权限肯定是可以更改的,可以使用man
看看帮助手册,平时的权限都是三个数字,这里是四个数字,先看一下后三个数字为022,这里的权限的分数需要减掉的分数,2表示需要从rwx
中减掉w
权限,我也不知到这里为什么不用加的要用减的。
再看看第一个数字,这个数字表示的是文件的特殊权限包括三个(SUID/SGID/SBIT)这三个东西这里就不展开,感觉篇幅会很长,最重要的是个人感觉在基础学习中这三个用的不多,知道一下就好了,到时候需要的需要的时候在查资料。
关于权限还有chattr和lsattr
这两个,同样不展开,权限在linux中是及其重要的,这里只对最简单的做一下笔记。
其他:
连结数:
每个档案都会将他的权限与属性记录到档案系统的i-node中,不过,我们使用的目录树却是使用档名来记录,因此每个档名就会连结到一个i-node!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。
容量大小:
这个的单位是bytes
修改时间:
文件被创建的时间或者最后的时间,如果是今年的日期,就显示月 日 时间,如果不是今年的就显示年份,可以使用--full-time
这个选项显示具体的时间
文档名:
这个显示的是文档的名字,一般情况下,会根据权限的第一个字符,文档名字的显示会有不同的颜色,这样便于区分。同时,在文档中,.
这个文件表示的是当前目录,..
表示的是上级目录,以.
开头的文件表示的是隐藏文件。
鸟哥的这本书好厚呀,我这里一边阅读一边做一些笔记,希望自己读完这本书可以收获到很多东西。