Linux必备知识点
前言
作为一名安卓开发人员,在开发过程中,不可避免需要涉及到一些安卓之外的知识点,例如linux。一些大公司的项目都是放在linux服务器上,需要与linux进行交互,需要了解一些linux命令。
Linux用户和用户组、用户和组的关系
Linux用户
我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,
然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,
- 安全性 ,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
- 每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。;
Linux用户和组的关系
用户和用户组的对应关系有:一对一、一对多、多对一和多对多;下图展示了这种关系:
- 一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
- 一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
- 多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。
什么是文件权限,如何修改文件权限
文件的权限又四部分组成:
权限定义:-rw-r–r--
第一部分:第 1 位,有三种取值:普通文件(-)、目录(d),链接(l),这个例子是 - 代表是一个普通文件。
第二部分:第 2-4 位,表示属主的权限:可读(r)、可写(w)、可执行(x),如果对应的位没有权限用 - 表示。
第三部分:第 5-7 位,表示属组的权限,表示方法同属主。
第四部分:第 8-10 位,表示其他组的权限,表示方法同属主。
- 属主 每个文件都有一个属主,这个属主是一个用户,一般哪个用户创建了文件,那它的属主就是谁,但是是可以修改的。
- 属组 属组是跟这属主的,一般哪个属主创建了文件,那么用户的属组也是它创建的文件的属组,也是可以修改。
3.其他组 除了属主和属组外的其他系统用户和用户组都是其他组。
修改文件权限:
修改权限时会用到 u、g、o,它们分别代表属主、数组、其他组。下面看几个例子来学习修改文件权限吧。
(1)使用 + 和 - 来增加和减少权限,如下图,安装图中的操作试一试吧,我只演示了 u+x 和 o-r,
你可以试试其他组合,比如:u+x、o+rw、u+w 等等.
chmod u+x 1.txt 给1.txt添加属主的可执行权限
(2)使用数字来描述权限,我们可以分别使用一个八进制数字表示属主、属组、其他组的权限。
比如:八进制 5 转换成四位二进制是 0101,
我们去后三位分别表示 rwx 权限,1 代表有权限,0 代表没有权限,所以八进制 5 代表的权限是 r-x。那么 755 代表的 权限就是 rwxr-xr-x
语法:
chmod [-R] xyz 文件或目录
,我们将上图的 1.txt 的权限用数字的方式改一下看看,如下:
chmod 755 1.txt
修改文件属组、属主:
-
chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名参数选项:
-R:递归更改文件属组,就是在更改某个目录文件的属组时, 如果加上-R的参数,那么该目录下的所有文件的属组都会更改。 -
chown:更改文件属主,也可以同时更改文件属组
语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
chown bin install.log将install.log的拥有者与群组改回为root:
chown root:root install.log
shell
什么是shell
首先shell的英文含义是“壳”;
它是相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。
Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息。
shell下怎样查看一个环境变量
- 使用echo命令查看单个环境变量。例如:
echo $PATH - 使用env查看所有环境变量。例如:
env - 使用set查看所有本地定义的环境变量。
shell下怎样添加环境变量
-
在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。例如:编辑/etc/profile文件,添加CLASSPATH变量 # vi /etc/profile export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
-
在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。例如:编辑guok用户目录(/home/guok)下的.bash_profile vi/home/guok/.bash.profile添加如下内容: exportCLASSPATH=./JAVAHOME/lib;JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。
-
直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,
shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
如何查看文件内容:全部内容,分页查看,查看前几行,查看后几行
cat概述及语法
-
概述
查看文件内容、创建文件、文件合并、追加文件内容 等功能,它的特点是会一次显示所有内容,适合查看内容较少 的文本文件。 -
语法
cat [-b] file cat [-n] file 参数解释: -b:对非空输出的行编号 -n:对输出的所有的行编号
more概述及语法
-
概述
当文件超过窗口时,会分屏显示文件;当文件内容较少时,与cat效果没区别,当文件内容较多时,会显示一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%) -
语法
more file 参数解释: -b:对非空输出的行编号 -n:对输出的所有的行编号
-
–More–(XX%)此时可以根据以下不同操作做出回应。
显示文本下一屏内容:空格键
一次滚动文本的一行:Enter
回滚一屏:b
前滚一屏:f
退出:q
grep概述及语法
-
概述
Linux系统中grep命令是一种强大的文本搜索工具。 -
语法
grep [选项] 查找的目标字符 文件名 grep的选项也很多,这里只介绍三个: -n:显示匹配行及行号 -v:显示不包含匹配文本的所有行(相当于求反) -i:忽略大小写 **注意:Linux命令选项是可以连用的,例如: grep -nvi Hello test.txt**