文章目录
1. 前言
更多内容请查看android生态之应用篇
这里不讲linux内核,也不讲Linux原理,这里只讲一些我们可能会用到的知识,如果想深入学习Linux的话,可以查阅《鸟哥的Linux私房菜》,深入内核的话可以查阅《Linux内核深度解析》。这里讲Linux是为了后面延伸学习阅读系统源码而考虑的。另外,我会在Android生态之系统篇中对Linux kernel做一些分析,但并不会特别深入。
2. Linux简述
Linux 是一套开源的类 Unix 操作系统,基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。对于面向对象开发来说,万物皆对象,对于Linux来说,一切皆文件。不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。
3. 文件与目录
3.1 查看属性
可以通过ll命令查看文件属性:
-
第一列
第一个字母代表文件类型:
d:目录
-:文件
l:链接文件
b:块设备,设备文件里的可供存储的接口设备
c:字符设备,表示设备文件里的串行端口设备,如键盘鼠标等一次性读取设备。
接下来三个一组,第一组为文件所有者(User)权限,第二组为同用户组(group)的权限,第三组为其他非本用户组(Others)的权限 -
第二列
有多少文件名连接到此节点(i-node)。每个文件都会将它的权限与属性记录到文件系统的i-node中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会连接到一个i-node,这个属性记录的就是有多少不同的文件名连接到相同的一个i-node号码
-
第三列
所有者账号 -
第四列
文件所属用户组 -
第五列
容量大小,默认单位B -
第六列
创建或最近修改日期 -
第七列
文件名
3.2 修改属性
修改属性使用chomd命令,
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
上面提到的CleanSpec.mk文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r: 4
w:2
x: 1
-: 0
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的
所以此文件的权限为777,如果要改变此文件的权限为-rwxrw-rw-,则可以使用以下命令:
chmod 766 CleanSpec.mk
3.3 创建
创建文件:
touch filename;
创建目录:
mkdir dirname;
3.4 查看
查看文件:
vi filename;
vim filename;
cat filename;
more filename;
less filename;
head filename;
tail filename;
3.5 拷贝
拷贝文件和目录都可以通过cp命令(拷贝文件夹的时候应加-r参数,循环拷贝的意思)
cp sourcefile distfile
但也可以使用mv命令进行拷贝,例如:
mv sourcefile distfile
mv命令有点特殊,特殊在如果distfile如果存在,则变成重命名操作,如果不存在就会变成拷贝操作。
3.6 修改
echo,vi,vim命令都可以用来修改文件,视情况而定使用命令。
3.7 删除
删除命令使用rm最为方便,可以删除文件及文件夹。
它可以加rf参数,这个使用要慎重,特别是使用rm -rf /*,则会强制并且循环删除根目录下的文件及下级目录。
4. 用户管理
- 添加用户:useradd
- 删除用户:userdel
- 修改用户:usermod
- 口令管理:passwd
5. 用户组管理
- 增加用户组:groupadd
- 删除用户组:groupdel
- 修改用户组:groupmod
- 用户组之间的切换:newgrp
6. 磁盘管理
- 列出文件系统的整体磁盘使用量 df
- 检查磁盘空间使用量 du
- 用于磁盘分区 fdisk
7. shell script
7.1 shell和shell script
千万不要混淆,这两个不是同一个东西,Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
shell script是一种为 shell 编写的脚本程序。
7.2 使用教程
使用shell脚本其实只要知道这是在写一个脚本语言,理解判断逻辑还有函数执行顺序就差不多了,这里不再赘述。