一、命令解释器 shell
1.1 什么是shell
shell :壳,命令解释器,负责解析用户输入的命令。命令分两类:
内置命令 (shell 内置 ) , shell 为了完成自我管理和基本的管理,不同的 shell 内置不同的命令,但是大部分都差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type 命令查看命令是 file 、 alias 还是 builtin
type - a 列出当前命令可以如何执行
type - t 仅列出命令按照哪种方式执行
那 shell 如何知道命令的可执行文件在哪个路径下呢?系统为了让用户在命令行快速方便地执行命令,将可执行文件
的路径存储在环境变量 PATH 中。
在众多环境变量里面有一个环境变量叫做 PATH ,当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索
和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。
1.2 Linux中的特殊符号
1.; 可使用分号分隔多条命令 , 在一行上输入和执行多条较短的命令,可使用分号来分隔命 令
2.* 匹配任意零个或者多个字 符, 但是不能用于创建文件
3.? 匹配任意单个字符 ,但 不能用于创建文件
4.[] 匹配方括号中的任意一个 字符,表示范围可以用 "-” ,也 不能用于创建文件
5.[^] 匹配方括号中的任意一个 字符或数字后进行取反 , 用于查找和删除文件,不用于创建文件
6.{string,string} 匹配括号中的任意一个字符串,表示一个范围时, 字符串之间个 ".." , 可用于创建、查看、删除文件
7.\ 使 \ 后面的特殊字符失效 例如:可以在命令行后面加一个 \ ,再按回车键时并不表示执 行该命令,而是表示换行,通过此方式将一个较长的命令分成多行表达,增强命令的可读性。换行后系统自动显示提示符 >
8.` 反引号,一般用于引用命 令,执行的时候反引号里 面的命令会被执行,与 $() 作用相同
9.' 单引号,将单引号内的所 有内容都原样输出, 所有特殊字符在单引号里面都会失去特殊含义
10." 双引号,除了几个特殊字 符外,将双引号内的几乎 所有内容都原样输出, $ 和 \ 以及 ` 在双引号里面仍然保留自己的特殊含义
1.3命令别名
别名是命令的快捷方式,对于需要经常执行,并且需要很长时间输入的长命令创捷快捷方式很有用
语法:alias 别名=‘原命令 【选项】...【参数】...’
查看设置的别名

删除别名 unalias 别名
1.4命令历史
history命令可以查询命令的历史纪录,也可以在命令行利用向上或向下光标键进行查询
history 【选项】【参数】
选项:
number :显示最近 number 条命令历史
-c :清空当前历史命令
-a [file] :后面没跟文件时,默认将缓冲区中历史命令写入 ~/.bash_history 中
-r [file] :将历史命令文件中的命令读入当前历史命令缓冲区中
-w :将当前历史命令缓冲区命令写入历史命令文件中
例:
命令行里的其他快捷键:
ctrl+d 输入已结束 ; 也可当做 exit
ctrl+c 键盘中断请求,终止当前的命令
Ctrl+a 移动到当前行的开头
Ctrl+e 移动到当前行的结尾
Ctrl+l 清屏 ==clear
Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)
Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
ctrl+←/→ 光标在命令行中按照单词跳转
二、用户和组管理
2.1Linux中用户和组的分类
1、Linux下的用户可分为三类:
超级用户:root,具有一切权限,只进行系统维护或其他必要情形下才用超级用户登录,避免系统出现安全问题
系统用户:是Linux系统正常工作必需的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户,系统用户不能用来登录
普通用户:为了让使用者能够使用Linux系统资源建立的
2、Linux中的组有以下两类:
基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组。
附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。
3、Linux中用户和用户组的配置文件
用户账号文件 /etc/passwd
用户密码文件 /etc/shadow
用户组账号文件 /etc/group
用户组密码文件 /etc/gshadow
2.2用户管理
1、添加新用户
命令格式 useradd 【选项】 用户名
常用选项:
-c 注释信息 —— 设定与用户相关的说明信息 ( 如 , 真实姓名、邮箱地址等 ) 。
-d 目录 —— 设定用户的家目录 ( 默认为 /home/ 用户名 ) 。
-e YYYY-MM-DD—— 设置用户的失效日期 , 此日期后将不能使用该账号。
-f 天数 —— 指定密码到期后多少天账号被禁用 , 若指定为 0, 则表示账号到期后被立即禁用 ; 若指定 为 -1, 则表示账号过期后不被禁用 ( 即密码永不过期 ) 。
-g 组名或 GID 号 —— 为用户指定所属的基本组 , 该组在指定时必须已存在。
-G 组名或 GID 号列表 —— 为用户指定所属的附加组 , 各组在指定时已存在 , 附加组可以有多个 , 组 之间用 “,” 分隔。
-M—— 不创建用户家目录。
-N—— 不创建与用户名同名的基本组。
-p 密码 —— 指定用户的登录密码。
-s shell 名 —— 指定用户登录后使用的 Shell, 默认是 bash 。
-u 用户号 —— 设置账号的 UID, 默认是已有用户的最大 UID 加 1 。如果同时有 -o 选项 , 则可以重复使用其他用户的标识号。
示例:

2.2.1修改用户信息
命令格式:usermod 【选项】 用户名
常用的选项包括 -c,-d,-m,-g,-G,-s,-u 等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,还可以使用如下选项: -l 新用户名——更改账户的名称,必须在该用户未登录的情况下才能使用。 -L——锁定(暂停)用户账户,使其不能登录使用。 -U——解锁用户账户。
2.2.2 为用户设置密码
命令格式:passwd 【用户名】
常用选项 :
-d—— 清空指定用户的口令。这与未设置口令的账户不同 , 未设置口令的账户无法登录系统 , 而口令为空的账户可
以。
-e—— 使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
-i—— 口令过期后多少天停用账户。
-l—— 锁定 ( 停用 ) 用户账户。
-n—— 指定口令的最短存活期。
-x—— 指定密码的最长使用期限。
-u—— 解锁用户账户。
例:
2.2.3删除用户账号
格式:userdel -r 用户名
2.2.4用户间切换
命令格式 su【用户名】
2.2.5控制用户对系统命令的使用权限
用sudo 命令可以提高普通用户的操作权限,但这个权限需要root用户进行配置/etc/sudoers文件才可以使用
2.3用户组管理
1、创建用户组
格式:groupadd -r 用户组名称
常用选项:
-g GID——指定新用户组的组标识号(GID),默认值是已有的最大的GID加1。 -r——建立一个系统组账号,与-g 不同时使用时,则分配一个1~999的GID。
2、修改用户组属性
命令格式:groupmod 选项 用户组
常用选项: -g GID——为用户组指定新的组标识号。 -n 新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值。
3、添加/删除组成员
格式:gpasswd 选项 用户 组
只有root用户和组管理员才能够使用该命令
4、删除组账户
格式:groupdel 用户组名
2.4查询用户和组信息


2.5 查看用户登陆系统的情况
1、users,查看当前登录系统的用户

2、last:列出目前与过去登入系统的用户相关信息,该命令会默认去读取/var/log/wtmp文件,并把该文件记录的登入系统的用户名单全部显示出来。

3、如果想知道每个账户最近的登陆时间,可使用lstlog查看,该命令会读取/var/log/lastlog文件

4、w:显示目前登录到系统的用户信息

5、who:显示目前登录到系统的用户
