👦个人主页:Weraphael
✍🏻作者简介:目前正在学习c++和算法
✈️专栏:Linux
🐋 希望大家多多支持,咱一起进步!😁
如果文章有啥瑕疵,希望大佬指点一二
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍
目录
- 一、简要概括Liunx
- 二、简述操作系统的概念
- 三、Linux操作特点
- 四、基本指令
- 五、简单理解指令的运行原理
一、简要概括Liunx
Linux
最初由Linus Torvalds(林纳斯·托瓦兹)
在1991
年发布。它是一个开源的操作系统,意味着源代码对任何人都是可用的,并且可以被自由地使用、修改和分发。
那么开源有什么好处呢?开源不是更加危险吗?为什么大部分企业还使用Linux
操作系统呢?
【Linux
的特点和好处】
- 如果一款操作系统能被企业所使用,又由于开源,那么第一个好处一定是 【成本低】
- 由于开源的特性,
Linux
系统的安全漏洞往往能够得到快速修复,同时也有众多安全工具和技术可用于保护系统免受恶意攻击。【安全】 - 你也许会听到
Windows
服务器长时间运行而突然宕机,但你绝不会听到Linux
系统服务器因为长时间不关机会卡死,在Linux
上几乎是不会出现这种情况的。Linux
服务器可以无休止的运行下去不宕机,因为它继承了Unix
卓越的稳定性和高效性。【好用、快、稳定】
二、简述操作系统的概念
- 概念:操作系统是一款做软硬件管理的软件。
以下是操作系统在计算机中所处的层次图:
最底层就是硬件(眼睛能看的到,摸得着),早期计算机是通过硬件电路来控制的,需要用户手动进行硬件控制。随着科技的发展,硬件变得越来越完善,所以就要有一款软件对硬件进行管理,我们称为操作系统。而硬件也随之变得复杂,功能也越来越多,因此在操作系统和硬件之间还有一个设备驱动。而有这些还是不够的,比如一个电脑,买回来仅仅是铁疙瘩,但是安装操作系统后,就可以开机(应用软件)。因此,在操作系统之上,我们还需要各种不同的应用软件,来满足用户的不同应用场景。
- 因此,操作系统的核心工作:对下管理好软硬件资源的手段,以达到对上提供良好的使用环境(稳定、快速、安全)
- 那么如何理解我们在计算机上的所有操作?比如,调用
printf
函数在显示屏上打印。
首先 我们在计算机上的行为都会转化为硬件行为。比如在文件上写东西,最后都会被保存在磁盘(硬件)中,这种转换全部都要自顶向下 贯穿 计算机软硬件结构。也就是说:几乎所有的软件行为都和操作系统有直接或间接关系。
三、Linux操作特点
Linux
操作特点:纯命令行。Windows
操作特点:也有命令行(WindowsPowerShell
),但更多是图形化界面,主要是面向用户。
四、基本指令
4.1 whoami
【功能】 查看当前操作用户
【说明】 在Linux
中,用户分为普通用户和超级用户,超级用户只有一个,就是root
;而普通用户可以通过指令创建很多个(具体指令可以查看往期博客:点击跳转)
4.2 ls
【语法】:
ls [命令选项] [目录]
【功能】该命令会显示该目录下的所有文件
4.2.1 常用选项1:-l
【功能】 查看当前目录下文件的详细信息。包括大小和权限信息(统称文件属性)
【说明】 此命令等价ll
(小写英文字母L
)
【补充】 文件 = 文件内容 + 文件属性(类型、大小、创建时间)
4.2.2 常用选项1:-a
【功能】 查看当前目录下的所有文件,包括隐藏文件(以
.
开头的文件)
【补充:隐藏文件的概念】
Linux
任何一个目录下面有有两个隐藏文件分别是.
和..
4.2.3 补充:当前路径和上级路径
不知道大家有没有仔细看 .
和..
的文件类型:目录。不妨可以分别cd
看看效果:
cd ..
:访问上级路径。
cd .
访问当前路径。
.
看似很鸡肋,其实它最大的用途是:执行当前路径下的可执行文件。
4.3 clear
【功能】 清屏
【说明】 这是一个绝对高频使用的命令,Linux
的操作都是以命令行的方式完成的,指令给多后,屏幕就被占满了,很不舒服,于是clear
这个指令能快速帮我们清屏
4.4 pwd
【功能】 显示当前用户所在路径。
- 超级用户
root
- 普通用户
4.5 cd
【语法】
cd [命令选项] [目录或路径]
【功能】 进入到指定目录
【补充】Linux
的整个目录结构一定是一颗多叉树,所以我们对文件的增删查改,本质就是对这颗多叉树的增删查改。并且每一个文件和目录的路径必定是唯一的。
- 最常见的用法:进入指定目录。
4.5.1 常用选项1:cd … 和cd .
4.5.2 常用选项3:cd ~
【功能】 返回家目录,单独
cd
也是默认返回家目录
【说明】 超级用户的家目录是/root
;普通用户的家目录是/home/用户名
。所有普通用户的账号都会统一放在/home
目录下。
4.5.3 常用选项3:-
【功能】 可以在最近访问的某个路径和当前路径之间反复横跳
4.5.4 补充知识1:绝对路径和相对路径
- 绝对路径:以根目录
/
开始写起的文件名或目录名称。(常用于配置文件) - 相对路径:以
.
或者..
开头来构建路径。相对路径更简短,依赖于当前环境的上下文。
例如,有以下文件结构:
假设当前所处工作目录是文件夹A
。文件C
的绝对路径是/文件夹A/文件夹B/文件C
,而相对路径可以是./文件夹B/文件C
4.5.6 补充知识3:路径分隔符
/
是Linux
的路径分隔符,而\
是Windows
的路径分隔符
4.6 tab键
【语法】
tab
【功能】可以补全命令和文件名,如果补全不了快速按两下tab
键,可以显示备选选项
4.7 tree
【语法】
tree [目录]
【功能】 将指定目录中的所有文件以树状结构展开。如果不加目录,默认展开当前所有目录
【说明】tree
是一个扩展指令,如果指令失效,说明还没有安装这个应用。需要在root
账户下输入yum install -y tree
下载该应用
4.8 touch
【语法】
touch file1 file2...
【功能】 新建文件
4.8 nano
【语法】
nano 文件
【功能】相当于记事本
【说明】如果指令失效的话,说明没有安装此应用,需要在root
账户下输入yum intall -y nano
进行下载
退出的话可以根据以下提示,其中^
代表Ctrl
键
4.9 mkdir
【语法】
mkdir [选项] 目录
【功能】 创建目录(文件夹)
4.9.1 常用选项1:-p
【功能】一次可以建立多个目录
4.10 rm
【语法】
rm [选项] [文件名或目录名]
【功能】rm
命令可以删除文件或目录
rm
后面不跟任何选项只能删除文件。
4.10.1 常见选项1:-r
【功能】 删除目录
4.10.2 常见选项2:-i
【功能】删除前会询问是否删除
以下是在普通用户下实验,因为超级用户默认会询问
4.10.3 常见选项3:-f
【功能】 强制删除
4.10.3 补充知识:通配符:*
含义:表示所有
4.11 echo
【语法】
echo 字符串
【功能】 打印字符串到显示屏上
4.12.1 > 和 >> 和 < 的区别
Linux
下一切皆文件>
是输出重定向。它通常是本来是打印到显示器文件的内容重定向到其他地方。>>
是追加重定向。追加重定向是将程序的输出追加到文件末尾的操作。
echo 字符串 > 文件
- 清空文件内容,最后将字符串写入文件中。
因此,如果想要清空文件的所有内容,最快捷的指令:>文件名
echo 字符串 >> 文件
- 将字符串追加到目标文件中
注意:如果重定向的目标文件不存在,会自动创建。
因此,除了touch
可以创建文件以外,重定向也可以
- 输入重定向
<
:通过输入重定向,可以将程序原本从键盘输入改为从文件的输出中获取输入数据。
4.12 cp
【语法】
cp [选项] src dest
【功能】 复制文件或目录
- 普通文件的拷贝
或者还可以复制到别的目录下:
注意:同一个目录下,不能出现同名文件(常识)
- 拷贝目录。必须带
-r
选项
注意:无论是删除目录还是拷贝目录,都要有-r
选项
4.13 mv
【语法】
mv [选项] src dest
【功能】 重命名 + 剪切
【说明】mv
对目录操作是不需要-r
选项的
- 重命名
- 剪切
- 对目录操作
4.14 alias + which
首先看以下两个问题:
-
你是如何看待指令的? — 指令和可执行程序都是可以被执行的,因此指令就是可执行程序,和我们自己写的代码编译好的程序没有区别。
-
我们在执行指令之前,应该先做什么? — 先在系统中查找对应的指令,因此指令一定系统的在某一个特定位置(
/user/bin
)存在的
接下来解释alias
:
【语法】
alias 重命名目标指令='源指令'
【功能】为比较长的指令起别名
【说明】相当于重命名
在前面我们说过,ls -l
是等价于ll
的,我们可以使用 which
来查看ll
的系统所在路径:
从上图可以得出:ll
是ls -l
的别名
因此,alias
的功能就是为指令进行重命名
若要删除别名:alias 别名=’’
4.15 cat
【语法】
cat [选项] [文件]
【功能】 查看目标文件的内容
【说明】只适合小文本
4.15.1 常用选项1:-n
【功能】 查看内容时,输出对应行号(包括空白行)
4.15.2 常用选项2:-b
【功能】 查看内容时,输出对应行号(不包括空白行)
4.15.3 常用选项2:-s
【功能】 出现多行空格时,只显示一行
4.16 more(了解)
【语法】
more [选项][文件]
【功能】 类似cat
,但它比cat
指令更适合看大文本
【说明】按enter
进入下一页,按q
退出,而它不能回翻看,因此比较鸡肋。而less
可以做到
4.16.1 常用选项1:-n
【功能】 显示到
n
行就停下来
4.16.2 常用选项1:/xxx
【功能】 搜索
4.17 less
【语法】
less 文件
【功能】查看长文档
【说明】可以依靠方向键控制查看(前翻 + 后翻)。注意:按q
键退出
4.17.1 常见功能1:/关键字
【功能】向下搜索关键字
4.17.2 常见功能1:?关键字
【功能】 向上搜索字符串
这里就不演示了,读者可以自己做实验
4.18 head
【语法】
tail [选项] [文件]
【功能】 不跟选项默认显示开头的前10
行内容。
4.18.1 常见选项:-n
【功能】 显示文件内容的前
n
行
4.19 tail
【语法】
tail [选项] [文件]
【功能】 不加选项默认显示指定文件末尾10
行内容
【说明】 常用于查看日志文件。
4.19.1 常见选项:-n
【功能】 可以查看文档的指定后
n
行
4.20 管道 |
【语法】
|
【功能】 将|
左侧的指令的输出作为右侧指令的输入。
假设借助管道,读取到文档的30行~50行
4.21 wc
【语法】
wc [文件]
【功能】 查看文件信息,依次显示包括【行数、单词数、字节数、文件名】
4.21.1 常用选项1:-l
【功能】 仅统计指定文件中的行数。
4.21.2 常用选项1:-w
【功能】 仅统计指定文件中的字符串的个数。
4.21.3 常用选项2:-m
【功能】 统计指定文件中的字符个数。
4.22 date
【语法】
date [选项]
【功能】 获取当前的时间
4.22.1 常见选项1:格式化输出时间
【语法】
date +%Y-%m-%d-%H-%M-%S
【打印顺序】 年月日时分秒
【说明】 中间的符号-
可以根据自己的喜欢来修改
4.22.2 时间戳
【如何获取时间戳】
date +%s
【说明】 时间戳是指从1970年1月1日0时0分0秒
到现在所经过的时间,是计算机中的一个重要概念
将时间戳转化对应的时间:date -d @时间戳
也可以格式化
4.23 find
4.23.1 -name
- 在特定目录下搜索特定文件。
find 指定目录 -name 文件名
以下是在家目录中,查找test.c
文件
4.23.2 -size
- 在特定路径下,根据文件大小进行搜索。
find 特定路径 -size [+/-]文件大小
# +: 搜索出超过文件大小的所有文件
# -: 搜索出不超过文件大小的所有文件
# 不写+/-: 代表搜索出指定的大小文件
4.23.3 -user 和 -group
- 根据文件的属主和所属组进行匹配搜索。
find 指定路径 -user xxx # 搜索属主为 "xxx" 的文件
find 指定路径 -group xxx # 搜索所属组为 "xxx" 的文件
4.23.4 -mtime 和 -mmin
- 根据文件的修改时间进行匹配搜索。
mtime
:单位天mmin
:单位分钟
find 指定路径 -mtime -7 # 搜索最近 7 天内被修改的文件
find 指定路径 -mmin +60 # 搜索超过 60 分钟未被修改的文件
4.23.5 -exec
- 对搜索到的文件执行指定的命令。
find 指定路径 -name 文件 -exec 对文件执行的命令
4.24 whereis
【语法】
whereis [目标]
【说明】 在系统特定的路径下查找,既可以找到可执行程序,也可以找到手册、安装包、压缩包等之类的
4.24.1 find、which和whereis的区别
find
用于搜索文件和目录which
用于查找可执行程序(指令)的位置whereis
在系统特定的路径下查找,既可以找到可执行程序,也可以找到手册、安装包、压缩包等之类的。
4.25 grep
【功能】 在文件中搜索字符串所在行。
grep '字符串' 文件
4.25.1 常用选项1:-v
【功能】 反向匹配,输出不匹配模式的行。
4.25.2 常见选项2:-n
【功能】 打印搜索字符串所在的行,并显示所在行号
4.25.3 常见选项3:-i
【功能】 忽略大小写进行匹配搜索。
4.25.4 常见选项4:-r
- 递归搜索目录中的文件。
grep -r "xxx" dir
# 在目录dir及其子目录中递归搜索文件中包含字符串"xxx"的行:
4.26 zip + unzip
zip
:用于创建zip
格式的压缩文件。unzip
:用于解压zip
格式的压缩文件。- 安装
zip/unzip
指令:sudo yum install -y zip unzip
【基本语法】
zip
# 压缩多个文件
zip 指定压缩名.zip 文件...
# 压缩文件中存在目录需要加-r
zip -r 指定压缩名.zip 目录...
unzip
# 默认解压到你所在的当前目录
unzip 压缩名.zip
# 指定目录解压
unzip 压缩名.zip -d 指定目录
【使用案例】
4.27 tar
- 打包解压为一体。解压文件的后缀一般为
.tar.gz
或者.tgz
【基本语法】
# 打包
tar czf 压缩包名称.tar.gz 打包文件
# 预览压缩文件
tar tzf 压缩包名称.tar.gz
# 解压
# 默认解压到你所在的当前路径
tar xzf 压缩包名称.tar.gz
# 指定路径解压
tar xzf 压缩包名称.tar.gz -C 指定路径
【使用案例】
- 打包和解压
- 查看压缩包里面的文件
4.28 bc
【语法】
bc
【功能】 就是一个Linux环境下的计算器
【说明】 输入quit
退出
- 可以配合管道
|
使用
4.29 uname
【语法】
uname [选项]
【功能】uname
用来获取电脑和操作系统的相关信息,可显示Linux
主机所用的操作系统的版本、硬件的名称等基本信息。
- 选项一:
-a
详细输出所有信息。依次为内核名称,主机名,内核发行版本,内核版本,硬件名,处理器类型,硬件平台,操作系统名称
- 选项二:
-s
只显示内核名称。
- 选项三:
-n
只显示主机名
- 选项四:
-r
(面试题)
显示内核版本号。
- 选项五:
-v
显示内核版本
- 选项六:
-m
显示机器硬件架构。
- 选项七:
-p
显示处理器类型。
- 选项八:
-i
显示硬件平台。
- 选项九:
-o
显示操作系统名称。
4.30 重要的几个热键
-
Ctrl + c
:终止因为程序或者指令异常,而导致无法进行指令输入。 -
Ctrl + d
:退出 -
history
:查看历史命令 -
ctr + r
:搜索历史命令
五、简单理解指令的运行原理
Linux
严格意义上说的是一个操作系统,我们称之为“核心(kernel
) “ ,但我们一般用户,不能直接使用操作系统,而是通过kernel的“外壳”程序,也就是所谓的shell
(命令行解释器)来与kernel
沟通。如何理解?为什么不能直接使用kernel
?
首先大家必须要有以下概念
我们所输入的指令(可执行程序),最终都要在操作系统内部运行,但由于操作系统使用难度大。用户不能直接和操作系统打交道。因此,用户和操作系统之间有一个媒介叫命令行解释器(bash
)。
它的工作原理是这样的:
- 用户将指令给命令行解释器。
- 命令行解释器主要的功能是接受用户输入的命令,并将其转换为操作系统能够理解和执行的指令。
- 操作系统接收到后,就会把结果反馈给命令行解释器,命令行解释器再将结果翻译给用户。
因此,命令行解释器存在的意义有两点:
- 进行命令行解释
- 变相保护操作系统,对于用户的非法请求直接拦截。