《Linux基础》03. 运行级别 · 实用指令

发布时间 2023-04-02 10:03:16作者: 第三天使


本文以 CentOS7.6 为例

1:运行级别

运行级别(Running Level),也可以称之为运行模式。

Linux系统有7个运行级别,用数字0~6表示:

运行级别 说明
0 系统停机状态。其实就是关机
1 单用户工作状态。为 root 权限,用于系统维护
2 多用户状态,没有 NFS(Network File Syetem)。即没有网络服务的多用户状态
3 完全的多用户状态,有 NFS。即有网络服务的多用户状态
4 被保留的模式。没有被使用的模式
5 X11控制台,完整的图形化界面模式。就是图形界面模式
6 系统正常关闭并重启状态。其实就是重启

切换运行级别
init 运行级别

init 指令需要超级管理员的权限,普通用户无法执行。

系统运行级别配置文件,存放在 /etc/inittab

包括 centos7 在内的一些 Linux 发行版对配置文件进行了简化:

在这里插入图片描述

multi-user.target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

To view current default target, run:
systemctl get-default

To set a default target, run:
systemctl set-default TARGET.target

通过以上说明可以看出,multi-user.target 即运行级别3。graphical.target 即运行级别5。

查看当前运行级别
systemctl get-default

设置默认运行级别为3
systemctl set-default multi-user.target

设置默认运行级别为5
systemctl set-default graphical.target

注意:
不要将默认的运行级别设置成 1 和 6。

问题:
假设 root 密码忘记了,如何找回密码?
大致方法:
启动系统,进入开机界面,然后进入编辑界面,再进入单用户模式来找回密码。
具体操作之后再演示

2:帮助指令

Linux 有两个常用帮助指令:man(获得帮助信息)、help(获得 shell 内置命令的帮助信息)。

2.1:man

功能描述:获得帮助信息。(manual)

基本语法
man 命令或配置文件

示例:

# 查看 ls 命令的帮助信息
man ls

2.2:help

功能描述:获得 shell 内置命令的帮助信息。

基本语法
help 命令

示例:

# 查看 cd 命令的帮助信息
help cd

3:文件目录指令

在 linux 下,命令选项可以组合使用,且以 “ . ” 开头的文件是隐藏文件。

3.1:pwd

功能描述:显示当前工作目录的绝对路径。(print work directory)

基本语法
pwd

3.2:ls

功能描述:显示指定工作目录下的内容。(list directory contents)

基本语法
ls [选项] [dirName]

“ dirName ” 可为绝对路径或相对路径。

常用选项

参数 说明
-a 显示所有文件及目录,包括隐藏文件。
-l 以列表的方式显示信息。
-t 按照修改时间排序,最新的文件在最前面。
-lh 以便于阅读的方式显示当前目录中的文件和目录大小。(如果不使用此选项,大小显示为字节)

示例:

# 查看当前目录的所有文件并以列表形式列出
ls -al

# 查看 root 目录的所有文件并以列表形式列出
ls -al /root

3.3:cd

功能描述:切换到指定目录。(change directory)

基本语法
cd [dirName]

“ dirName ” 可为绝对路径或相对路径。

示例:

# 回到自己的家目录
方式一、
cd
方式二、
cd ~

# 回到当前目录的上一级目录
cd ..

3.4:mkdir

功能描述:创建目录。(make directory)

基本语法
mkdir [选项] dirName

“ dirName ” 可为多级目录,可使用绝对路径或相对路径。

常用选项

参数 说明
-p 确保多级目录名称存在,不存在的就建一个。(创建多级目录必须使用)

示例:

# 在 /home/tom/ 目录下创建 test 目录
mkdir /home/tom/test

# 在 /home/ 目录下创建 bob 目录,并在 bob 目录下创建 test 目录
mkdir -p /home/bob/test

3.5:rmdir

功能描述:删除空的目录。(remove directory)

基本语法
rmdir [选项] dirName

“ dirName ” 可为多级目录,可使用绝对路径或相对路径。

rmdir 删除的是空目录,如果目录下有内容则无法删除。
如果需要删除非空目录,需要使用 rm -rf dirName (谨慎使用)。

3.6:touch

功能描述:创建新文件,也可用于修改文件或者目录的时间属性。

基本语法
touch [选项] name

“ name ” 可为绝对路径或相对路径。

示例:

# 在当前目录创建 test.txt 文件
touch test.txt

# 在 /home/ 目录下创建 test.txt 文件
touch /home/test.txt

3.7:cp

功能描述:主要用于复制文件或目录。(copy file)

基本语法
cp [选项] source dest

常用选项

“ source ” 为目录或文件,可使用绝对路径或相对路径。
“ dest ” 为目录,可使用绝对路径或相对路径。

参数 说明
-r 若 source 是一个目录文件,将复制该目录下所有的子目录和文件。(复制目录时必须使用)
-f 覆盖已经存在的目标文件而不给出提示。
-i 在覆盖目标文件之前给出提示,要求用户确认是否覆盖。

示例:

# 将 /home/bob/ 整个目录,拷贝到 /opt/
cp -r /home/bob /opt

# 将当前目录 hello.txt 拷贝到 /home/bob/ 目录下
cp hello.txt /home/bob

3.8:rm

功能描述:用于删除一个文件或者目录。(remove)

基本语法
rm [选项] name

“ name ” 为目录或文件,可使用绝对路径或相对路径。

常用选项

参数 说明
-i 删除前逐一询问确认。
-f 强制删除不提示。
-r 将所有文件与目录递归删除。(删除目录时必须使用)

示例:

# 将 /home/ 目录下的 hello.txt 文件删除
rm -f /home/hello.txt

# 删除 /home/ 目录下的 bob/ 目录
rm -rf /home/bob

3.9:mv

功能描述:将文件或目录移入其它位置,也可用于重命名文件或目录。(move file)

基本语法
mv [选项] source dest

“ source ”、“ dest ” 为文件或目录,可使用绝对路径或相对路径。

当 “ dest ” 为目录,且 “ source ”、“ dest ” 路径不同时,为移动到 “ dest ” 目录。

“ source ”、“ dest ” 均为文件,且路径相同,则为重命名。
“ source ”、“ dest ” 均为目录,且路径相同,则为重命名。
“ source ”、“ dest ” 均为文件,但路径不同,则为移动并重命名。
“ source ”、“ dest ” 均为目录,但路径不同,则为移动并重命名。

常用选项

参数 说明
-b 当 dest 存在时,在执行覆盖前,会为其创建一个备份。
-i 如果 source 与 dest 同名,会先询问是否覆盖 dest。
-f 如果 source 与 dest 同名,不会询问,直接覆盖 dest。

示例:

# 将 /home/ 目录下 cat.txt 文件重新命名为 pig.txt
mv /home/cat.txt /home/pig.txt

# 将当前目录下 info 目录改名为 logs。注意,如果 logs 目录在当前目录下存在,则该条命令会将 info 目录放入 logs 目录中
mv info/ logs/

# 将 /home/ 目录下 cat.txt 文件移动到 /home/test/ 目录下并重新命名为 pig.txt
mv /home/cat.txt /home/test/pig.txt

3.10:ln

功能描述:为某一个文件或目录在另外一个位置建立一个同步的链接。(link files)

链接可分为两种:硬链接(hard link)与软链接(符号链接,symbolic link)。
无论硬链接还是软连接,都可以看成是一个文件。

硬链接的意思是一个文件可以有多个名称,存在于同一个目录。
以文件副本的形式存在,但不占用实际空间。
不允许给目录创建硬链接。

软链接的方式则是产生一个特殊的文件指向另一个文件或目录的位置。可以跨目录。
以路径的形式存在,类似于 windows 里的快捷方式。
可以对目录进行链接。

基本语法
ln [选项] source dest

“ source ” 为目录或文件,可使用绝对路径或相对路径。
“ dest ” 为链接名(可视为文件),可使用绝对路径或相对路径。

常用选项

参数 说明
-s 创建的是软链接

示例:

# 在 /home/ 目录下创建一个软连接 myroot,连接到 /root/ 目录
ln -s /root /home/myroot

# 删除软连接 myroot
rm /home/myroot

4:查看指令

4.1:cat

功能描述:用于连接文件并打印到标准输出设备上。即查看文件内容。(concatenate)

基本语法
cat [选项] fileName

“ fileName ” 可为绝对路径或相对路径。

常用选项

参数 说明
-n 或 --number 由 1 开始对所有输出的行数编号。即显示行号。

cat 只能浏览文件,而不能修改文件。
为了浏览方便,一般会带上 “ | more ”。其中 “ | ” 为管道符号,“ more ” 命令与管道符号之后介绍。

示例:

# 查看 /etc/ 目录下的 profile 文件内容,并显示行号
cat -n /etc/profile

# 为了浏览方便,也可以:
cat -n /etc/profile | more

4.2:more

功能描述:是一个基于 vi 编辑器的文本过滤器。类似于 cat,不过会以全屏幕按页的形式显示文件内容,更方便使用者逐页阅读。

基本语法
more [选项] fileName

“ fileName ” 可为绝对路径或相对路径。

操作说明

操作 说明
【space】(空格键) 向下滚动一页
【enter】(回车键) 向下滚动n行,需要定义。默认为1行
【q】 退出 more,不再显示文件内容
【ctrl】+【f】 向下滚动一页
【ctrl】+【b】 向上滚动一页
【=】 输出当前行的行号
【:】+【f】 输出文件名和当前行的行号

4.3:less

功能描述:与 more 类似,用来分屏查看文件内容,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法
less [选项] fileName

“ fileName ” 可为绝对路径或相对路径。

常用选项

参数 说明
-e 当文件显示结束后,自动离开 less。
-N 显示每行的行号

操作说明

操作 说明
【space】(空格键) 向下滚动一页
【pagedown】 向下滚动一页
【pageup】 向上滚动一页
/关键字 向下查找 “ 关键字 ”,按【n】向下查找,按【shift】+【n】向上查找
?关键字 向上查找 “ 关键字 ”,按【n】向上查找,按【shift】+【n】向下查找
【q】 退出 less,不再显示文件内容

4.4:head

功能描述:用于显示文件的开头部分内容,默认情况下显示文件的前 10 行内容。

基本语法
head [选项] fileName

“ fileName ” 可为绝对路径或相对路径。

常用选项

参数 说明
-n 数字 指定显示文件开头的前几行内容

4.5:tail

功能描述:用于显示文件的末尾部分内容,默认情况下显示文件的末 10 行内容。

基本语法
tail [选项] fileName

“ fileName ” 可为绝对路径或相对路径。

常用选项

参数 说明
-n 数字 指定显示文件最后的几行内容
-f 把文件最尾部的内容显示在屏幕上并不断刷新,只要文件更新就可以看到最新内容。

4.6:history、!

功能描述:查看已经执行过的历史命令,配合 “ ! ” 使用可以执行历史指令。默认显示所有历史命令。

基本语法
history [选项]

常用选项

参数 说明
数字 指定显示最近使用过几个指令。
-c 清空当前历史记录(只是清空缓存中的历史记录,伪删除)

history 查询的每条历史命令前带有编号,因此可用以下命令来执行历史命令。

执行指定历史编号的命令
!编号

示例:

# 显示最近使用过的 10 个指令。
history 10

# 执行历史编号为 23 的指令
!5

# 执行最后一次命令
!!

5:>、>>、管道符【|】

5.1:>

功能描述:将一条命令的输出结果重定向。重定向到文件时,覆盖文件原有内容。

基本语法
命令 > fileName

“ fileName ” 为绝对路径或相对路径。
如果文件不存在则会创建。

示例:

# 将 /home/ 目录下的文件列表覆盖写入到 /home/info.txt 中
ls -la /home > /home/info.txt

5.2:>>

功能描述:将一条命令的输出结果重定向。重定向到文件时,追加到文件末尾。

基本语法
命令 >> fileName

“ fileName ” 为绝对路径或相对路径。
如果文件不存在则会创建。

5.3:管道符【|】

功能描述:主要用于多重命令处理,前面命令的处理结果输出作为后面命令的输入。

一些命令可从标准输入中读取要处理的文本,即从标准输入中读取参数。(如 cat)
对于部分命令则不支持从标准输入中读取参数,只支持从命令行中读取参数。(如 rm)

一般情况下,处理文本的命令(如 cat、more 等)均支持管道符。

基本语法
命令 | 命令

示例:

# 查看 /etc/ 目录下的 profile 文件内容,并显示行号,按分页显示
cat -n /etc/profile | more

# 对 hello.sh 文件进行排序、去重
cat hello.sh | sort | uniq

6:时间日期指令

6.1:date

功能描述:可以用来显示或设定系统的日期与时间。默认情况显示当前时间。

基本语法
date [选项]

常用选项

参数 说明
+'%Y' 显示当前年份
+'%m' 显示当前月份
+'%d' 显示当前号数
+'%Y-%m-%d %H:%M:%S' 显示年月日时分秒(-、:、空格 为自定义分割符,便于查看)
-s 字符串时间 根据字符串设置系统时间。

在显示方面,使用字符串表示,配合 “ %Y ” 等占位符可以设定显示的格式。
只显示一个参数时,可不加引号。

示例:

# 显示当前年份
date +%Y

# 显示年月日时分秒
date +'%Y-%m-%d %H:%M:%S'

# 设置系统当前时间为 2021-11-03 20:02:10
date -s '2021-11-03 20:02:10'

6.2:cal

功能描述:查看日历。默认显示当月日历。(calendar)

基本语法
cal [选项]

常用选项

参数 说明
年份 显示某一年的日历

示例:

# 显示当前日历
cal

# 显示 2023 年日历
cal 2023

7:搜索查找指令

7.1:find

功能描述:用于在指定目录下查找文件和目录。从指定目录向下递归地遍历查找。

基本语法
find [dirName] [选项]

“ dirName ” 可为绝对路径或相对路径。

常用选项

参数 说明
-name 关键字 查找文件名称等于关键字的文件。(如果要使用通配符模糊匹配,要加引号)
-iname 关键字 与 -name 类似,但会忽略大小写。
-user 用户名 查找属于指定用户的所有文件。
-atime 数字 查找指定几天被读取过的文件。(数字前可带 +、- 号,“+” 代表几天前,“-” 代表几天内)
-amin 数字 查找指定几分钟被读取过的文件。(数字前可带 +、- 号,“+” 代表几分钟前,“-” 代表几分钟内)
-mtime 数字 查找指定几天被修改过的文件。(数字前可带 +、- 号,“+” 代表几天前,“-” 代表几天内)
-mmin 数字 查找指定几分钟被修改过的文件。(数字前可带 +、- 号,“+” 代表几分钟前,“-” 代表几分钟内)
-size 大小 查找指定大小的文件。(可带 +、- 号,“+” 代表大于,“-” 代表小于。需要带单位)

linux 下常用通配符:【*】

示例:

# 查找 /home/ 目录下的 hello.txt 文件
find /home -name hello.txt

# 查找当前目录下的所有 txt 文件
find . -name '*.txt'

# 查找10分钟内被修改过的文件
find . -mmin -10

# 查找一天前被读取过的文件
find . -atime +1

# 查找整个 linux 系统下大于 200M 的文件
find / -size +200M

7.2:locate

功能描述:用于查找符合条件的文档,可以快速定位文件路径。

locate 指令利用事先建立的 locate 数据库(包含系统中所有文件名称及路径),实现快速定位指定文件。

手动更新数据库:updatedb

Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,对于 locate 数据库,一般是系统自己维护,管理员也可以手动更新

基本语法
locate [选项] 关键字

“ 关键字 ” 可为绝对路径或相对路径。

常用选项

参数 说明
-i 或 --ignore-case 忽略大小写

示例:

# 快速定位 hello.txt 文件所在目录
locate hello.txt

# 搜索 etc 目录下所有以 sh 开头的文件
locate /etc/sh

7.3:which

功能描述:会在环境变量$PATH设置的目录里查找符合条件的文件。可以查看某个指令在哪个目录下。

基本语法
which 关键字

示例:

# 查看 ls 指令在哪个目录
which ls

7.4:grep

功能描述:过滤查找,用于查找文件里符合条件的字符串或正则表达式。

基本语法
grep [选项] 关键字 name

“ 关键字 ” 使用通配符模糊匹配时要加引号

“ name ” 为目录或文件,可使用绝对路径或相对路径。使用通配符模糊匹配不需要加引号

常用选项

参数 说明
-n 显示匹配行及行号。
-i 忽略大小写进行匹配。
-r 递归查找子目录中的文件。

可配合管道符【|】使用

示例:

# 在 /home/ 目录下的 hello.txt 文件中查找 "good" 所在行,并且显示行号
方式一、
grep -n 'good' /home/hello.txt
方式二、
cat /home/hello.txt | grep 'good'

# 在当前目录下所有 txt 文件查找 "good" 所在行
grep -n good *.txt

# 在 /home/ 目录下所有 txt 文件查找以 "good" 开头的内容所在行
grep -n 'good*' /home/*.txt

# 对 hello.sh 文件进行排序去重以后找出包含 better 的行
cat hello.sh | sort | uniq | grep 'better'

8:打包压缩指令

8.1:gzip

功能描述:用于压缩文件,也可用于解压文件。默认为压缩文件。压缩后的文件后缀名为 “ .gz ”。

基本语法
gzip [选项] fileName

“ fileName ” 为绝对路径或相对路径。

常用选项

参数 说明
-d 或 --decompress 解开压缩文件。
-v 或 --verbose 显示指令执行过程(显示进度)。
-l 或 --list 列出压缩文件的相关信息。

示例:

# 将 /home/ 下的 hello.txt 文件进行压缩,并显示进度
gzip -v /home/hello.txt

# 将 /home/ 下的 hello.txt.gz 文件进行解压缩,并显示进度
gzip -dv /home/hello.txt.gz

8.2:gunzip

功能描述:用于解压 “ .gz ” 文件。

事实上 gunzip 就是 gzip 的硬连接,因此不论是压缩或解压缩,都可通过 gzip 指令单独完成。

基本语法
gunzip [选项] fileName

“ fileName ” 为绝对路径或相对路径。

常用选项

参数 说明
-v 或 --verbose 显示指令执行过程(显示进度)。

示例:

# 将 /home/ 下的 hello.txt.gz 文件进行解压缩
gunzip /home/hello.txt.gz

8.3:zip

功能描述:用于压缩文件与目录。压缩后的文件后缀名为 “ .zip ”。

基本语法
zip [选项] zipName name

“ zipName ” 为 zip 文件,可使用绝对路径或相对路径。

“ name ” 可使用绝对路径或相对路径。

常用选项

参数 说明
-r 递归压缩,将指定目录下的所有文件和子目录一并压缩,即压缩目录。
-v 显示指令执行过程或版本信息。

示例:

# 将 /home/test/ 目录压缩成 my.zip 且存放在 /bob/Desktop/ 目录下
zip -r /bob/Desktop/my.zip /home/test

8.4:unzip

功能描述:用于解压 zip 文件。为 “ .zip ” 压缩文件的解压缩程序。

基本语法
unzip [选项] fileName

“ fileName ” 为绝对路径或相对路径。

常用选项

参数 说明
-d dirName 指定文件解压后所要存储的目录。“ dirName ” 可为绝对路径或相对路径

示例:

# 将 myhome.zip 解压到 /opt/tmp/ 目录下
unzip -d /opt/tmp /home/myhome.zip

8.5:tar

功能描述:用于备份文件,也可用于打包、压缩文件。打包后的文件后缀名为 “ .tar ”,打包并压缩后的文件后缀名为 “ .tar.gz ”。(tape archive)

基本语法
tar [选项1] source [选项2]

“ source ” 为目录或文件,可使用绝对路径或相对路径。

常用选项1

参数 说明
-c 打包(生成 tar 文件)。
-x 还原文件(解压缩与解包)。
-z 通过 gzip 指令处理打包文件。
-v 显示指令执行过程详细信息。
-f [tName] 指定备份文件,用来压缩文件命名或指定解压文件。(tName可为绝对路径或相对路径。)

常用选项2

参数 说明
-C dirName 解压到指定的目录下。(dirName可为绝对路径或相对路径。)

示例:

# 将 /home/ 目录下的 pig.txt 和 cat.txt 压缩成 test.tar.gz,保存在 /root/Desktop/ 目录下
tar -czvf /root/Desktop/test.tar.gz /home/pig.txt /home/cat.txt

# 将 /home/ 文件夹压缩成 myhome.tar.gz
tar -czvf myhome.tar.gz /home/

# 将 myhome.tar.gz 解压到当前目录
tar -xzvf myhome.tar.gz

# 将 /root/Desktop/ 目录下的 test.tar.gz 文件解压到 /home/tom/ 目录下
tar -xzvf /root/Desktop/test.tar.gz -C /home/tom/

# 将 pig.txt 和 cat.txt 打包为 PC.tar (不压缩)
tar -cvf PC.tar pig.txt cat.txt

# 将 PC.tar 文件解包
tar -xvf PC.tar