一、more分屏显示文件内容(了解)

# more 文件名称
[root@localhost ~]# more initial-setup-ks.cfg

特别注意:more命令在加载文件时并不是一点一点进行加载,而是打开文件时就已经把文件的全部内容加载到内存中了。如果打开文件较大,则可能会出现卡顿情况。

 早期more命令没有现在这么强大,其只能前进不能后退

二、less分屏显示文件内容(重点)

基本语法:

# less 文件名称
[root@localhost ~]# less initial-setup-ks.cfg 

特别注意:less命令不是加载整个文件到内存,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。

另外:less可以通过上下方向键显示上下内容,退出时不会在Shell中留下刚显示的内容

less 命令的执行也会打开一个交互界面,下面是一些常用交互命令(和more类似):

 

 cat,more,less三者的对比:

三、文件统计命令

基本语法:

# wc [选项] 文件名称
选项说明:
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数(空格,回车,换行)

案例:统计a.txt文件的总行数

# wc -l a.txt

 

案例:统计a.txt文件中的单词数

# wc -w a.txt

案例:统计文件的字节数(数字、字母一般1个字符=1个字节,中文和编码格式有关,如utf-8编码格式,1个汉字占用3个字节)

# wc -c a.txt

扩展:wc [选项] 文件的名称可以统计一个文件的信息,实际情况下,我们选项还可以一起使用

案例:统计一个文件的总行数、总单词数以及总字节数

# wc -wlc a.txt
或
# wc -lwc a.txt
或
# wc -clw a.txt

3.1 du命令

基本语法:

# du [选项] 统计的文件或文件夹
选项说明:
-s :summaries,只显示汇总的大小,统计文件夹的大小
-h :以较高的可读性显示文件或文件夹的大小,(KB/MB/GB/TB)

主要功能:查看文件或目录(会递归显示子目录)占用磁盘空间大小

案例:显示readme.txt文件的大小(占用磁盘空间,不显示文件大小的单位)

# du readme.txt

案例:显示readme.txt文件的大小(占用磁盘空间,显示文件大小的单位)

# du -h readme.txt

案例:统计wechat文件夹的大小

# du -sh wechat

案例:统计/etc目录的大小

# du -sh /etc

3.2文件处理命令

基本语法:

# find 搜索路径 [选项]
选项说明:
-name:指定要搜索文件的名称,支持*星号通配符(Shift + 8)
-type:代表搜索的文件类型,f代表普通文件,d代表文件夹=>加快检索速度

主要功能:当我们查找一个文件时,必须使用的一个命令。

案例:搜索/var目录中boot.log文件(普通文件)

# find /var -name "boot.log" -type f

案例:全盘搜索ssh目录

# find / -name "ssh" -type d 

特别注意:实际工作时,尽量减少全盘检索,比较消耗资源

扩展功能:find实现模糊查询(必须结合通配符)

案例:搜索/var/log目录下的所有的以".log"结尾的文件信息

# find /var/log -name "*.log" -type f

* :通配符,代表任意个任意字符。如*.log代表以.log结尾的文件,apache*代表搜索以apache开头的文件信息

四、grep命令

基本语法:

# grep [选项] 要搜索的关键词 搜索的文件名称
选项说明:
-n :代表显示包含关键词的行号信息

单位:行,一行一行向下搜索

主要功能:在文件中直接找到包含指定关键词的那些行,并把这些信息高亮显示出来

案例:在initial-setup-ks.cfg文件中搜索包含关键词"network"的行

# grep network initial-setup-ks.cfg

案例:在initial-setup-ks.cfg文件中搜索包含关键词"network"的行,然后显示行号信息

# grep -n network initial-setup-ks.cfg

扩展语法:

# grep 要搜索的关键词 多个文件的名称

主要功能:在多个文件中查找包含指定关键词的那些行,并高亮显示出来

案例:搜索/var/log目录下所有文件,找到包含关键词"network"的所有行信息

# grep network /var/log/*

五、echo命令

基本语法:

# echo "文本内容"

主要功能:在终端中输入指定的文本内容

案例:在终端中,输出hello world字符串

# echo "hello world"

六、输出重定向

场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。

> :标准输出重定向 : 覆盖输出,会覆盖掉原先的文件内容

>>:追加重定向 : 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

案例:把echo输出的"hello world"写入到readme.txt文件中

# echo "hello world" > readme.txt

以上程序的主要功能代表把echo命令的执行结果,输出写入到readme.txt文件中,如果readme.txt文件中存在内容,则首先清空,然后在写入hello world

案例:把echo输出的"hello linux"写入到readme.txt,要求不能覆盖原来的内容

# echo "hello linux" >> readme.txt

七、Linux操作系统用户和组的概念

1、为什么需要了解用户和组

服务器要添加多账户的作用

​ 针对不同用户分配==不同的权限==,不同权限可以限制用户==可以访问到的系统资源==​ 提高系统的安全性​ 帮助系统管理员对使用系统的用户进行跟踪

2、用户和组的关系

理论上Linux系统中的每个用户在创建时都应该有一个对应的用户组,这个组就称之为用户的主组。同时,有些情况下,某个用户需要临时使用某个组的权限,那这个组就称之为这个用户的附属组或附加组。

主组只能拥有一个,但是附属组或附加组可以同时拥有多个 => 亲爹,干爹(多个)

 

3、用户组操作

用户组的添加

# groupadd [选项]  用户组的组名称
选项说明:
-g :代表用户组的组ID编号,自定义组必须从1000开始,不能重复

 案例:在系统中添加一个hr的用户组

# groupadd hr

 案例:在系统中添加一个test的用户组并指定定编号1100

# groupadd -g 1100 test

问题:我们刚才创建的hr以及test用户组到底添加到哪里了?

答:默认情况下,我们添加的用户组都会放在一个系统文件中,文件位置=>/etc/group

# tail -3 /etc/group
root:x:0:
itheima:x:1000:

/etc/group文件解析

由以上命令的执行结果可知,在/etc/group文件中,其一共拥有三个冒号,共四列。每列含义:

第一列:用户组的组名称
第二列:用户组的组密码,使用一个x占位符
第三列:用户组的组ID编号,1-999代表系统用户组的组编号,1000以后的代表自定义组的组编号
CentOS6 => 1-499,500...
CentOS7 => 1-999,1000...
第四列:用户组内的用户信息(如果一个用户的附属组或附加组为这个组名,则显示在此位置)

用户组的修改

# groupmod [选项 选项的值] 原来组的组名称
选项说明:
-g :gid缩写,设置一个自定义的用户组ID数字,1000以后
-n :name缩写,设置新的用户组的名称

案例:把hr用户组更名为szhr

# groupmod -n szhr hr

案例:把test用户组的组编号由1100更改为1003

# groupmod -g 1003 test

案例:把itcast组的组名称更改为admin且用户组的组编号更改为1004

# groupmod -g 1004 -n admin itcast

用户组的删除

基本语法:

# groupdel 用户组名称

案例:使用groupdel删除test用户组

# groupdel test

用户操作

☆ 用户的添加

基本语法:

# useradd [选项 选项的值] 用户名称
选项说明:
-g :代表添加用户时指定用户所属组的主组,唯一的组信息(重要)
-s :代表指定用户可以使用的Shell类型,默认为/bin/bash(拥有大部分权限)还可以是/sbin/nologin,代表账号创建成功,但是不能用于登录操作系统。
/bin/bash => 给人使用的(运维工程师)
/sbin/nologin => 给软件使用的

-G :代表添加用户时指定用户所属组的附属组或附加组,可以指定多个,用逗号隔开即可(了解)
-u :代表添加用户时指定的用户ID编号,CentOS6从500开始,CentOS7中从1000开始(了解)
-c :代表用户的备注信息,cqw:123456:(陈权伟的账号)
-d :代表用户的家目录,默认为/home/用户名称。可以使用-d进行更改
-n :取消建立以用户名称为名的群组(了解)

案例:在系统中创建一个linuxuser账号

# useradd linuxuser

问题:我们并没有为linuxuser账号指定所属的主组,可以成功创建账号么?

答:可以,因为在创建账号时,如果没有明确指定用户所属的主组,默认情况下,系统会自动在用户组中创建一个与用户linuxuser同名的用户组,这个组就是这个用户的主组。

问题:刚才创建的linuxuser账号能不能用于登录操作系统

答:不行,因为Linux的登录账号==必须要求有密码==,如果一个账号没有密码是无法登录操作系统的。

 案例:在系统中创建一个账号zhangsan,指定用户所属的主组为itheima

第一步:查询一下itheima的组ID编号
# tail -5 /etc/group
itheima:x:1000:
第二步:根据组的编号添加用户
# useradd -g 1000 zhangsan

案例:在系统中创建一个账号lisi,指定主组为itheima,此用户只能被软件所使用,不能用于登录操作系统

# useradd -g 1000 -s /sbin/nologin lisi

案例:在系统中创建一个wangwu,指定主组为wangwu,附属组为itheima

# useradd -G 1000 wangwu

用户信息查询

基本语法:

# id 用户名称

主要功能:查询某个指定的用户信息

案例:查询linuxuser用户的信息

# id linuxuser
uid=1002(linuxuser) gid=1005(linuxuser) groups=1005(linuxuser)
uid:用户编号
gid:用户所属的主组的编号
groups:用户的主组以及附属组信息,第一个是主组,后面的都是附属组或附加组信息

与用户相关的用户文件

组:/etc/group文件

用户:/etc/passwd文件,每创建一个用户,其就会在此文件中追加一行

# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
由上图可知,一共拥有7列
第1列:用户名称
第2列:用户的密码,使用一个x占位符,真实密码存储在/etc/shadow(1-用户名,2-加密密码)
第3列:数字,用户的ID编号
第4列:数字,用户的主组ID编号
第5列:代表注释信息,useradd -c "备注信息" 用户名称
第6列:用户的家目录,默认在/home/用户名称
第7列:用户可以使用的Shell类型,useradd -s /bin/bash或/sbin/nologin 用户名称

用户修改操作

基本语法:

# usermod [选项 选项的值] 用户名称
选项说明:
-g :修改用户所属的主组的编号
-l :login name修改用户的名称
-s :修改用户可以使用的Shell类型,如/bin/bash => /sbin/nologin

扩展:
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock

了解:
-G :修改用户附属组的编号信息
-d :修改用户的家目录
-c :修改用户的备注信息

案例:修改zhangsan账号信息,更名为zs

# usermod -l zs zhangsan

案例:修改wangwu账号信息,把用户的主组的编号更新为1000(itheima)

# usermod -g 1000 wangwu

案例:禁止linuxuser账号登录Linux操作系统

# usermod -s /sbin/nologin linuxuser
# usermod -L linux

 

 案例:解锁linux用户

# usermod -U linux

问题:账号已经解锁,但是无法登录

① 当前账号没有设置密码,因为Linux操作系统不允许没有密码的操作进行登录

② 当前用户的Shell类型为/sbin/nologin,所以其无法登录

passwd命令

基本语法:

# passwd 用户名称

主要功能:为某个用户设置密码(添加或修改),可以给自己也可以给别人设置

案例:修改自己的密码

[root@yunwei ~]# passwd

案例:为linux账号添加一个密码,密码:123456

[root@yunwei ~]# passwd linux

[root@yunwei ~]# passwd linux

su命令

基本语法:

# su [-] root
选项:
- :横杠(减号),代表切换用户的同时,切换目录到用户的家

主要功能:切换用户的账号

从超级管理员切换到普通用户,root => itheima,不需要输入itheima的密码

从普通账号切换到超级管理员,itheima => root,需要输入root的密码

从普通账号切换到普通账号,itheima => linuxuser,也需要输入linuxuser密码

wheel组(了解)

Linux系统中,理论上只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效

用户删除操作

基本语法:

# userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家(默认不删除)

案例:删除用户但是不删除用户的家目录

# userdel zs

案例:删除用户的同时删除用户的家目录

# userdel -r lisi

删除账号流程:① 删除账号 ② 确认是否删除用户家 ③ 删除用户主组(没有其他用户)

扩展:当我们想要删除某个账号时,系统提示当前账号正在被某个进程所使用

解决方案:

第一种方案:找到登录的这个用户,然后将其直接注销

第二种方案:

# kill [-9] 进程的ID编号
选项说明:-9代表强制结束某个进程
主要功能:用于结束某个进程的继续运行

案例:结束11565进程

# kill 11565

简单粗暴,kill 对应用户的全部进程(尽量斩草除根,结束父进程)

# ps -ef |grep linux
ps命令:查看进程
-ef :查看系统的所有进程
|:管道命令
grep linux:搜索包含了linux关键词的所有进程

结束完成后,再次使用userdel删除即可