目录
2.1 Linux命令格式及常用
Linux系统中几乎所有操作都可通过命令实现,实现这些功能的命令大多遵循以下模式:
command [options] [arguments]
command: 命令的名称
options: 选项,定义了命令的执行特性
arguments:命令作用的对象
[]表示非必选项
具体示例如下:
rm -r dir 该命令表示:删除目录dir
rm:命令的名称,用于删除文件
-r:选项,表示删除目录中的文件和子目录
dir:命令作用的对象,该对象是一个目录
2.1.0 查看帮助的命令
使用命令前查看命令的格式和使用方法: help / man
1.help--比较方便,推荐使用
使用方式:
命令名称 --help / help 命令名称
[root@rhcsa001 ~]# ls --help
[root@rhcsa001 ~]# help dir
2.man(manual-手册)
使用方式:
man 命令名称
[root@rhcsa001 ~]# man ls
按h查看帮助,按q退出
进入手册页面时可以按向上向下箭头翻1行,按空格翻1页
下面介绍一些重要的命令:
2.1.1 清屏-Ctrl+L
2.1.2 重启系统命令
[root@rhcsa001 ~]# reboot
[root@rhcsa001 ~]# init 6
2.1.3 关闭系统命令
[root@rhcsa001 ~]# poweroff
2.1.4 重置root密码
交互式:
passwd
非交互式:
首先重新启动虚拟机,然后连续快速按下e键:
持续更新中。。。
2.1.5 在系统中修改密码
[root@rhcsa001 ~]# passwd
输入密码和确认时屏幕不显示提示符!
2.1.6 查看网卡及IP地址
[root@rhcsa001 ~]# nmcli
[root@rhcsa001 ~]# ip address
[root@rhcsa001 ~]# ifconfig
2.1.7 查看日期
1.查看当前日期:
[root@rhcsa001 ~]# date
Mon Sep 9 06:31:40 PM CST 2024
CST-中国时区 UST-世界时区 CST = UST + 8
2.以中文形式查看当前日期:
[root@rhcsa001 ~]# date +%Y/%m/%d
2024/09/09
3.查看当前详细时间:
[root@rhcsa001 ~]# date +%Y-%m-%d-%H:%M:%S
2024-09-09-18:45:15
注意这里要么输入时不要有空格,要么把输入的内容放进引号中-不区分单双引号!
[root@rhcsa001 ~]# date '+%Y-%m-%d-%H:%M:%S'
2024-09-09-18:48:07
4.查看帮助文档:
[root@rhcsa001 ~]# date --help
Usage: date [OPTION]... [+FORMAT]
2.1.8 查看及修改时区
[root@rhcsa001 ~]# timedatectl
Local time: Mon 2024-09-09 18:51:36 CST
Universal time: Mon 2024-09-09 10:51:36 UTC
RTC time: Mon 2024-09-09 10:51:36
Time zone: Asia/Shanghai (CST, +0800)
修改时区-不推荐使用:
[root@rhcsa001 ~]# timedatectl set-timezone Asia/Shanghai
2.2 用户与用户组管理
2.2.0 用户和组配置文件
在Linux中,用户名、密码、用户组和用户组密码都保存在不同的配置文件中:
/etc/passwd:用于保存用户账号文件
/etc/shadow:用于保存用户密码文件
/etc/group:用于保存用户组的文件
/etc/gshadow:用于保存用户组密码的文件
/etc/skel:用于保存用户家目录文件
/etc/default/useradd:用于定义添加用户信息的文件
1./etc/passwd
passwd是一个文本文件,用于定义系统的用户账号,由于所有用户对这个文件具有访问权限,所以
该文件只定义用户的账号,而不保存用户密码(安全考虑)
查看文件:[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
在这个文件中,每一行记录了一个用户信息,而用户信息是以 :进行分割的7部分组成:
root : x : 0 : 0 : root : /root : /bin/bash
1 2 3 4 5 6 7
1.用户名
2.用户登陆密码的占位符:x表示有密码、空或*表示没密码
3.用户的ID,即uid
4.用户所属组ID,即gid
5.用户的个人资料:完整名称、地址、办公电话、家庭住址等
6.用户的家目录
7.用户默认登陆所能使用的shell脚本
2./etc/shadow
查看文件:[root@localhost ~]# cat /etc/shadow
root:$6$SZgqMgm$rc2AvMgHXbBj11h0/z6dpJvC9maS1::0:99999:7:::
文件中每一行记录一个用户的密码信息,共有9个字段:
root : $6$SZgqMgm$rc2AvMgHXbBj11h0/z6dpJvC9maS1 : : 0 : 99999 : 7 : : :
1 2 3 4 5 6 7 8 9
1.用户名
2.用户密码:包括算法、盐和密文 $6$表示算法(id为1表示md5加密、id为5表示sha256加密
id为6表示sha512加密,如果这个字段值为!!表示账号已锁定不能登录、*表示无需登录)
3.最后一次修改密码时间(单位:天,从1970.1.1起到创建账号的时间差、redhat为20008)
4.最小时间间隔(经过多少天才可以再次修改密码单位:天、0表示无限制)
5.最大时间间隔(密码经过多少天后必须修改否则不能登录、默认值:99999-237年)
6.警告时间、密码失效前进行提示默认值:7、值为0表示没有限制
7.不活动时间:密码过期后多少天禁用该账号(0表示立即失效、-1密码表示永不过期、正数表示延长使用)
8.密码失效时间:值为空表示永不过期(以距1970.1.1天数表示)
9.保留字段,目前暂无使用
3./etc/group
这个文件存储用户组信息
查看文件:[root@localhost ~]# cat /etc/group
root:x:0:
文件中每一行记录了一个组信息,使用 :分割成四个字段:
root : x : 0 :
1 2 3 4
1.组名
2.组的密码占位符
3.组ID,即gid
4.附加组中的用户列表,以英文逗号分割(空为无附加用户)
4./etc/gshadow
这个文件存储组的密码信息
查看文件:[root@localhost ~]# cat /etc/gshadow
root:::
文件每一行代表一个组的密码信息,通过 :进行分割:
root : : :
1 2 3 4
1.组名
2.组密码(如果值为!表示无密码)
3.组id(由于这个值通常保存在/ect/group文件中,因此值为空)
4.组中附加用户(于/etc/group相同)
5./etc/skel
这个文件存储用户家目录下的隐藏文件,默认情况下:创建好用户后会在这个用户的家目录下新建一个
隐藏文件,而这些隐藏文件就是从这个文件中拷贝过来的
查看文件:[root@localhost ~]# vim /etc/skel
./
.mozilla/
.bash_logout
.bash_profile
.bashrc
查看root全部文件(主要看隐藏文件):[root@localhost ~]# ls -a
. .bash_logout .bashrc .config .tcshrc
.. .bash_history .bash_profile .cache .local .ssh .viminfo
6./etc/default/useradd
这个文件存储创建文件的相关信息
查看文件:[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 用于建立用户的默认组(公有组,目录使用的是私有组,所以它无效)
HOME=/home 用于指定创建用户所在的家目录(普通用户家目录)
INACTIVE=-1 指定密码过期的宽限时间(值为-1表示不限制)
EXPIRE= 指定密码的过期时间
SHELL=/bin/bash 用于指定用户登陆后的操作
SKEL=/etc/skel 用于指定用户家目录下隐藏文件的拷贝来源
CREATE_MAIL_SPOOL=yes 用于给新建的用户指定邮箱地址
2.2.1 用户管理
Linux是一个多用户、多任务的分时操作系统,在一台Linux主机上可同时登陆多名用户,
为了对用户的状态进行跟踪,并对其可访问的资源进行控制:每名用户在使用Linux之前,
必须先向系统管理员申请一个账号并设置密码,之后才能登陆并访问系统资源。
根据用户的权限,Linux系统中的用户大体分为两类:超级用户root和普通用户;
其中超级用户拥有操作Linux系统的所有权限;为保护系统安全,一般不使用超级用户登录,
而是创建普通用户,以普通用户身份进行一系列操作。
为避免普通用户权限过大或权限不足,通常需要由root用户创建拥有不同权限的多个用户,
此时便需用到用户切换命令。
0.用户分类
对于Linux中的用户类型,我们可以查看/etc/login.defs文件:
基本格式:vim /etc/login.defs
MAIL_DIR /var/spool/mail 创建用户时给用户建立的邮箱地址
UMASK 022 用户的权限掩码
HOME_MODE 0700 用户的家目录权限
ENCRYPT_METHOD SHA512 用户密码的加密算法
USERGROUPS_ENAB yes 删除用户时,如果对应组中还有其他用户则组不能删除,否则可以
CREATE_HOME yes 默认创建用户时,创建用户家目录
PASS_MAX_DAYS 99999 用户密码的最大有效期(237年)
PASS_MIN_DAYS 0 用户密码的最小有效期(值为0表示一直有效)
PASS_WARN_AGE 7 用户密码过期前的警告期限(提前7天发出警告)
UID_MIN 1000 普通用户的uid最小值,即第一个普通用户uid值
UID_MAX 60000 普通用户的uid最大值,即最后一个用户的uid值
GID_MIN 1000 普通用户组的gid最小值
GID_MAX 60000 普通用户组的gid最大值
SYS_UID_MIN 201 系统用户的gid最小值
SYS_UID_MAX 999 系统用户的gid最大值
SYS_GID_MIN 201 系统用户组的gid最小值
SYS_GID_MAX 999 系统用户组的gid最大值
1.添加用户
[root@localhost ~]# useradd --help
基本格式: useradd [选项] <登录/注册>用户名
选项 | 说明 |
-c | 指定账户的备注文字:邮箱、电话、真实姓名 |
-d | 指定创建用户时的家目录,默认/home/用户名目录下 |
-e | 指定账号的失效期 |
-f | 指定密码的宽限期 |
-g | 为所创建用户指定基本组的id |
-G | 为所创建用户指定附加组的id,可指定多个并用" , "分割 |
-M | 创建用户时不创建家目录(一般用于创建系统用户) |
-N | 不创建与用户名相同的组名称 |
-p | 指定用户的登录密码 |
-s | 指定用户可操作的shell脚本 |
-u | 指定用户的用户ID(uid)、默认是已有普通用户最大id值加1 |
1.创建一个用户名为:admin的用户
准备工作:
准备工作:
[root@localhost ~]# tail -n 2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
[root@localhost ~]# tail -n 2 /etc/shadow
tcpdump:!!:20008::::::
redhat:$6$.IX.QI.syk.M8XIETEaB1:20008:0:99999:7:::
[root@localhost ~]# tail -n 2 /etc/group
tcpdump:x:72:
redhat:x:1000:
[root@localhost ~]# tail -n 2 /etc/gshadow
tcpdump:!::
redhat:!::
[root@localhost ~]# vi /var/spool/mail
./
redhat
rpc
创建用户:
创建用户:
[root@localhost ~]# useradd admin
再次查看相关配置文件:
再次对诸文件进行查看:
[root@localhost ~]# tail -n 2 /etc/passwd
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
admin:x:1001:1001::/home/admin:/bin/bash
[root@localhost ~]# tail -n 2 /etc/shadow
redhat:$6$.IX.QI.L.M8XIETEaB1:20008:0:99999:7:::
admin:!!:20010:0:99999:7:::
[root@localhost ~]# tail -n 2 /etc/group
redhat:x:1000:
admin:x:1001:
[root@localhost ~]# tail -n 2 /etc/gshadow
redhat:!::
admin:!::
[root@localhost ~]# vi /var/spool/mail
./
admin
redhat
rpc
总结:
当一个用户创建好后,需要在:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow
和/var/spool/mail等文件中添加信息。
2.创建用户admin01,指定其uid为1002、登录的shell为/bin/bash、账号永不过期
[root@localhost ~]# useradd -u 1002 -s /bin/bash -e -1 admin01
3.创建用户admin02,指定家目录/admin、基本组wheel、同时属于adm和root附加组
[root@localhost ~]# useradd -d /home/admin -g wheel -G adm,root admin02
查看附加组:
[root@localhost ~]# cat /etc/group
root:x:0:admin02
adm:x:4:admin02
[root@localhost ~]# cat /etc/gshadow
root:::admin02
adm:::admin02
4.创建用户admin03,账号过期时间2024-12-12、账号信息:admin03,12345678910
[root@localhost ~]# useradd -e "2024-12-12: -c "admin03,12345678910" admin03
5.创建用户admin04,禁止登陆、不创建家目录
[root@localhost ~]# useradd -M -s /sbin/nologin admin04
2.设置用户密码
新建的账号是无法使用的,因为此时未给账号设置密码,账号处于锁定状态;
Linux中通过passwd命令为用户设置密码:
[root@localhost ~]# passwd --help
基本格式: passwd [选项...] 账号名
选项 | 说明 |
-k | 保持身份验证不过期 |
-d | 删除密码(同时删除锁) |
-l | 锁定密码(密码失效,无法登录) |
-u | 解除当前账号密码 |
-e | 指定账号过期时间 |
-x | 密码最长有效期 |
-n | 密码最短有效期 |
-w | 密码过期前多少天开始提示 |
-i | 宽限期:密码过期多少天后账号禁用 |
1.设置/修改Login密码为:123456
#设置密码
[root@localhost ~]# passwd Login
#查看密码
[root@localhost ~]# cat /etc/shadow | grep Login
#有了密码之后就可以登录账号
[root@localhost ~]# su -l Login
[Login@localhost ~]$
3.删除用户
使用userdel命令将该用户从系统中删除,除删除账号外还可以删除指定用户相关的文件和信息
[root@localhost ~]# userdel --help
基本格式: userdel [选项] 用户
选项 | 说明 |
-f | 强制删除(即使该用户为当前用户) |
-r | 删除用户的同时删除相关的所有文件(很重要!!!) |
1.删除Login、但保留相关文件:家目录和邮箱目录等
[root@localhost ~]# userdel -f Login
[root@localhost ~]# cat /etc/passwd |grep Login
2.删除Login且不保留相关文件
[root@localhost ~]# userdel -fr Login
4.修改用户信息
usermod命令用于修改用户信息,即修改与用户相关的属性信息:uid、主目录、用户组、账号期限等
[root@localhost ~]# usermod --help
基本格式: usermod [选项] 用户
注意:在useradd选项都可用的基础上还另有一些命令
选项 | 说明 |
-l | 更改用户名称(用户名未登陆的情况下才能使用) |
-L | 锁定账号密码,使当前帐号不能登录 |
-U | 解除密码锁定 |
1.修改账号admin的有效期为:2024-1-1、宽限期为7天
[root@localhost ~]# usermod -e "2024-1-1" -f 7 admin
2.修改账号admin的shell为/bin/sh
[root@localhost ~]# usermod -s /bin/sh admin
[root@localhost ~]# cat /etc/passwd | grep admin
admin:x:1001:1001::/home/admin: /bin/sh
3.将admin家目录移至/home目录下
[root@localhost ~]# usermod -d /home admin
[root@localhost ~]# cat /etc/passwd | grep admin
admin:x:1001:1001:: /home :/bin/sh
4.将账号admin修改为:Login、暂停使用该账号
[root@localhost ~]# usermod -l Login -L admin
[root@localhost ~]# cat /etc/passwd | grep Login
Login:x:1001:1001::/home:/bin/sh
5.将账号Login解锁
[root@localhost ~]# usermod -U Login
5.用户提权
大部分情况下我们都使用普通用户进行操作,如果想要普通用户也能够使用超级用户的某些权限,
我们需要对普通用户进行提权命令,在Linux中使用sudo实现
[root@localhost ~]# sudo --help
基本格式: sudo
6.修改主机名称
通常为了区分及更好的标识一个虚拟机,我们通常会给当前系统指定一个主机名
指定主机名称通过"hostnamectl"命令实现
[root@rhcsa001 ~]# hostnamectl --help
命令格式:
hostnamectl [选项] 命令
命令 | 说明 |
status | 查看当前主机名称设置 |
hostname [NAME] | 查看/设置主机名称 |
[root@rhcsa001 ~]# hostnamectl hostname rhcsa01
[root@rhcsa001 ~]# reboot 重新启动虚拟机
[root@rhcsa01 ~]# 主机名称由rhcsa001改为rhcsa01
2.2.2 用户组管理
为了方便对用户的管理,Linux系统设置了用户组的概念,一般将权限相同的用户放在同一个用户组
若某个用户组中每名用户都需要一项新的权限,管理员可直接将该权限赋予用户组,在一次操作中
为该组的所有用户提升权限
0.用户组分类
在Linux中用户组也分为以下两类:
1.基本组/私有组:建立用户时如果没有指明用户所属组,则系统自动建立一个与用户名同名的用户组
2.附加组/公有组:可以容纳多个用户,组中的用户拥有所属组的所有权限
注意:一个用户只能有一个基本组,但可以无附加组或同时有多个附加组。
1.添加用户组
增加用户组的方式用两种:一种是由系统默认创建-在创建用户时若无特别指定,系统会为新用户
创建与其同名的用户组;另一种是使用groupadd命令主动添加。
[root@localhost ~]# groupadd --help
基本格式: groupadd [选项] 组
选项 | 说明 |
-g | 指定新建用户组的组ID,默认是已有组最大gid+1 |
-r | 创建系统用户组,组ID取值范围(1~499) |
1.创建gid为:1100、组名admin的组
[root@localhost ~]# groupadd -g 1100 admin
[root@localhost ~]# tail -2 /etc/group
redhat:x:1000:
admin:x:1100:
2.创建组名openlab的组
[root@localhost ~]# groupadd openlab
[root@localhost ~]# tail -2 /etc/group
admin:x:1100:
openlab:x:1101:
2.修改用户组
用户组的GID、组名等属性都可以被修改
[root@localhost ~]# groupmod --help
基本格式: groupmod [选项] 组
选项 | 说明 |
-n | 修改组名 |
-g | 修改GID |
1.将openlab组名称改为:xiaoopenlab
[root@localhost ~]# groupmod -n xiaoopen openlab
[root@localhost ~]# tail -2 /etc/group
admin:x:1100:
xiaoopen:x:1101:
2.把admin组的GID改为:1001
[root@localhost ~]# groupmod -g 1001 admin
[root@localhost ~]# tail -2 /etc/group
admin:x:1001:
xiaoopen:x:1101:
3.删除用户组
[root@localhost ~]# groupdel --help
基本格式: groupdel [选项] 组
注意1:不需要使用选项!!!
注意2:使用groupdel只能删除空组
删除admin和xiaoopen组
[root@localhost ~]# groupdel admin
[root@localhost ~]# groupdel xiaoopen
[root@localhost ~]# tail -2 /etc/group
redhat:x:1000:
4.用户组管理
gpasswd命令用于管理用户组
[root@localhost ~]# gpasswd --help
基本格式: gpasswd [选项] 组
选项 | 说明 |
无选项 | 加密组 |
-r | 删除密码 |
-a | 添加用户到用户组 |
-d | 从用户组中删除用户 |
1.创建admin组并设置密码
[root@localhost ~]# groupadd -g 1100 admin
#查看组密码
[root@localhost ~]# tail -1 /etc/gshadow
admin:!::
#设置组密码
[root@localhost ~]# gpasswd admin
#查看组密码
[root@localhost ~]# tail -2 /etc/gshadow
admin$6$4cZzHDhc0OvFzXLP/.::
2.2.3 用户切换
Linux提供了两种切换用户的方式:
一种是通过Linux系统图形化界面菜单中的"切换用户"选项切换用户;
另一种是在终端使用命令su或sudo切换用户
[root@rhcsa001 ~]# su --help
基本格式:
su [选项] [用户名]
若选项和用户名缺省则表示切换到root用户,但此时仍保留原来用户的工作环境;
使用"su -"则表示从当前用户切换到root用户,并切换到root用户的工作目录
#是超级用户的命令提示符,$是普通用户的命令提示符
选项 | 说明 |
-c | 执行完指定的指令后,切换回原来的用户 |
-l | 切换用户的同时,切换到对应用户的工作目录,环境变量随之改变 |
-m,-p | 切换用户时,不改变环境变量 |
-s | 指定要执行的shell |
1.从root用户切换到普通用户
[root@rhcsa001 ~]# su -l redhat
[redhat@rhcsa001 ~]$
2.从普通用户切换到root用户
[redhat@rhcsa001 ~]$ su -l root
Password:
[root@rhcsa001 ~]#
3.从普通用户切换到普通用户
[redhat@rhcsa001 ~]$ su -l rhcsa
Password:
[rhcsa@rhcsa001 ~]$
4."-l" 环境变量的更改与否
1.不改变环境变量查看redhat用户根目录
[root@rhcsa001 ~]# su redhat
[redhat@rhcsa001 root]$ ls
ls: cannot open directory '.': Permission denied
2.改变环境变量后查看redhat用户根目录
[root@rhcsa001 ~]# su -l redhat
[redhat@rhcsa001 ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
5.使用"exit"命令可退出当前用户,返回上级用户
[root@rhcsa001 ~]# exit
logout
[redhat@rhcsa001 ~]$ exit
logout
[root@rhcsa001 ~]#
2.3 文件管理
2.3.0 文件类型
在Linux中一切皆文件!
文件分类:
Linux一共有7种文件分类:
- 普通文件
d 目录
l 链接文件(分为软链接和硬链接)
c 字符设备文件
b 块设备文件
p 管道文件
s 套接字文件
文件内容格式说明:
[root@rhcsa001 ~]# ll -d /root
d r-xr-x---. 15 root root 4096 Nov 5 2023 /root
1 2 3 4 5 6 7 8
1.文件类型
2.文件操作权限
3.硬链接数
4.文件所有者(创建文件的人)
5.文件所发属组名称
6.文件大小,单位为字节
7.文件最后一次修改时间
8.文件名称
2.3.1 文件操作
2.3.1.1-pwd
用以显示当前工作目录的绝对路径,通常不添加参数,直接在命令行中使用
[root@rhcsa001 ~]# pwd
/root
2.3.1.2-cd
更改目录:若执行该命令的用户有权限,cd命令可更改当前目录到对象目录
[root@rhcsa001 ~]# cd --help
基本格式:cd + 参数(工作路径)
1.切换工作路径到上一级目录(/root->/)
[root@rhcsa001 ~]# pwd
/root
[root@rhcsa001 ~]# cd ..
[root@rhcsa001 /]# pwd
/
2.切换工作路径到当前目录(root)下的Public目录中
[root@rhcsa001 ~]# ls
anaconda-ks.cfg Documents Music Public Videos
Desktop Downloads Pictures Templates
[root@rhcsa001 ~]# cd ./Public
[root@rhcsa001 Public]# ll
total 0
3.切换工作路径到etc目录下的yum目录中(/root->/etc)
[root@rhcsa001 /]# ls
afs boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@rhcsa001 /]# cd /etc/yum
[root@rhcsa001 yum]# ll
total 0
lrwxrwxrwx. 1 root root 14 Mar 15 2023 pluginconf.d -> ../dnf/plugins
lrwxrwxrwx. 1 root root 18 Mar 15 2023 protected.d -> ../dnf/protected.d
lrwxrwxrwx. 1 root root 11 Mar 15 2023 vars -> ../dnf/vars
4.切换工作路径为当前目录的家目录(/root/Public->/root)
[root@rhcsa001 ~]# cd ./Public/
[root@rhcsa001 Public]# cd ~
[root@rhcsa001 ~]# ls
anaconda-ks.cfg Documents Music Public Videos
Desktop Downloads Pictures Templates
5.在最近两个目录之间来回切换
[root@rhcsa001 ~]# cd /home
[root@rhcsa001 home]# cd -
/root
[root@rhcsa001 ~]# cd -
/home
6.直接输入cd则回到/root家目录
[root@rhcsa001 home]# cd /home/redhat/
[root@rhcsa001 redhat]# cd
[root@rhcsa001 ~]# ls
anaconda-ks.cfg Documents Music Public Videos
Desktop Downloads Pictures Templates
2.3.1.3-ls
"ls"命令是"list"的简写即"列出",作用是显示指定路径下的所有文件信息
[root@rhcsa001 ~]# ls --help
基本格式:
ls [选项] [文件]
选项 | 说明 |
-a | 显示所有文件,包括隐藏文件及目录 |
-d | 显示目录本身而不是显示目录下的内容 |
-l | 以详细信息的方式显示目录下的文件(ls - l == ll) |
-h | 以人的读取习惯显示内容 |
-r | 递归显示 |
2.1 显示根目录-a
显示根目录下的子目录:
[root@rhcsa001 ~]# ls /
afs boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
显示根目录下的所有子目录(包含隐藏目录):
[root@rhcsa001 ~]# ls -a /
. afs boot etc lib media opt root sbin sys usr
.. .bash_history bin dev home lib64 mnt proc run srv tmp var
.表示当前目录
..表示上级目录
以.开头的文件或目录表示隐藏文件或目录 .bash_history
2.2 显示目录本身-d
[root@rhcsa001 ~]# ls -d /
/
[root@rhcsa001 ~]# ls -d /root
/root
2.3 以长列表方式显示目录-l
[root@rhcsa001 ~]# ls -l /
total 28
dr-xr-xr-x. 5 root root 4096 Oct 18 2023 boot
drwxr-xr-x. 19 root root 3300 Sep 10 15:39 dev
drwxr-xr-x. 136 root root 8192 Sep 10 15:42 etc
2.4 以人的读取习惯显示目录-h
[root@rhcsa001 ~]# ls -lh /
total 28K
dr-xr-xr-x. 5 root root 4.0K Oct 18 2023 boot
drwxr-xr-x. 19 root root 3.3K Sep 10 15:39 dev
drwxr-xr-x. 136 root root 8.0K Sep 10 15:42 etc
执行命令时可以执行多个选项,两种书写方式:
[root@rhcsa001 ~]# ls -l -h /
[root@rhcsa001 ~]# ls -lh /
2.5 通过文件开头查找文件
0.查看/root/itheima目录下的所有文件
[root@rhcsa001 itheima]# ls
dir01 dir02 dir03 dir1 dir2 dir3
1.查找以dir开头的后一位有效位文件:
[root@rhcsa001 itheima]# ls -d dir?
dir1 dir2 dir3
2.查找以dir开头的后两位有效文件----以此类推
[root@rhcsa001 itheima]# ls -d dir??
dir01 dir02 dir03
3.查找以dir结尾的全部有效文件
[root@rhcsa001 itheima]# ls -d dir*
dir01 dir02 dir03 dir1 dir2 dir3
2.3.1.4-mkdir
创建目录
[root@rhcsa001 ~]# mkdir --help
基本格式: mkdir [选项] 目录名
选项 | 说明 |
-p | 创建多个/多级目录 |
-v | 创建文件过程中查看过程 |
1.通过绝对路径创建
在/root目录下创建/etc/dir01目录:
[root@rhcsa001 ~]# pwd
/root
[root@rhcsa001 ~]# mkdir -v /etc/dir01
mkdir: created directory '/etc/dir01'
2.直接去到所要创建文件的路径下去创建
在/root/itheima目录下创建dir01目录:
[root@rhcsa001 ~]# cd /root/itheima/
[root@rhcsa001 itheima]# pwd
/root/itheima
[root@rhcsa001 itheima]# mkdir -v dir01
mkdir: created directory 'dir01'
[root@rhcsa001 itheima]# ls
dir01
3.创建多级目录
在/root/itheima/dir01目录下创建dir02/dir03多级目录
[root@rhcsa001 ~]# mkdir -pv /root/itheima/dir01/dir02/dir03
mkdir: created directory '/root/itheima/dir01/dir02'
mkdir: created directory '/root/itheima/dir01/dir02/dir03'
[root@rhcsa001 ~]# cd /root/itheima/
[root@rhcsa001 itheima]# tree
.
└── dir01
└── dir02
└── dir03
4.创建多个目录
在/root/itheima目录下创建dir02 dir03 dir04目录
[root@rhcsa001 itheima]# mkdir -pv dir02 dir03 dir04
mkdir: created directory 'dir02'
mkdir: created directory 'dir03'
mkdir: created directory 'dir04'
[root@rhcsa001 itheima]# ls
dir01 dir02 dir03 dir04
创建多级目录的另一种写法:
[root@rhcsa001 itheima]# mkdir -pv dir{10..13}
mkdir: created directory 'dir10'
mkdir: created directory 'dir11'
mkdir: created directory 'dir12'
mkdir: created directory 'dir13'
2.3.1.5-touch/stat
touch命令的主要功能是将已存在文件的时间标签更新为系统的当前时间
若指定文件不存在,则会创建一个新文件(附加功能)
[root@rhcsa001 ~]# touch --help
基本格式: touch [选项]... 文件...
要查看文件的状态可以通过命令:stat来实现
stat命令查看文件状态(创建时间、修改时间、访问时间):
选项 | 说明 |
atime(access time) | 修改文件的访问时间 (选项-a) |
mtime(modify time) | 修改文件的修改时间 (选项-m) |
ctime(change time) | 修改文件元数据的时间 (选项 -m) |
1.在/root/itheima目录下创建文件file1并查看其状态
[root@rhcsa001 ~]# touch ./itheima/file1
[root@rhcsa001 itheima]# ls
file1
[root@rhcsa001 itheima]# stat file1
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 101941599 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-09-15 20:06:15.491413774 +0800
Modify: 2024-09-15 20:06:15.491413774 +0800
Change: 2024-09-15 20:06:15.491413774 +0800
Birth: 2024-09-15 20:06:15.491413774 +0800
2.再次创建/root/itheima并查看其状态
[root@rhcsa001 itheima]# touch file1
[root@rhcsa001 itheima]# ls
file1
[root@rhcsa001 itheima]# stat file1
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 101941599 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-09-15 20:14:44.965418885 +0800
Modify: 2024-09-15 20:14:44.965418885 +0800
Change: 2024-09-15 20:14:44.965418885 +0800
Birth: 2024-09-15 20:06:15.491413774 +0800
3.创建多个文件
[root@rhcsa001 itheima]# touch file{2..5}
[root@rhcsa001 itheima]# ls
file1 file2 file3 file4 file5
[root@rhcsa001 itheima]# touch file01 file02
[root@rhcsa001 itheima]# ls
file01 file02 file1 file2 file3 file4 file5
2.3.1.6-cp
复制:将一个或多个源文件复制到指定的目录
[root@rhcsa001 ~]# cp --help
基本格式: cp [选项]... 源路径... 目标路径
注意:只能复制到已存在的文件或目录下
选项 | 说明 |
-a | 拷贝文件的同时保留链接文件属性 |
-r | 递归拷贝,将指定目录及其子目录一并处理 |
-f | 强制覆盖目标路径 |
-d | 拷贝时保留链接 |
1.将/root/itheima/passwd文件复制到/root/itheima路径下并命名为:passwd.cp
[root@rhcsa001 itheima]# ls
passwd
[root@rhcsa001 itheima]# cp ./passwd passwd.cp
[root@rhcsa001 itheima]# ls
passwd passwd.cp
2.在/root/itheima文件下,创建目录dir1,并将/root/itheima/passwd文件以原名称复制到目录中
[root@rhcsa001 itheima]# mkdir dir1
[root@rhcsa001 itheima]# ls
dir1 passwd passwd.cp
[root@rhcsa001 itheima]# cp passwd dir1
[root@rhcsa001 itheima]# ls dir1
passwd
2.3.1.7-mv
用于移动文件或目录
[root@rhcsa001 ~]# mv --help
基本格式: mv [选项]... 源路径... 目标路径
1.将文件1.txt移动到目录dir1中
[root@rhcsa001 itheima]# ls
1.txt dir1
[root@rhcsa001 itheima]# mv 1.txt dir1/
[root@rhcsa001 itheima]# ls
dir1
[root@rhcsa001 itheima]# ls dir1/
1.txt
2.将目录dir1移动到目录dir2中
[root@rhcsa001 itheima]# ls
dir1 dir2
[root@rhcsa001 itheima]# mv dir1 dir2
[root@rhcsa001 itheima]# ls
dir2
3.将文件file1移动到目录dir1中并修改名称为:file2
[root@rhcsa001 itheima]# tree
.
├── dir1
└── file1
1 directory, 1 file
[root@rhcsa001 itheima]# mv file1 dir1/file2
[root@rhcsa001 itheima]# tree
.
└── dir1
└── file2
1 directory, 1 file
2.3.1.7-rm
删除文件/目录
注意:要删除实目录时必须添加选项"-r",空目录可替换成"d"
[root@rhcsa001 ~]# rm --help
基本格式: rm [选项]... [文件]...
选项 | 说明 |
-r | 递归删除,删除目录时需要用到的指定选项 |
-f | 强制删除,删除文件/目录时不会进行提示 |
-rf | 删除目录中所有文件和子目录,并且不一一确认 |
-d | 删除空目录 |
-v | 显示操作过程 |
1.删除/root/itheima下的dir01目录
[root@rhcsa001 ~]# ls ./itheima/
dir1 dir2 dir3
[root@rhcsa001 ~]# rm -rfv ./itheima/dir1
removed directory './itheima/dir1'
[root@rhcsa001 ~]# ls ./itheima/
dir2 dir3
2.删除/root/itheima下的dir02空目录
[root@rhcsa001 ~]# rm -dfv ./itheima/dir2
removed directory './itheima/dir2'
[root@rhcsa001 ~]# ls ./itheima/
dir3
3.删除多个(空)目录,多个目录之间用空格隔开
[root@rhcsa001 itheima]# ls
dir001 dir002 dir3
[root@rhcsa001 itheima]# rm -rfv dir001 dir002
[root@rhcsa001 itheima]# ls
dir3
4.批量删除,使用通配符来删除目录下的所有文件和目录
[root@rhcsa001 itheima]# ls
dir001 dir002 dir01 dir02 dir1 dir2
[root@rhcsa001 itheima]# rm -rfv dir?
[root@rhcsa001 itheima]# ls
dir001 dir002 dir01 dir02
[root@rhcsa001 itheima]# rm -rfv dir*
[root@rhcsa001 itheima]# ll
total 0
2.3.1.8-sort
对文本中的各行进行排序,通常与其他命令一起使用(cut)
建议先看下面的cut命令
[root@rhcsa001 ~]# sort --help
基本格式: sort [选项]... [文件]...
选项 | 说明 |
-b | 忽略缩进与空格 |
-f | 忽略大小写 |
-n | 以数值型排序 |
-r | 反向排序 |
-t | 指定间隔符 |
-k | 指定获取范围(列) |
-u | 去除重复行 |
1.查看/etc/passwd文件中的第三列并排序
原始顺序:
[root@rhcsa001 ~]# cut -d : -f 3 /etc/passwd
0
1
2
3
自然排序:
[root@rhcsa001 ~]# cut -d : -f 3 /etc/passwd | sort
0
1
1000
11
按数值大小排序:
[root@rhcsa001 ~]# cut -d : -f 3 /etc/passwd | sort -n
0
1
2
按数值大小反向排序:
[root@rhcsa001 ~]# cut -d : -f 3 /etc/passwd | sort -nr
65534
1000
999
2.使用sort命令对/etc/passwd文件进行排序
[root@rhcsa001 ~]# sort -n /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
[root@rhcsa001 ~]# sort -nr /etc/passwd
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-oom:x:986:986:systemd Userspace OOM Killer:/:/usr/sbin/nologin
3.使用sort命令对文件/etc/passwd文件的第三列进行排序
[root@rhcsa001 ~]# sort -t : -k 3 /etc/passwd
root:x: 0 :0:root:/root:/bin/bash
redhat:x: 1000 :1000:redhat:/home/redhat:/bin/bash
operator:x: 11 :0:operator:/root:/sbin/nologin
4.使用sort命令对文件/etc/passwd文件的第三列进行数值排序
[root@rhcsa001 ~]# sort -t : -k 3 -n /etc/passwd
root:x: 0 :0:root:/root:/bin/bash
bin:x:1: 1 :bin:/bin:/sbin/nologin
daemon:x: 2 :2:daemon:/sbin:/sbin/nologin
2.3.2 查看文件
2.3.2.1-cat
将文件中的内容打印到输出设备
一般使用这个命令显示小的文件!!!
[root@rhcsa001 ~]# cat --help
基本格式: cat [选项]... [文件]...
选项 | 说明 |
-n | 显示文件行序号(包含空行) |
-b | 显示文件行序号(不包含空行) |
我们以/etc/passwd文件为例:
[root@rhcsa001 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
1.显示出文件所有的行序号(包含空行)-n
[root@rhcsa001 ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
2.在每行的末尾添加一个$符号-A
[root@rhcsa001 ~]# cat -A /etc/passwd
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
daemon:x:2:2:daemon:/sbin:/sbin/nologin$
3.显示文件行序号(不含空行)-b
[root@rhcsa001 ~]# cat -b /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
2.3.2.2-more
用于分页显示文件内容
[root@rhcsa001 ~]# more --help
基本格式:more 文件
快捷键 | 说明 |
Enter键 | 向下翻一行 |
向上向下箭头 | 上下翻一页 |
q | 退出文件查看 |
在使用快捷键查看之前我们先要做些准备工作:
1.我们先多次使用命令对/root/itheima/file3文件进行追加操作
[root@rhcsa001 itheima]# cat /etc/passwd >> file3
[root@rhcsa001 itheima]# cat /etc/passwd >> file3
......
2.使用命令:more file3展示文件并使用快捷键进行查看
[root@rhcsa001 itheima]# more file3
2.3.2.3-less
用于分页显示文件内容
推荐使用less而不是more来查看文件因为它的功能更强!!!
[root@rhcsa001 ~]# more --help
基本格式:less 文件
快捷键 | 说明 |
Enter键 | 向下翻一行 |
向上向下箭头 | 向上向下翻一页 |
g/G | 回到第一行/回到末尾行 |
q | 退出查看 |
我们同样可以就/root/itheima/file3文件使用快捷键进行查看
[root@rhcsa001 itheima]# less file3
2.3.2.4-head
用于查看指定文件的前n行内容,默认为前10行
[root@rhcsa001 ~]# head --help
基本格式: head [选项]... [文件]...
选项 | 说明 |
-n | 查看文件的指定开头行数(默认为10行) |
-c | 查看指定文件的开头指定字符 |
1.查看/etc/passwd文件的默认前10行
[root@rhcsa001 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
2.查看/etc/passwd的前n行,以3行为例
[root@rhcsa001 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@rhcsa001 ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
3.查看/etc/passwd文件的开头指定字符,以5个字符为例
[root@rhcsa001 ~]# head -c 5 /etc/passwd
root:
2.3.2.5-tail
用于查看指定文件的后n行内容,默认为后10行
[root@rhcsa001 ~]# tail --help
基本格式: tail [选项]... [文件]...
选项 | 说明 |
-c | 查看指定文件的末尾指定字符 |
-n | 查看文件的指定末尾行数(默认为10行) |
-f | 查看追加内容 |
1.查看/etc/passwd文件的默认后10行
[root@rhcsa001 ~]# tail /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
cockpit-ws:x:983:982:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:982:981:User for cockpit-ws instances:/nonexisting:/sbin/nologin
gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
chrony:x:980:978:chrony system user:/var/lib/chrony:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
2.查看/etc/passwd文件的指定后3行
[root@rhcsa001 ~]# tail -3 /etc/passwd
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
[root@rhcsa001 ~]# tail -n 3 /etc/passwd
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
3.查看/etc/passwd文件的末尾指定字符,以5个为例
[root@rhcsa001 ~]# tail -c 5 /etc/passwd
bash
4.查看/root/itheima/file1文件的追加展示:
一:以远程登陆软件X-shell为例
1.登录远程登陆系统
2.右击选择复制会话
3.右击选择垂直分割
二:直接以虚拟机为例
1.点击左上角的"+"
2.右击选择 "Detach Terminal"
垂直分割是为了便于观察追加的效果:
进入到file1文件所在的父目录即可进行操作:
1.先在右侧写入显示追加的内容
2.在左侧给指定文件file1追加内容
3.我们可以看到两个文件可以同步展示,即表示追加内容显示成功
退出按:Ctul + C
2.3.2.6-wc
word count:使用wc命令可以计算文件的字节数、字数和列数
[root@rhcsa001 ~]# wc --help
基本格式: wc [选项]... [文件]...
选项 | 说明 |
-c | 统计文件中的字节数/文件大小 |
-m | 统计文件中字符的个数(一个字符就是一个字节) |
-w | 统计文件中的单词数 |
-l | 统计文件中的行数 |
-d | 指定分隔符 |
1.查看/root/itheima/file01文件的字节数
查看file01文件内容:
[root@rhcsa001 ~]# cat /root/itheima/file01
Hello
My Linux redhat
This is fresh
使用wc -c命令来计算字节数: 换行和空格也算字数!!!
[root@rhcsa001 ~]# wc -c /root/itheima/file01
37 /root/itheima/file01
2.查看/root/itheima/file01的字符个数(一个字符为一个字节)
[root@rhcsa001 ~]# wc -m /root/itheima/file01
37 /root/itheima/file01 一个字符为一个字节!!!
3.查看/root/itheima/file01文件中的单词数
[root@rhcsa001 ~]# wc -w /root/itheima/file01
7 /root/itheima/file01
4.查看/root/itheima/file01文件中的行数
[root@rhcsa001 ~]# wc -l /root/itheima/file01
3 /root/itheima/file01
2.3.3 文件搜索
2.3.3.1-grep
grep的基础功能是在文件中搜索与指定字符串匹配的行并打印到终端
[root@rhcsa001 itheima]# grep --help
基本格式: grep [选项]... PATTERNS [文件]...
PATTERNS表示要查找的关键字,严格来说应该是要查找的匹配字符
1.PATTERNS是普通字符 eg:1-6
2.PATTERNS是特殊字符 eg:7-
grep是Linux系统默认支持的文本分析工具,该工具常与正则表达式配合使用以实现:
更灵活、更复杂的功能
此处仅讲解最基础用法,关于正则表达式与grep的更多用法将在第3章详细讲解
选项 | 说明 |
-c | 仅显示找到的行数 |
-n | 显示行号 |
-i | 忽视大小写 |
-v | 反向选择,会列出没有关键字的行 |
-A n | 搜索时显示匹配到的那一行及下n行 |
-B n | 搜索时显示匹配到的那一行及上n行 |
-C n | 搜索时显示匹配到的那一行及上下n行 |
PATTERNS为普通字符1-7:
1.在/etc/passwd文件中查找含有"root"关键字的所有行(显示行号)
[root@rhcsa001 ~]# grep root -n /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@rhcsa001 ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
2.在/etc/passwd文件中查找不包含/sbin/nologin关键字的所有行(显示行号)
[root@rhcsa001 ~]# grep /sbin/nologin -nv /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
39:redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
3.在2的基础上仅显示找到的行数
[root@rhcsa001 ~]# grep /sbin/nologin -vc /etc/passwd
5
4.在/etc/passwd文件中查找包含"libstoragemgmt"关键字的行及上三行(显示行号)
[root@rhcsa001 ~]# grep libstoragemgmt -A 3 -n /etc/passwd
26:libstoragemgmt:x:987:987:daemon account for libstoragemgmt:/:/usr/sbin/nologin
27-systemd-oom:x:986:986:systemd Userspace OOM Killer:/:/usr/sbin/nologin
28-pipewire:x:985:984:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
29-flatpak:x:984:983:User for flatpak system helper:/:/sbin/nologin
5.在/etc/passwd文件中查找包含"libstoragemgmt"关键字的行及上三行(显示行号)
[root@rhcsa001 ~]# grep libstoragemgmt -n -B 3 /etc/passwd
23-sssd:x:995:991:User for sssd:/:/sbin/nologin
24-geoclue:x:994:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
25-setroubleshoot:x:993:989:SELinux troubleshoot server:/var/lib/setroubleshoot
26:libstoragemgmt:x:987:987:daemon account for libstoragemgmt:/:/usr/sbin/nologin
6.在/etc/passwd文件中查找包含"libstoragemgmt"关键字的行及上下1行(显示行号)
[root@rhcsa001 ~]# grep libstoragemgmt -n -C 1 /etc/passwd
25-setroubleshoot:x:993:989:SELinux troubleshoot server:/var/lib/setroubleshoot:/sbin/
26:libstoragemgmt:x:987:987:daemon account for libstoragemgmt:/:/usr/sbin/nologin
27-systemd-oom:x:986:986:systemd Userspace OOM Killer:/:/usr/sbin/nologin
7.在/etc/passwd文件中查找含有ROOT的所有行(不区分大小写,显示行号)
[root@rhcsa001 ~]# grep ROOT -in /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
PATTERNS为特殊字符8-12:
匹配模式 | 说明 |
grep x 文件名 | 查找文件里有 x 的行 |
grep ^[q] 文件名 | 查找文件里以q开头的行 |
grep ^[qf] 文件名 | 查找文件里以q/f开头的行 |
grep ^[^qf] 文件名 | 查找文件里以q/f开头以外的行 |
grep ^[0-9] 文件名 | 查找以数字开头的行 |
grep [0-9] 文件名 | 查找文件中包含数字的行 |
grep [q]$ 文件名 | 查找文件里以q结尾的行 |
grep ^h$ 文件名 | 查找文件里只有q的行 |
8.在/etc/passwd文件中查找以"r或b"关键字开头的行(显示行号)
[root@rhcsa001 ~]# grep ^[rb] -n /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
9.在/etc/passwd文件中查找以"r或b"关键字开头以外的行(显示行号)
[root@rhcsa001 ~]# grep ^[^rb] -n /etc/passwd 有好多,以3行为例!!!
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
10.在/root/itheima/passwd文件中查找以数字开头的行
[root@rhcsa001 ~]# echo 123 >> ./itheima/passwd 自己临时新增的!!!
[root@rhcsa001 ~]# grep ^[0-9] ./itheima/passwd
123
11.在/etc/passwd文件中查找以"n"关键字结尾的行(显示行号)
[root@rhcsa001 ~]# grep [n]$ -n /etc/passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
2.3.3.2-cut
用于从文件的每一行中提取文本片段,例如列或字段
[root@rhcsa001 ~]# cut --help
基本格式: cut 选项... [文件]...
选项 | 说明 |
-d | 指定分隔符,如果是空格需要用引号引起来 |
-f | 指定获取的列 |
-c | 制定获取的字符 |
[root@rhcsa001 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
我们可以注意到:文本内容是以":"作为分隔符的,一共有7列
1.查看/etc/passwd文件中第一列的全部内容
[root@rhcsa001 ~]# cut -d (分隔符) -f (要获取的列数) 文件名
[root@rhcsa001 ~]# cut -d : -f 1 /etc/passwd
root
bin
daemon
2.查看/etc/passwd文件中第1-3列的全部内容
[root@rhcsa001 ~]# cut -d : -f 1-3 /etc/passwd
root:x:0
bin:x:1
3.查看/etc/passwd文件中第1列和第3列的内容
[root@rhcsa001 ~]# cut -d : -f 1,3 /etc/passwd
root:0
bin:1
4.查看/etc/passwd文件中家目录所在列内容
[root@rhcsa001 ~]# cut -d : -f 6 /etc/passwd
/root
/bin
/sbin
5.查看/etc/passwd文件中第4个字符
[root@rhcsa001 ~]# cut -c 4 /etc/passwd
t
:
6.查看/etc/passwd文件中第1-4个字符
[root@rhcsa001 ~]# cut -c 1-4 /etc/passwd
root
bin:
2.3.3.3-uniq
去重显示:可以用于去除文本中连续的重复行
注意:只有连续相同的行才能被称为重复行!!!
[root@rhcsa001 ~]# uniq --help
基本格式: uniq [选项]... [INPUT [OUTPUT]]
选项 | 说明 |
-c | 可以统计重复行数 |
1.对/root/uniq.txt文件进行去重显示
[root@rhcsa001 ~]# cat uniq.txt
Welcome to Redhat
Welcome to Redhat
This is a new world
Welcome to Redhat
Welcome to Redhat
This is a new world
[root@rhcsa001 ~]# uniq uniq.txt
Welcome to Redhat
This is a new world
Welcome to Redhat
This is a new world
2.对/root/uniq.txt文件进行去重并显示重复行数
[root@rhcsa001 ~]# uniq -c uniq.txt
2 Welcome to Redhat
1 This is a new world
2 Welcome to Redhat
1 This is a new world
更新中。。。。。。
2.3.3.4-
2.3.4 权限管理
2.3.5 压缩解压
与Windows系统类似,为了节约磁盘空间,提高文件传输效率,Linux系统也经常会压缩文件。
Linux系统中压缩包的后缀有:.zip、.gz、.bz2、.xz等,后缀不同表示压缩方式不同,
使用的压缩命令也不同。
此外,Linux系统中提供了专门用于打包文件的命令——tar,该命令通常与压缩命令一起使用。
2.3.5.1 tar
tar命令是用于备份文件的命令,该命令可以打包和还原多个文件或目录
[root@rhcsa001 ~]# tar --help
基本格式: tar [选项...] [文件]...
选项 | 说明 |
-c | 创建一个新的归档文件/压缩文件 |
-C | 将压缩文件解压到指定目录 |
-tv | 以列表方式显示归档文件/压缩文件中的内容 |
-v | 显示命令执行过程 |
-x | 解压文件 |
-f | 指定归档文件/压缩文件名称(此选项必须放置最后紧跟压缩名) |
-z | 打包完成后使用gzip命令将包压缩(压缩格式:.tar.gz) |
-j | 打包完成后使用bzip2命令将包压缩(压缩格式:.tar.bz2) |
1.将/etc/passwd文件压缩到当前目录下,别名为:passwd.tar
[root@rhcsa001 ~]# tar -cvf passwd.tar /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd
[root@rhcsa001 ~]# ls
passwd.tar
2.将/root下所有以.txt结尾的文件压缩并进行查看
[root@rhcsa001 ~]# ls
1.txt 2.txt 3.txt
[root@rhcsa001 ~]# tar -cvf txt.tar ./*.txt
[root@rhcsa001 ~]# ls
1.txt 2.txt 3.txt txt.tar
[root@rhcsa001 ~]# tar -tvf txt.tar
-rw-r--r-- root/root 11 2024-10-08 13:00 ./1.txt
-rw-r--r-- root/root 11 2024-10-08 13:00 ./2.txt
-rw-r--r-- root/root 11 2024-10-08 13:00 ./3.txt
3.解压文件,将txt.tar压缩包解压到当前目录下
[root@rhcsa001 ~]# ls
1.txt 2.txt 3.txt txt.tar
#为了方便直观,我们对.txt文件进行别名操作!
[root@rhcsa001 ~]# mv 1.txt file1
[root@rhcsa001 ~]# mv 2.txt file2
[root@rhcsa001 ~]# mv 3.txt file3
[root@rhcsa001 ~]# ls
file1 file2 file3 txt.tar
#对txt.tar压缩包进行解压
[root@rhcsa001 ~]# tar -xvf txt.tar
./1.txt
./2.txt
./3.txt
#解压后的文件和压缩包同时存在
[root@rhcsa001 ~]# ls
1.txt 2.txt 3.txt file1 file2 file3 txt.tar
4.将txt.tar解压到/root/itheima目录中去
[root@rhcsa001 ~]# tar -xvf txt.tar -C itheima/
[root@rhcsa001 ~]# tree ./itheima/
./itheima/
├── 1.txt
├── 2.txt
└── 3.txt
5.将/etc/passwd文件压缩为gzip格式的passwd.tar.gz文件及解压
压缩:
[root@rhcsa001 ~]# tar -zcvf passwd.tar.gz /etc/passwd
[root@rhcsa001 ~]# ls
passwd.tar.gz
解压缩:
[root@rhcsa001 ~]# tar -zxvf passwd.tar.gz
[root@rhcsa001 ~]# tree
.
├── etc
│ └── passwd
└── passwd.tar.gz
2.3.5.2-zip/unzip
使用zip命令压缩文件时压缩包一般命名为"文件名.zip"
[root@rhcsa001 ~]# zip --help
基本格式:zip [选项] 压缩包名 文件
[root@rhcsa001 ~]# unzip --help
基本格式:unzip [选项] 压缩包 文件名
选项 | 说明 |
-9 | 指定最高的压缩率 |
-r | 递归压缩目录下文件及子目录下的文件 |
1.将/root/itheima下的file文件压缩为/root/itheima/file.zip文件
[root@rhcsa001 ~]# zip ./itheima/file.zip ./itheima/file
[root@rhcsa001 ~]# tree ./itheima/
./itheima/
├── file
└── file.zip
2.使用-r选项来递归压缩hello目录下所有文件到hello.zip中
[root@rhcsa001 ~]# tree
hello
├── a.txt
└── world
└── b.txt
[root@rhcsa001 ~]# zip -r hello.zip ./hello/
adding: hello/ (stored 0%)
adding: hello/world/ (stored 0%)
adding: hello/world/b.txt (stored 0%)
adding: hello/a.txt (stored 0%)
2.3.5.3-gzip/gunzip
只能用于压缩文件,压缩包一般命名为"文件名.gz",压缩后默认不保留源文件
[root@rhcsa001 ~]# gzip --help
基本格式: gzip [选项]... [文件]...
[root@rhcsa001 ~]# gunzip --help
基本格式: gunzip [选项]... [文件]...
选项 | 说明 |
-c | 压缩时不删除源文件 |
1.使用gzip命令将/root/itheima目录下的file文件压缩
[root@rhcsa001 ~]# tree ./itheima/
./itheima/
└── file
[root@rhcsa001 ~]# gzip ./itheima/file
[root@rhcsa001 ~]# tree ./itheima/
./itheima/
└── file.gz
2.使用gzip命令压缩/root/itheima目录下的file文件但保留源文件
[root@rhcsa001 ~]# tree ./itheima/
./itheima/
└── file
[root@rhcsa001 ~]# gzip -c /root/itheima/file >> /root/itheima/file.gz
[root@rhcsa001 ~]# tree ./itheima/
./itheima/
├── file
└── file.gz
2.3.5.4-bzip2/bunzip2
只能用于压缩文件,使用bzip2压缩文件时压缩包一般命名为"文件名.bz2"
[root@rhcsa001 ~]# bzip2 --help
基本格式: bzip2 [选项] 文件
[root@rhcsa001 ~]# bunzip2 --help
基本格式: bunzip2 [选项] 压缩包
1.压缩/root/dir目录下的file文件并解压
[root@rhcsa001 ~]# bzip2 /root/dir/file
[root@rhcsa001 ~]# bunzip2 /root/dir/file.bz2
2.3.5.5-别名命令
别名是命令的快捷方式,对于需要经常执行并需要很长时间输入的长命令创建快捷方式
此命令不仅可以设置别名,也可以用来显示别名(Linux自身对于经常使用的命令进行了简化)
[root@rhcsa001 ~]# alias --help
基本格式: alias 别名='原命令 [选项] [新名称 ... ]'
注意1:这里的格式要严格按照规定,不能随意添加空格!!!
注意2:重启系统后,别名消失
1.查看"ll"命令的别名
1.使用"ll"命令的功能
[root@rhcsa001 ~]# ll
total 4
drwxr-xr-x. 2 root root 20 Oct 8 13:41 etc
-rw-r--r--. 1 root root 1028 Oct 8 13:34 passwd.tar.gz
2.查看"ll"命令别名
[root@rhcsa001 ~]# alias ll
alias ll='ls -l --color=auto'
3.使用"ll"别名命令的功能
[root@rhcsa001 ~]# ls -l --color=auto
total 4
drwxr-xr-x. 2 root root 20 Oct 8 13:41 etc
-rw-r--r--. 1 root root 1028 Oct 8 13:34 passwd.tar.gz
2.给"ls"设置别名"openlab"并使用
1.设置"ls"别名"openlab"
[root@rhcsa001 ~]# alias openlab='ls'
2.使用"openlab"命令查看目录
[root@rhcsa001 ~]# openlab
anaconda-ks.cfg Documents Music Public Videos
Desktop Downloads Pictures Templates
2.3.5.6-历史命令
用来查看用户历史使用的命令
[root@rhcsa001 ~]# history --help
基本格式: history [选项] [参数]
注意:从安全角度讲,最好不要有历史记录;否则很方便!!!
选项 | 说明 |
number | 显示最近number条历史指令 |
-c | 清空当前历史命令 |
-a [file] | 后没跟文件时,默认将缓冲区历史命令写入~/.bash_history |
-r [file] | 将历史命令文件中命令读入当前历史缓冲区 |
-w | 将当前历史命令缓冲区命令写入历史文件中 |
1.查看最近的3条历史指令
[root@rhcsa001 ~]# history 3
195 ll
196 ls
197 history 3
2.4 存储管理
2.4.1 磁盘分区
2.4.2 格式化
2.4.3 挂载
2.4.4 LVM逻辑卷管理
2.4.5 RAID磁盘阵列
2.4.6 创建RAID
2.5 进程管理
2.6 服务管理
2.7 软件包管理
2.8 文本编辑器
2.8.1 数据流
对于数据流来说:
可分为标准输入、标准输出和标准错误输出
1.标准输入/stdin:指从键盘获取到的输入内容,代码为0
2.标准输出/stdout:指命令执行后把正确的信息输出在屏幕上,代码为1
3.标准错误输出:指命令执行失败后将错误信息输出到屏幕上,代码为2
2.8.2 重定向
重定向也通常称为重定向操作符
在Linux中重定向操作符有以下几种:
1.输出重定向操作符:> >>
2.输入重定向操作符:< <<
(箭头指向谁表示向谁输出内容)
>:覆盖添加 >>:追加添加
利用重定向的方式创建文件:
[root@rhcsa001 ~]# echo 123456 >>/root/itheima/file1
[root@rhcsa001 ~]# cat ./itheima/file1
123456
2.8.3 vi/vim编辑器
vi编辑器是Linux中最常用的文本编辑器,工作在字符模式下由于不使用图形界面,vi的工作效率
非常高,且它在系统和服务管理中的功能是其他带图形界面的编辑器无法比拟的
[root@rhcsa001 ~]# vi --help
基本格式: vim [文件 ..]
vi编辑器共有三种工作模式:命令模式、插入模式、底行模式
三种模式可以相互转换:
2.8.3.1-命令模式
命令模式:使用vi编辑器打开文件后默认进入命令模式;在该模式下可通过键盘控制光标的移动
实现光标移动和文本内容的复制、粘贴、删除等操作
1.光标移动
级别 | 按键 | 说明 |
字符级 | 上下左右键 | 光标向上下左右移动 |
行级 | 符号 $ | 光标移动到行尾 |
符号 ^ / 数字 0 | 光标移动到行首 | |
单词级 | 字母 w | 光标移动到下个单词的首字母 |
字母 b | 光标移动到本单词的首字母 | |
字母 e | 光标移动到本单词的尾字母 | |
文档级 | 字母 gg | 光标移动到文档首行 |
数字n+字母 gg / G | 光标移动到文档的第n行 | |
字母 G | 光标移动到文档尾行 | |
屏幕级 | 字母 H | 光标移至屏幕首部 |
字母 L | 光标移至屏幕尾部 |
2.复制和粘贴
按键 | 说明 |
字母 yy | 复制本行内容 *** |
数字n + 字母 yy | 复制光标所在行及后面的共n行 |
字母 p | 在光标处粘贴所复制的内容 *** |
3.删除
按键 | 说明 |
字母 dd | 删除光标所在行*** |
数字n +字母 dd | 删除包含光标所在行在内的后n行 |
字母 d + $ | 删除光标位置到行尾的所有内容 |
字母 d + gg | 删除光标位置到开头 |
字母 d + G | 删除光标位置到结尾 |
4.其他操作
按键 | 说明 |
字母 u | 撤销命令 *** |
字母 . | 重复执行上次命令 |
字母 J | 合并两行内容 |
2.8.3.2-插入模式
只有在插入模式下才能对文件内容进行修改操作,插入模式与底行模式之间不能直接转换
使用:可以输入以下字母由命令模式进入插入模式;
按Esc键可以从插入模式返回命令模式
操作符 | 说明 |
字母 i | 在光标前衣卫插入 *** |
字母 o | 在光标所在行的下一行插入 *** |
字母 O | 在光标所在行的上一行插入 |
字母 a | 在光标后一位插入 |
字母 A | 在光标所在行末尾插入 |
字母 I | 在光标所在行行首插入 |
字母 s | 删除光标所在字母 |
字母 S | 删除光标所在行 |
2.8.3.3-底行模式
底行模式可以对文件进行保存、查找和退出编译器等操作
使用:在命令模式下输入" : "或" / "进入底行模式
按Esc键可以从底行模式返回命令模式
操作 | 说明 |
:set nu | 设置行号(仅对本次操作有效) |
:set nonu | 取消行号(仅对本次操作有效) |
:n | 使光标移动到第n行 |
:/keyword | 用于关键字搜索(n向后搜索,N向前搜索) |
1.对/root/itheima/passwd文件设置行号
设置行号
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
:set nu
2.对/root/itheima/passwd文件关键字"root"进行查询
:/root
按键-n:向后一位查询关键字
按键-N:向前一位查询关键字
:noh取消高亮
底行模式还可以进行内容替换
操作 | 说明 |
:s/被替换内容/替换内容/ | 替换光标所在行的第一个目标 |
:s/被替换内容/替换内容/g | 替换光标所在行的全部目标 |
:%s/被替换内容/替换内容/g | 替换整个文档中的全部目标 |
:%s/被替换内容/替换内容/ge | 替换光标所在行的第一个目标, 且每替换一个内容都有相应提示 |
1.替换/root/itheima/passwd文件中的所有"root"为"openlab"
:%s/root/openlab/g
操作完毕后,如要保存文件或退出编辑器可先使用Esc进入底行模式并进行以下操作
操作符 | 说明 |
:q | 退出vi编辑器 |
:w :w 文件路径 | 保存编辑后的内容 将文件保存到新的路径下 |
:r 文件路径 | 用于将指定文件导入到当前文件光标所在 |
:wq | 保存并退出vi编辑器 |
:q! | 强行退出vi编辑器,不保存对文件的修改 |
:wq! | 强行保存文件并退出vi编辑器 |
快捷键:Shift + z + z | 保存并退出 |
1.将/root/itheima/passwd添加内容后保存到/root/passwd中
1.查看/root 此时还没有/root/passwd文件
[root@rhcsa001 ~]# ls
anaconda-ks.cfg dir01 Documents itheima Pictures Templates
Desktop dir02 Downloads Music Public Videos
2.使用vim编辑/root/itheima/passwd文件 并指定保存路径
[root@rhcsa001 ~]# vim ./itheima/passwd
THIS IS MY NEW LINE!!!
:w /root/passwd
3.查看/root/passwd文件内容
[root@rhcsa001 ~]# ls
passwd
[root@rhcsa001 ~]# cat passwd
2.创建/root/hello.txt文件并导入/root/itheima/passwd文件中
1.创建hello.txt文件
[root@rhcsa001 ~]# echo HELLO >>hello.txt
[root@rhcsa001 ~]# cat hello.txt
HELLO
2.使用vi在/root/itheima/passwd文件第一行插入
:r /root/hello.txt
效果
root:x:0:0:root:/root:/bin/bash
HELLO
2.9 课外补充
2.9.1.链接文件管理
在Linux中链接文件分为两种:
软链接文件 和 硬链接文件
2.9.2 软链接文件
软链接文件也叫符号链接文件,它和源文件一样也是一种文件,类似于软件的快捷方式
如果源文件删除,那么它所创建(指向)的软链接文件也会被破坏
创建软链接的语法为:
[root@rhcsa001 ~]# ln --help
基本格式: ln [选项]... 源文件 目标文件/链接名称
选项 | 说明 |
-s | 创建文件的软链接文件 |
1.将/root/itheima/passwd文件创建软链接文件/root/itheima/passwdlink
[root@rhcsa001 itheima]# ls
passwd
[root@rhcsa001 ~]# ln -s /root/itheima/passwd /root/itheima/passwdlink
[root@rhcsa001 ~]# ls ./itheima/
passwd passwdlink
2.源文件删除后,软链接文件失效
1.删除源文件
[root@rhcsa001 itheima]# rm -rfv passwd
removed 'passwd'
2.查看软链接文件
[root@rhcsa001 itheima]# cat passwdlink
cat: passwdlink: No such file or directory
2.9.3 硬链接文件
将源文件进行复制操作,它有自己的inode,移除源文件后硬链接还可以使用
创建软链接的语法为:
[root@rhcsa001 ~]# ln --help
基本格式: ln 源文件 目标文件/链接名称
1.创建硬链接文件/root/itheima/passwdhard
1.创建硬链接文件
[root@rhcsa001 itheima]# ln /root/itheima/passwd passwdhard
2.查看源文件、硬链接文件、软链接文件
[root@rhcsa001 itheima]# ll
total 8
-rw-r--r--. 2 root root 2224 Sep 26 17:01 passwd
-rw-r--r--. 2 root root 2224 Sep 26 17:01 passwdhard
lrwxrwxrwx. 1 root root 20 Sep 26 17:04 passwdsoft -> /root/itheima/passwd
2.9.4 软硬链接区别
-i选项 查看文件的Inode值
[root@rhcsa001 itheima]# ll -i
total 8
101941612 -rw-r--r--. 2 root root 2224 Sep 26 17:01 passwd
101941612 -rw-r--r--. 2 root root 2224 Sep 26 17:01 passwdhard
101941611 lrwxrwxrwx. 1 root root 20 Sep 26 17:04 passwdsoft
inode 硬链接数量
1.软链接是以路径的形式存在;
硬链接是以副本的形式存在,但不占用实际空间(Inode相同)
2.软链接可以跨文件系统,而硬链接不可以
3.软链接可以对不存在的文件进行创建,而硬链接只能对同一系统中存在的文件进行创建
4.目录可以创建软链接但不能创建硬链接