Linux常用指令以及基本知识

在这里插入图片描述

前置知识

操作系统

一:操作系统(OS)是什么?
操作系统是一款做软硬件管理的软件
在这里插入图片描述
最早期的计算机都是靠硬件电路去控制,当时只有硬件,需要用户手动进行硬件控制,随着发展,硬件功能更加完善,更加复杂,因此我们需要一款软件对这些硬件进行管理:操作系统
但又由于底层的硬件的多元化,接口变得更加复杂,每一种硬件为了能够正确被访问到,在操作系统和硬件之间就有了一个东西——设备驱动

举例:开机以后,我们将鼠标的USB接口插入电脑,此时物理层面鼠标和电脑已经连接起来,但是此时鼠标无法移动,等上两三秒,电脑右下角会弹出:驱动安装成功/加载成功 此时鼠标才能移动起来
1、当我们把USB插入电脑,此时操作系统已经开始加载
2、鼠标和硬件已经属于连接状态,但是鼠标依旧无法移动,这是设备驱动程序(硬件驱动相关的工作)还未完成

操作系统:管理、决策 —— 老板
硬件:办事儿 —— 项目经理
设备驱动:让硬件办事儿 —— 程序员
应用软件:具体需求 —— 用户

老板做出决策:我们需要做A产品,需要哪些人,什么时间做完,交由项目经理进行完成,然后底层的程序员就开始写了

操作系统、设备驱动、硬件 合起来就是软硬件服务
我们在操作系统之上,我们需要各种不同的应用软件,来满足用户的不同的应用场景

二:为什么要有操作系统?
一个好的操作系统的衡量指标?
稳定、快速、安全

操作系统的核心工作:
通过对下管理好软硬件资源的手段,达到对上提供良好的(稳定、快速、安全)操作环境、使用环境

理解我们在计算机上的所有操作:
printf -> 显示器打印:
文件 -> 磁盘文件中写入
玩游戏 -> 向网络发送数据
我们在计算器上的所有行为都会转换成硬件行为!
几乎我们的所有软件行为,未来都要和操作系统直接或间接相关
我们所有的软件行为,全部都要自顶向下贯穿计算机软硬件结构
在这里插入图片描述

命令行

Linux操作特点:纯命令行 的形式输入指令,当然Linux也有图形化界面,但是在企业服务器后端所有Linux服务器,没有显示器、没有键盘,都是通过远程登陆的方式来访问。
Windows也有命令行(cmd/PowerShell),也有图形化界面,但Windows是ToC的模式,主要用于面向普通用户,所以图形化为主,但无论是图形化还是指令,本质都相同,即都是我们用图形化、指令来触发操作系统帮我们做某项工作

先有指令,还是先有图形?为什么?
先有指令!
先有键盘,还是先有鼠标?
先有键盘! 计算机最开始的目的是输入输出,鼠标可完成不了输入输出
为什么字母不是abcdef依次排好?
因为那时候的对文字的输入输出是通过打字机,而打字机的布局就是qwer这一套
总结:硬件的产生先后顺序影响了,直接决定了操作出现的先后顺序。

基本指令

本篇博客有这些指令、通配符、重定向:
ls pwd mkdir cd touch whoami tree rm mv cp cat echo man which cat less more head tail date whereis cal grep find zip unzip tar bc uname free df lscpu history nano shutdown halt reboot [Ctrl] + D [Tab][Tab] [Ctrl] + R [Ctrl] + C *通配符 管道| 输出输入重定向> >> <
不要怕!

前期指令的学习是以记忆为主,并没有太多需要理解的地方,我们下面会把一些常用的命令告诉大家,而记忆的话,主要就是多用,多练,而不是看着这些指令去背,这一部分比较枯燥,希望大家能够坚持下来!
ls - 查看当前目录下的文件列表,包括子目录与文件
ls [选项][目录或文件]
命令的选项,选项可以理解为命令的子功能
在Linux下文件夹更愿意被称为目录,只是称呼上的改变

ls —— 仅显示文件名属性
在这里插入图片描述
用空格隔开的都是一个个文件(默认状态下蓝色的就是文件夹,其没有类型,黑色的是文件,有类型)

ls -l —— 显示文件更多的信息,以列表的形式打印
在这里插入图片描述
ls -l 还可以简写为 ll
在这里插入图片描述
ls -a 显示隐藏文件
所有隐藏文件都以 .开头
在这里插入图片描述
每个目录下都有 . ..这两个文件隐藏文件
关于...
我们Linux任何一个目录下面都有两个隐藏文件:. …
… 表示当前路径的上级路径,我们可以通过cd …回到上级目录
. 表示当前路径,帮助用户快速定位当前目录下的一个文件
在这里插入图片描述
关于选项的书写:
下面三种形式等价:
ls -a -l —— 支持多选项,这里的意思就是将隐藏文件打印以列表的形式打印到屏幕上
ls -al
ls -la
在这里插入图片描述
在这里插入图片描述
文件类型:
d:目录
-:普通文件

ls 目录名
在这里插入图片描述
ls -d 目录名—— 让目录显示其自身属性,而不是显示它里面的文件信息

ls -F —— 在文件名后面附上一个字符来说明文件类型:* 表示可执行的普通文件, / 表示目录, 什么也没有带表示普通的文本文件, @表示符号链接, | 表示FIFOs, = 表示套接字 后面三种以后会讲
在这里插入图片描述

总: lsls -als -lls -dls -F

cdpwd - 跳转当前目录 和 显示当前命令行中我所处的目录在哪里
Linux的路径分隔符: / 斜杠
Windows的路径分隔符:\ 反斜杠
在这里插入图片描述
在这里插入图片描述
cd .. 能够回退当上一级目录

一直cd .. 最后回退到 / 此时就回退不了了,这个地方的 / 是Linux根目录
在这里插入图片描述
一个目录中可以放目录或普通文件
整个Linux的目录结果就是一个树形结构
在这里插入图片描述
Linux的目录整体是一个多叉树,他的根节点就是根目录,它的叶子节点,一定是空目录或非目录文件(普通文件),路上节点一定是非空目录
所以我们对文件或目录的增删查改,本质都是对这颗多叉树的增删查改
其中对于查:我们通常是通过路径来进行定位
如何保证路径定位的正确性?
具有唯一性:任何一个节点都只有一个父节点。(树的特性)
我们把从根目录开始,定位到指定位置,具有唯一性的路径,称为绝对路径
我们可以用cd + 绝对路径,来直接进入到目标位置
在这里插入图片描述
我们以自己当前所处的路径为起始参照点,来进行特定的文件定位,我们这种路径,称为相对路径
常用cd ../ cd ./ 等来定位、进入、退出
相对路径起始处不能有 / ,不然会从跟目录开始寻找
在这里插入图片描述
1、绝对路径往往较长,但是不变,一般在一些固定场景,配置文件中使用
2、一般命令行输入,常用相对路径

网页中:
在这里插入图片描述
其实这个文件是一种文本文件,放到浏览器之后,通过渲染,显示…,我们就能够看到文字、图片等信息

并且注意到这里都是 / 也就是说明b站的后端服务器使用的操作系统是Linux操作系统。

家目录相关知识:
超级用户root和普通用户的家目录不同,超级用户的路径是/root 普通用户的路径是/home/XXX
在这里插入图片描述
whoami查询自己的用户名
在这里插入图片描述
把能够支持多用户登陆的系统,称为多用户操作系统。(一个超级管理员root和多个普通用户)

我们用root超级用户登陆后,cd / 或者cd .. 回看到如下列表:
在这里插入图片描述
在home中,可以看到所有普通用户
在这里插入图片描述

cd ~ —— 让用户进入自己的家目录
cd ~/XXX ——从家目录开始想深部寻找
cd - —— 让用户回到上一次所在目录,用于很深入的目录的往返操作
在这里插入图片描述

mkdir - 创建目录(make directory)
mkdir 目录名
在这里插入图片描述

我们这里方便后序展示,使用了tree命令,这个命令需要在root账号下安装:
yum install -y tree 目前记住这个命令就行了,不需要多考虑
有了这个命令后,我们可以 tree .来显示以目录为根的所有文件
在这里插入图片描述

mkdir -p 目录名1/目录名2/目录名3/目录名4 … 以当前目录为起点创建一串递归的目录
在这里插入图片描述
mkdir 目录1 目录2 目录3 … 在当前目录创建多个目录
在这里插入图片描述

touch - 创建普通文件
在这里插入图片描述
touch 普通文件1 普通文件2 普通文件3 … 创建多个文件
在这里插入图片描述

rmdir - 删除空目录
在这里插入图片描述
在这里插入图片描述

这个指令用的很少,有更好的替代方案

rm - 删除文件

删除的时候可能(与系统有关)会有提示:是否删除? y - 删 n - 不删
在这里插入图片描述
rm -f —— 不提示,直接删(强制删除)
在这里插入图片描述
rm是不能直接删除目录文件的,需要 -r 选项
rm -r —— 删除目录文件、普通文件(如果目录内有子文件,由于目录是递归定义,所以删除时也需要递归删除,也就需要递归的去询问子文件)
在这里插入图片描述
如果我们想删除的目录文件递归很深,文件很多,一个个询问很麻烦,也确定所有东西都不需要了,那么就将 -r 和 -f 命令合在一起 rm -fr ** 这个指令也就是我们用的最用的删除文件的指令了**
在这里插入图片描述
同理rm也可以一次性删除多个文件
在这里插入图片描述
rm -fr *可以删除当前目录的所有文件
在这里插入图片描述

注意!默认情况下在Linux中,删了就是删了,没有回收站的!!!(能恢复,但成本特别高!)

rm -rf / 在root超级用户登陆的情况下,删除根目录下所有能删的(不能删的是操作系统正在使用、用户正在使用的一些文件),这些能删的包括几千条指令,删了以后,指令无法操作,就真的完全没有任何挽救的办法了,只能重装系统 真正实现删库跑路! : )
请添加图片描述
这个指令非常危险,因此根据系统,执行这条指令的时候指令会有些许不同,目的都是提供一定的保护,防止误操作
在这里插入图片描述
这里是我执行后的情况:
在这里插入图片描述
大家前期自己的云服务器上没什么数据,随便造,随便玩,以后有数据了就不舍得这么玩了,工作中可别这么玩,敢玩的都真刑

* - 通配符,在该目录上寻找具有某些特点的文件
ls *.c —— 列出该目录下以.c结尾的所有普通文件、目录
ls test* —— 列出该目录下以test开头的所有普通文件、目录
在这里插入图片描述

man - 查看文档
man [指令/函数]
man ls - 查看ls的官方文档
man pwd - 查看pwd的官方文档

特别的:printf在Linux中也是一条指令,当然命令printf和C语言函数printf不同
在这里插入图片描述
我们可以通过man 后面加上手册号数,明确的指定出要查的手册
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
手册内容很长,是通过小键盘↑↓建进行翻页
我们是允许不带手册编号直接使用man指令的
其查找顺序是按照1号、2号、3号手册依次寻找我们想要查找的内容
在这里插入图片描述
如果有同学在这里发现man 3 printf无法出现内容,这可能是因为man手册不全造成,可以通过yum install man-pages进行下载解决
在这里插入图片描述
echo - 让后面的字符串流到屏幕或文件中
echo 字符串
在这里插入图片描述
关于输出重定向 > :本来应该输出到显示器中的内容,输出到文件中

cat - 打印文件内容
在这里插入图片描述
cp - 拷贝
cp src dest 对src文件进行拷贝,拷贝到dest (默认在当前目录下拷贝,此时src和dest不能同名)
如果不在当前目录下拷贝,则可以同名
如果拷贝的dest已经在目标目录中存在,要么直接覆盖,要么会询问,如果不想要询问直接覆盖,就用 -f (force)选项(两种情况与系统 或者 是自身用户类型有关(普通用户、超级用户)
在这里插入图片描述
如果是针对目录文件
则需要-r选项,去递归搜索该目录下的所有文件
在这里插入图片描述
如果发现在cp的时候回询问,然后目录下很多文件,就用-fr
在这里插入图片描述

mv - 剪切并重命名
mv old_name_place new_name_place

在这里插入图片描述
在这里插入图片描述
此外mv的对象不一定是普通文件,也可以是目录

特殊的,在mv目录的时候,新目录名如果存在,那么就是将旧目录放在新的目录名里面,而不是覆盖!

在这里插入图片描述
^C —— Ctrl C —— 中止因为程序或指令异常导致的无法恢复的操作或者是输入出错带来的多次退档的很麻烦的操作

是如何看待指令的?
指令和可执行程序都是可以被执行的 —— 指令就是可执行程序!

我们在执行指令之前,我们应该先做什么?
在系统中查找对应的指令
找不到 - command not found
找到 - 执行
在哪里找?Linux中把指令放在哪里了?
/usr/bin/
在这里插入图片描述
结论:
指令是在系统中特定路径下存在的
一定是某种可执行程序( C、shell脚本…)
在这里插入图片描述
这里我在test.c文件中编写了一段C语言代码,然后用gcc进行编译,得到了一个可执行程序test.exe,然后把他放到了 /usr/bin/路径下(这里现在可以不管,反正就是得到了一个C的可执行程序,然后给放到了系统这个特定的路径下)

而这种行为,也就是安装软件
在这里插入图片描述
此时,我们直接test.exe就能够运行这段代码,所以也就验证了,指令就是可执行程序,是别人的代码或者脚本,只不过别人写的很优秀~

而在Linux中,将某个可执行程序( + 配置关系 + 依赖关系)删掉,这种行为就叫做卸载软件

总的来说,对于指令、我们自己写的可执行程序、工具等可执行程序,其不同,仅仅在于打开、运行的方式不同
在这里插入图片描述
我这里就是自己写的一个test.exe可执行程序,因为它没有在/usr/bin/目录下,所以执行它就需要 ./test.exe这样来手动定位执行这个可执行程序

which - 查看指令的路径
alias - 指令重命名
在这里插入图片描述
在这里插入图片描述
我们which去寻找ls -l的简写ll时发现:alias ll='ls -l --color=auto alias ll='ls -l是重命名 --color=auto是配色方案
也就是系统并没有真正的写了一个ll的指令,而是对ls -l 进行重命名转换成的

当然我们也可以写自己的重命名:
alias new_name='commond'
类似于define重定义
在这里插入图片描述
而我们想要取消这个重命名,就 alias 新名=‘’ 即可
在这里插入图片描述
其实也就是让la不执行任何操作,并没有真正的删除这个重命名,其实我们并不用太担心,我们这样以命令行的方式写出来的重命名,在关闭了Xshell客户端以后,我们的重命名也就失效了
而系统中类似于ll这种重命名,它不会失效的原因在于:ll是写在了配置文件中

思想:Linux下一切皆文件
对文件的操作就是读和写 - 比如:显示器(向显示器打印->向显示器上写入 ,fread(){;}没有从显示器上读取的方法,认为读方法是空的)、键盘(从键盘进行读取-> fread ,认为写方法 - 空),普通文件(fread() fwrite() 都有)、网卡(收发数据 - fread fwrite)、话筒(采集声音 - fread 写方法 - 空)、触摸板(触摸的过程 - 写)
我们认为这种读和写的方式也就是IO

在这里插入图片描述
因此我们以后就认为是:将"hello Linux"写到显示器文件中

echo "hello Linux" > out.txt —— 重定向,本来是写入到显示器文件中,然后这里是写入到磁盘文件out.txt中

echo "XXX" > File 向磁盘文件写的时候是覆盖写,旧数据全都被覆盖掉
(1、清空文件 2、写入新内容)
如果想要清空文件:
> File
即可,即把空内容写到文件File中
在这里插入图片描述

而我们也有不清空数据,接着写入的重定向
echo XXX >> File —— 追加重定向 (在文件的结尾处,写入)会自动换行
在这里插入图片描述
对于>输入重定向和>>追加重定向,如果目标文件不存在,那么会自动生成一个目标文件
因此创建文件,也可以 >file.txt —— 即可得到一个新的文件

cat - 从某处读取内容
在这里插入图片描述
在这里插入图片描述
原本应该从键盘文件上读取,现在从指定文件读取
在这里插入图片描述
对于cat指令 cat < out.txt 和 cat out.txt(结果上没有区别,但是内部还是有一定区别的) 但是对于其他的指令,输入重定向是有明显意义的

cat -n —— 对所有行编号(包括空行)
在这里插入图片描述
cat -s —— 不输出多行空格
在这里插入图片描述
在这里插入图片描述
cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $ cnt"; let cnt++; done > code.cpp 全部执行完,然后一次性重定向到code.cpp中
cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $ cnt" > code.cpp; let cnt++; done 每执行一次循环,重定向到code.cpp中,注意这里就需要是>>追加重定向

上面是shell脚本,这里是10w次echo后的结果输入重定向到test.txt文件中
我们想要查看第1000行,cat没办法处理
cat是一次性将文件打印完,会进行刷屏,想要看前部分会特别麻烦。
cat适合小文本、代码片段

因此我们还有指令

more - 打印信息到屏幕上
more 指令会在打印时先将一个屏幕占满,占满之后,就不在打印了,按回车时才会继续一行一行打印
在一行行打印的过程中,按q就退出打印,按 /数字 ,向后搜索到目标行数(向前搜索的测试时行数有误)
在这里插入图片描述
在这里插入图片描述
确定
在这里插入图片描述
more指令不支持↑↓翻页
more -500 —— 打印到第五百行
more指令用比较少

less - 打印信息
比more指令功能更加全面,使用更广
less指令也是先将一个屏幕占满,然后将决定权交给用户,可以通过:回车、↑↓,空格(当前屏幕:100行 - 199行:[空格] 200行 - 299行) 来进行前后搜索
也可以 /999 向后搜索到 999行,并且/数字 在less命令中是支持前项搜索的

比较特别的是,less命令是无法通过Ctrl C来进行中止的,需要使用:q进行退出

我们为什么要看一个比较大的文本?什么属于大文本?
大项目、日志(服务器挂了,打开日志,查一下为什么挂掉)

head - 提取一段文本的前n行
默认是前10行
在这里插入图片描述
选项:-20 -30 -5 -100
在这里插入图片描述
tail - 提取一段文本的末尾n行
一般用于程序挂掉的时候查看最新一段时间的日志
在这里插入图片描述

查看1000 - 1020行
在这里插入图片描述
在这里插入图片描述
但如果我们不想创建temp文件呢?
:管道 |
在这里插入图片描述
| 是一种符号,会被“系统”解释为管道文件(内存级别的文件)
什么叫做管道?
管道有一个入口(左边的数据),一个出口(右边接收装置) 传输资源(数据)
管道左边的指令把自己执行的结果写到管道文件里,然后由另一个指令再把数据从管道文件里读取出来。
管道右边的指令不需要带文件名(操作对象)了
在这里插入图片描述

所有文件想要被操作、被读取、被访问、被识别、被执行,都需要先加载到内存中,也就是说,所有的文件在某一个生命周期内,一定是内存文件。
只不过对于磁盘文件,在内存中运行时,会定期刷到磁盘当中。
而管道不需要刷到磁盘中,也就能够节约空间

管道文件可以对我们的数据不断加工,最终拿到我们想要的结果
在这里插入图片描述
wc -l是用来拿到结果的行数的
在这里插入图片描述

管道的容量是固定的,是在操作系统中确定好的,一般是4kb/8kb/16kb,不同的操作系统,不同的位数,不同的版本有差异

日志概念:
能够及时的找到问题产生的时间点,找到这段时间内谁操作过这台机器,谁没有操作这台机器,用于溯源,知道这个时间是为了能够快速找到问题,并用于评估问题造成的损失大小
程序运行到自己的每一个关键时刻,都要自己打日志
日志:时间 + 日志等级 + 日志具体信息 以行为单位进行打印,打印到文件中 —— 日志文件

data - 显示日期相关信息
在这里插入图片描述
date +%Y-%m-%d\_%H:%M:%S ——大小写严格
这样获取到的时间都是当前时间,是最新的时间
在这里插入图片描述
这里输出的系统时间

时间戳:
时间是人为定义的,但如果是我们平常用的时间,是有时间差的,比如在中国的早上,在美国就在晚上,我说早上八点,在他那就是晚上10点,所以为了防止这种差异,能够有一个比较统一的时间,我们就有了时间戳这个概念

在这里插入图片描述
我们世界上的时间是人为定义的,因为公历、阴历、国家、地区不同,大家在时间的设定是有差异的,因为全球时间的不统一,为了全球互联网的正常运行,因此引入了一个概念,时间戳,格林威治时间为统一时间,然后根据各个国家的时区,进行加减的操作,能够保证既满足本国使用,又满足全球通信需要。
这里1683941349就是我们的时间戳,他是以格林威治的1970年1月1日午夜12点时间为基准,在其基础上根据时区进行加加减减,比如我们这里的date +%Y-%m-%d_%H:%M:%S -d @0 就是1970年1月1日早上八点(格林威治是在欧洲,我们是东八区,就是早上八点)
时间戳是单调递增的数据,在日志中不使用系统时间,而使用时间戳,这样容易进行范围查找

在这里插入图片描述
千年虫问题:时间戳溢出的问题

cal - 打印日历

cal指令默认是当前月份
在这里插入图片描述

cal -3 以当前月份前为中心找3个月份
在这里插入图片描述
cal 年份 显示全年
在这里插入图片描述

find - 寻找文件
find非常重要,也有很多选项,目前我们只讲一个 -name
-name是寻找某个特定目录中搜索所有满足要求的文件
在这里插入图片描述
这里和which寻找进行区分:
find是可以寻找所有文件,速度会相较于which慢,而which是专门用于指令路径下进行文件的搜索例如/user/bin/

whereis - 在特定路径下寻找到指令、可执行程序以及该相关的手册、压缩包、动态库、静态库…(介于find和which之间的查找命令)
在这里插入图片描述

find指令现在不是重点,因为现在我们的文件不多,但到了后期文件多了以后会很有用,因此以后再重点讲解find

grep - 行文本过滤工具
grep 所需文本 文件名
在这里插入图片描述
在test.txt文件下进行按行对’999’子串匹配

-v选项 反选,也就是说是将不包括’999’字串的进行打印

在这里插入图片描述
另例:
在这里插入图片描述
-n 将打印的内容加上行编号
在这里插入图片描述
-i (ignore)忽略大小写
在这里插入图片描述
帮助我们快速寻找到main函数入口
在这里插入图片描述
再比如,我们去阅读一个源文件,可能一个源文件有上百个文件,我们想要从main()开始阅读,此时就不需要我们什么tree cd ll去人眼寻找,而是直接用grep寻找到main函数所在的文件以及路径grep -nr 'hello' .也就是对于当前目录下的所有文件以及子文件,寻找含有hello的行,并标编号
在这里插入图片描述

另外,一个项目中可能会形成多个可执行程序,也就是会有多个main函数,所以我们可以通过grep来寻找所有main,进而进行代码理解(代码理解有两种方式,第一种,深度优先的理解,跟着代码调用函数时,进入函数理解函数的实现,也就是我们debug时一行行的方式,第二种就是广度优先的理解方式,我们先看每个函数干了什么,从整体的角度对程序进行把握,然后从头再依次进入函数理解实现),一个源程序可以认为是一棵多叉树,其根节点就是main,我们找到根之后,向下阅读,其难度会小很多。

grep还有可以配合管道,进行程序的查找、进程的查找…

我们为什么能够登陆上远端的Linux机器?
在这里插入图片描述
ps ajx是列出当前的进程,然后通过管道,过滤出sshd
sshd - Linux下的服务器
ssh - Linux下的客户端

手机上的app 电脑上的应用、浏览器 都是客户端
但我们我们想要正常的看抖音、玩游戏,那么只有本地的客户端是不够的,还需要服务器对我们进行网络服务,给我们推送短视频、推送淘宝信息… 把数据推送到客户端上
我们现在所有的上网行为都是:客户端发送请求,服务器进行接收,将对应请求的信息发送回去,然后我们才能看到信息,服务器的话还有分类:服务器硬件、服务器软件,两者都具备才能够正常让用户进行上网,上述的服务器主要是指服务器硬件(比如浪潮…),而我们的服务器软件(操作系统centos、脚本shell、可执行程序exe、数据库sql…)例如上面的sshd也是服务器软件,而我们的客户端就是ssh

在这里插入图片描述

打包压缩解包解压
打包:把所有东西装在一起 压缩:将这些东西通过合理的算法把他进行空间挤压
解包:把装在一起的东西放出来 解压:把空间挤压后的东西还原回去

为什么要打包压缩?
能被打包压缩的,一定是由多个文件变成了一个文件,成为一个整体
这样不容易造成文件的缺失,并提高下载速度(主要原因,等的太久用户不愿意的),让包的体积变小(这个是次要的,安装完成后就可以直接删掉咯)。
我们常用的打包压缩工具:zip unzip tar

常见的压缩后缀.tgz .zip

zip 压缩包名 所有压缩文件 —— 打包压缩
unzip 压缩包名 —— 解包解压
在这里插入图片描述
在这里插入图片描述

如果需要打包压缩目录文件,就需要使用 -r 递归选项
在这里插入图片描述
unzip 压缩文件名 —— 默认解压到当前目录下
-d选项可以指定解压路径
在这里插入图片描述
当然,会有同学这里的zip unzip无法使用,提醒的command not found,其实也就是zip unzip没有安装,因此需要我们自行安装

yum - 安装指令
由于安装东西是需要一定的权限的,并不是任何用户都能够安装,因此这里有两种yum安装的方式
1、以root的方式登陆,进行安装
2、在普通用户的状态下 su - 然后输入root密码,登陆root账号进行安装,安装完后,可以通过Ctrl + D的方式回到普通用户状态
当然以后用的更多的是sudo命令,但是这个命令设计到权限、配置文件的内容,以后再讲
yum install -y zip unzip —— 装zip unzip指令

除了zip安装工具,我们还有tar安装工具
tar安装工具的选项很多很杂,但是我们只需要直到几个选项组合,就可以满足绝大多数情况的使用,其他特殊情况,在使用时看看文档就知道了
czf —— 打包压缩create zip file创建 指定为zip的压缩方式的压缩文件
在这里插入图片描述
.tar - 打包后缀.gz - 压缩后缀
.tar.gz -> .tgz
在这里插入图片描述
tzf —— 预览压缩包中的内容tell me zip file
在这里插入图片描述
xzf —— 解压 压缩 extract file
在这里插入图片描述
xzf命令也可以指定路径解包 压缩 -C选项
在这里插入图片描述
czf tzf xzf记忆:用zip算法处理文件file,处理的方式的c t x

安装包如果是Linux内流转,就用tar包.tgz格式
如果是在windows和linux之间流转,就用zip
这种规定不是严格的,只是建议

bc - 计算器
在计算器中 quit退出计算器
在这里插入图片描述
使用bc计算器,还可以不同进入bc,只进行一次运算
利用管道,将需要计算的内容传递给bc
在这里插入图片描述
可以分辨运算优先级
把这串字符通过 管道| 放到bc计算器中进行计算
可在精度上做要求,自行了解吧
bc计算器不太重要,直接使用windows的cal不香吗

uname - 查看机器信息
-a 全部信息
-r 内核版本
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
AMD - 因特尔的
x86_64 = x64 64位
x86 = 32位

free - 查内存 在这里插入图片描述默认free显示的内存使用是按照kb为单位
显示内存的单位选项:
-k就是kb单位
-m是Mb单位
-g是G单位

df -h 查磁盘
在这里插入图片描述
iscpu - 查cpu
在这里插入图片描述
cpu中第三行Byte Order: Little Endian —— 小端机器

这些查看信息的命令,目前用处不大

热键
[Tab][Tab] - 补全、命令提示
基于当前指令输入的内容,快速按两次Tab显示出所有符合内容的指令,若指令唯一,直接补全,特别的若我们没有输出内容,就会显示所有,系统支持的指令,此时按回车可以向下查看,按q退出查看
在这里插入图片描述
1271个指令可以被我们使用(和权限有关)

[Ctrl] + R
查找历史命令 ,我们曾经写过的所有命令都不会直接消失,而是存储起来,因此可以用[Ctrl] + R寻找历史命令
在这里插入图片描述

history
Linux会记录最新的1000条指令(1000条 - 条数可以进行修改),用history指令进行查看
在这里插入图片描述
[Ctrl] + C —— 强制停止当前指令

Shift + Tab —— 会话快速切换

nano - 记事本
大概率nano也是需要安装的
yum install -y nano
我们可以在nano记事本中敲代码,然后使用后续的gcc g++等指令进行
在这里插入图片描述
下面的选项里面^是Ctrl的意思 比如Ctrl + X就是退出
我们写了一段代码:
在这里插入图片描述
Ctrl + X
在这里插入图片描述
是否保存:y
在这里插入图片描述
修改后的文件名是:code.txt —— 自己命名,如果不改变名字,就是覆盖原来的code.txt文件
回车 退出nano记事本

如果我们进入nano记事本之后,并没有修改内容,那么直接Ctrl + X就能够退出

然后我们用gcc进行编译,生成一个a.out的文件
./a.out 就可以执行当前目录下的a.out文件
具体gcc的操作以后讲
在这里插入图片描述

nano记事本的功能十分有限,现在可以简单用用,后面我们会使用vim进行代码编辑

[Ctrl] + D - 身份回退、退出xshell
halt - 关机
reboot - 重启
shutdown -h - 停掉系统服务后,立刻关机
shutdown -r - 停掉系统服务后,重新启动

这些命令很少用,因为服务端的机器一般长期开机状态。
需要使用的时候查文档

当然,如果需要关机的时候,又是多人操作同一台机器的时候,需要提醒其他人,不然,对方正在进行的任务很可能没保存,然后,你就需要每天走路小心一点了。

指令的运行原理 —— 简单理解
在这里插入图片描述
用户名 主机 当前目录 命令行提示符(普通用户是$ root用户是#) 这一些东西统称为bash命令行
我们输入指令的过程,本质就是输入字符串
[happy_grass@hecs-83079 ~]$ 是一个进程
指令的本质就是编译好的程序和脚本
一定在系统的特定路径下存放

bash命令行与OS
我们所有的指令,最终都在操作系统OS内部运行,但是OS使用难度比较高、成本较高
因此,我们用户不直接和OS接触,我们因此需要 图形化界面 or 命令行解释器(bash命令行)
命令行解释器:将使用者的命令翻译给核心(kernel)处理。同时,将核心处理的结果翻译给用户

命令行解释器的意义:
1、进行命令行解释
2、防止用户的非法请求,进行中间层拦截,保护OS(节约OS资源)(在用户和操作系统之间添加了一层软件层,在软件层对用户进行健全)
在这里插入图片描述

区分:bash/sh shell
命令行解释器包含 命令行、bash、sh、shell
在windows中命令行解释器也就是图形化界面
在手机上,就是那层电容屏,对坐标进行获取、甄别、响应

符合 命令行解释 性质(翻译命令给OS,在将OS的结果翻译给用户)的,都叫做shell

bash和sh是某一种具体的解释器,比如我们Linux里面的bash命令行
在这里插入图片描述

GUI - windows的图形化界面,也就是windows的命令行解释器,例如:双击D盘 盘符 进入D盘

形象化理解shell:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失去梦想的小草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值