Linux学习笔记(2)

Linux学习笔记(2)

在这里插入图片描述

知识点:

1.打包、压缩——是什么、为什么、怎么做?

什么是打包、压缩?

打包:把文件合并。

压缩:通过一定算法减少体积。

为什么要进行打包、压缩?

打包:防止文件丢失。本质是把多个文件变成一个文件。

压缩:打包后的大文件体积很大,需要减少体积。可以节省本地存储空间;网络传送时可以有效减少传送的时间。

怎么打包、压缩?(打包和压缩不作明显区分,作为整体看。)

Linux有两套最常用的打包压缩的方式(打包压缩形成的压缩文件的种类非常多): zip/unzip tar

(详见指令部分)

2.体系结构指的是芯片结构。

(uname指令)

x86_64和x64等价。

新老内核的问题(常识)

企业里面不会用新内核。怕有bug。一般使用经过五六年检验的。维持系统稳定性。

3.Linux系统会记录历史命令

history可以看历史命令。(有一定条数)

4.云服务器永不关机,除非维护或不用了。

因为一直在工作。

关机的指令有:

shutdown

halt

reboot

如果要进行云服务器关机,shutdown可以跟选项:

-h :将系统的服务停掉后,立即关机。

-r :在系统的服务停掉后就重新启动。

-t sec :-t后面加秒数,也就是过几秒后关机。

在Windows中也可以用shutdown关机。

Linux没有开机指令。

5.shell命令及其运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

[用户名@主机名 ~]# 这是命令行

~是当前所处的目录,#是提示符,分隔系统和自己的。普通用户的是$

ls -a -l这是命令

实际上命令行并不属于操作系统提供的功能,而是有一个外壳程序给我们打印的命令行。

我们输入的命令本质上是字符串,交给外壳程序,外壳程序把命令交给操作系统,让操作系统执行完把结果通过外壳程序返回给用户。

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)

主要包含:将使用者的命令翻译给核心(kernel)处理。

同时,将核心的处理结果翻译给使用者。

Linux中,命令行解释器统称为shell。

现在我们只是对shell进行感性的理解…

因为用户不擅长和操作系统内核直接打交道,所以必须存在外壳程序。

1.外壳程序方便用户操作;2.外壳程序可以保护内核。(指令明显不合法);3.外壳程序其实在系统层面是以进程形式呈现的。在新命令到来时往往是创建子进程然后让子进程去执行,如果挂了也不影响外壳程序。

bash

我们所采用的命令行解释器叫做bash,怎么理解shell和bash关系?shell是所有外壳程序的统称,Linux中具体的外壳程序的名字叫bash。

我们在Windows用的图形化界面其实也算是一种外壳程序;其实安卓系统内核也是Linux,而“安卓”是包裹在Linux外的shell,或者说图形化界面。

所以现在我们理解外壳程序,可以理解成,在Linux上是命令行、Windows上是命令行或图形化界面(centos、ubantu也有图形化界面,所有图形化界面都可以理解成外壳)。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

6.Linux权限的概念

1.Linux中的用户

Linux中用户分为两类。root用户(超级管理员)和普通用户。(Linux是多用户系统)

我们平时可能会遇到“以管理员身份运行”,Windows其实也是有管理员和普通用户的。

root用户的特点是权限很高,普通用户权限低,本质上受管控。比如有些东西删不掉。

俩用户可以身份切换。

怎么变成超级用户?

安装命令的本质就是把命令拷贝到/user/bin/

cp myprocess /usr/bin/

普通用户是不能拷贝的。

/user/bin/属于系统目录,不允许普通用户修改。

可以把自己变成超级用户:su

就会显式出Password:

这里要输入 root的密码

还有一种变成超级用户的办法:su -

也会显式出Password:

区别在于su不会让root重新登录,只是身份的切换。不影响当前所处目录。

su -其实是让root重新登录了。所以当前所处的路径会发生变化。

超级用户怎么变成普通用户?

(我们可以先新建一个普通用户)

adduser naruto

passwd naruto

然后设置密码

ls /home 我们就可以看到新建出来的普通用户

su 用户名

如su naruto

马上就可以变成这个普通用户,不需要输密码


指令:

grep

叫做行文本过滤工具

上一篇学习笔记中提到了日志的概念,有时我们只想看错误日志,我们可以这样过滤:cat /var/log/messages | grep “err”

再比如我们现在以"Removed"为关键词搜索:cat /var/log/messages | grep “Removed”

还可以cat /var/log/messages | grep “Removed” | tail 查看最近的

这个过程是先把信息打出来然后交给grep然后再交给tail(上一篇笔记提过的“管道”的作用)

所以我们可以用来定期查看日志中的错误信息等

其实,grep本身就可以读取日志文件。

也就是说可以写成:grep “Removed” /var/log/messages | tail

第二种应用场景

以后可能我们想在系统里筛选出指定的进程:

ps ajx 我们就可以查到系统中所有启动的进程。

ps ajx | grep "myprocess"就可以去查myprocess这个进程

第三种应用场景

在一个文本中查找我们想要的行。

(*是通配符,表示我们匹配当前目录下的所有文件)

grep “int main” *

grep -n “int main” *带上-n选项,可以找到它在第几行。

  1. 选项

脚本:cnt=0; while [ $cnt -le 100 ]; do echo "hello $cnt"; let cnt++; done > log.txt

我们将其重定向到log.txt中。

现在我们有了从0到100,101行的大文件log.txt

grep “9” log.txt

我们可以把包含9这个关键字的所有文本行全部找出来

-n选项

grep -n “9” log.txt我们可以把其在原始文件中的行数也显示出来:

-v选项

grep -v “9” log.txt

所以-v代表的是reverse,意思是匹配成功的不要,而保留没有与关键字匹配的。

-i选项

grep “hello” log.txt对于"Hello"这样的,匹配会不成功。

而grep -i “hello” log.txt,则会忽略大小写。i即ignore。

(可以组合)-vi则是忽略大小写,匹配到的全不要。

zip/unzip

zip --version 我们可以先看看zip命令有没有装

yum install -y zip unzip 就可以安装zip命令

现在假设我们刚才脚本重定向的log.txt在目录momo里,我们在momo里再创建一个目录:mkdir target

然后cp log.txt target/ 将log.txt拷贝到目录target里。

tree . 我们可以查看当前的结构:

假如我们现在想把momo整个打包压缩(打包单个文件和打包目录及其子目录子文件的做法一样)

zip momo.zip momo

然后看到:

ll之后看到:

确实形成了一个momo的压缩包,可以通过前缀-,看出是个普通文件

mkdir other

然后mv momo.zip other/ 我们把这个压缩包交给其他目录(模拟把压缩包给其他人)

然后我们可以把这个压缩包解压:

cd other

unzip momo.zip

ls进行查看:

然后我们tree一下momo看看是否解压成功:

可以发现我们打包了空目录。

这是因为我们没有携带选项-r

正确做法应该是这样:

zip -r momo.zip momo

mv momo.zip other/

cd other

unzip momo.zip

tree momo

可以看到,现在就成功打包压缩并解压了。

cat momo/log.txt

可以看到也成功得到了。

我们还可以不解压到当前目录下,而是解压到指定目录下:

unzip momo.zip -d /root

总结:zip -r dst.zip src和unzip XXX.zip(unzip XXX.zip -d 指定目录)

rz/sz

Linux和Windows压缩包互传
Linux传送压缩包到Windows

现在我们在other里,我们有momo.zip,我们现在想把它传到自己的Windows当中。

我们用到sz和rz,z代表zip,s代表send,r代表receive。

同样需要先安装这俩命令:yum install -y lrzsz(centos版本)

然后sz momo.zip

然后就会自动弹窗。(这里选择桌面)

然后我们的桌面上就多出了这个压缩包:

Windows传送压缩包到Linux

假设我们现在Windows上有一个nono.zip,我们想传到Linux上:

在Linux上输入rz然后回车就会弹出窗口,我们可以在窗口里选择要传到Linux的压缩包。

对于Xshell,还支持直接从Windows上拖拽到终端,直接传到Linux。

tar

tar 选项 XXX.tgz srcdir

tar的选项比较多

tar czf momo.tgz momo 是压缩

c代表创建一个打包文件,z是把这个打包文件压缩,f后面紧跟要创建的压缩包名称。

可以看到tar命令不用-r递归,默认就是全部打包

tar xzf momo.tgz 是解压

x代表解包

总结

tar czf XXX.tgz src

tar xzf XXX.tgz

-v

如果想看到解包的过程,可以带v选项:

tar xvzf XXX.tgz:

压缩的过程也可以带v选项进行详细查看:tar cvzf momo.tgz momo

-C

如果想解压到指定目录下,可以:tar xzf XXX.tgz -C /root

scp

Linux传送Linux

这个命令叫做远程拷贝

scp dst.tgz 用户名@你的公网IP(或者能访问的私有IP):目标机器指定的路径

比如scp momo.tgz root@123.45.678:/root/code (该IP为虚构)

bc

在我们输完bc并回车后就是这样:

可以去计算。

可以这样去使用:

echo “1+2+3+4+5+6+7” | bc

结果:28

这是一个低频指令。

uname

怎么在Linux环境查看你的体系结构和系统内核版本?

体系结构:CPU是什么架构的。

uname -a

可以查看系统中常见的所有东西,比如系统类别,主机名,内核版本,体系结构

uname -r

看的信息更少,如:

3.10.0-1160.119.1.el7.x86_64


Linux中重要的几个热键

1.ctrl+c——终止异常任务

有时候误写:ls \

不知道怎么退出(这其实是续行)

ctrl+c,终止前台的任务

2.上下键——查看历史命令

3.Tab键——命令补全

有时忘了指令怎么拼,可以输了wh然后快速按两下Tab键,就会把wh开头的指令都显示出来:

如果什么都没输,直接按两下Tab:

如果我们输入了whoam,再按一下Tab,就会补全为whoami

4.ctrl+r——搜索历史命令

输入ctrl+r会得到:

如果之前我们写过一个while循环的脚本,我们可以输个一个片段比如while,就可以找到历史命令。

5.ctrl+d——退出当前用户

身份切换可以用。

本文结束,敬请期待后文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/429709.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之堆(优先级队列)

“愿独立的你,在随心而行的途中,学会释怀而止,而非一时放纵之后而任性非为” 这好像是我第一次写关于数据结构的文章吧,关于数据结构,那真的是太奥秘了,想领略其中的奥秘,必须得付出相应的努力…

C++:类和对象OJ题

目录 一、求123...n 二、计算日期到天数的转换 三、日期差值 四、打印日期 一、求123...n 这里先把题目链接放在这里求123.....n 描述: 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C…

UnLua实现继承

一、在蓝图中实现继承 1、创建父类,并绑定Lua脚本 2、创建子类蓝图,如果先创建的子类,可以修改父类继承 注意,提示选择继承父类的接口! 二、在Lua中实现继承 1、在父类Lua脚本中实现函数 BP_CharacterBase.lua func…

一劳永逸:用脚本实现夸克网盘内容自动更新

系统环境:debian/ubuntu 、 安装了python3 原作者项目:https://github.com/Cp0204/quark-auto-save 感谢 缘起 我喜欢看电影追剧,会经常转存一些资源到夸克网盘,电影还好,如果是电视剧,麻烦就来了。 对于一…

【STL】 set 与 multiset:基础、操作与应用

在 C 标准库中&#xff0c;set 和 multiset 是两个非常常见的关联容器&#xff0c;主要用于存储和管理具有一定规则的数据集合。本文将详细讲解如何使用这两个容器&#xff0c;并结合实例代码&#xff0c;分析其操作和特性。 0.基础操作概览 0.1.构造&#xff1a; set<T&…

深度学习:神经网络--手写数字识别

目录 一、datasets 1.datasets简介 2.主要特点 二、MNIST 三、使用神经网络实现手写数字识别 1.创建数据加载器 2.判断是否使用GPU 3.创建神经网络 4.创建训练集模型 5.创建测试集模型 6.创建损失函数和优化器并训练 一、datasets 1.datasets简介 datasets是一个广…

[mysql]mysql排序和分页

#排序和分页本身是两块内容,因为都比较简单,我们就把它分到通一个内容里. #1排序: SELECT * FROM employees #我们会发现,我们没有做排序操作,但是最后出来的107条结果还是会按顺序发出,而且是每次都一样.这我们就有一个疑惑了,现在我们的数据库是根据什么来排序的,在我们没有进…

windows 驱动实例分析系列-COM驱动案例讲解

COM也被称之为串口,这是一种非常简单的通讯接口,这种结构简单的接口被广泛的应用在开发中,几乎所有系统都能支持这种通讯接口,它有RS232和RS485等分支,但一般我们都会使用RS232作为常见的串口,因为它足够简单和高效。 几乎所有的开发板,都会提供用于烧录、调试、日志的…

redis为什么不使用一致性hash

Redis节点间通信时&#xff0c;心跳包会携带节点的所有槽信息&#xff0c;它能以幂等方式来更新配置。如果采用 16384 个插槽&#xff0c;占空间 2KB (16384/8);如果采用 65536 个插槽&#xff0c;占空间 8KB (65536/8)。 今天我们聊个知识点为什么Redis使用哈希槽而不是一致性…

FastAPI 的隐藏宝石:自动生成 TypeScript 客户端

在现代 Web 开发中&#xff0c;前后端分离已成为标准做法。这种架构允许前端和后端独立开发和扩展&#xff0c;但同时也带来了如何高效交互的问题。FastAPI&#xff0c;作为一个新兴的 Python Web 框架&#xff0c;提供了一个优雅的解决方案&#xff1a;自动生成客户端代码。本…

引领长期投资新篇章:价值增长与财务安全的双重保障

随着全球金融市场的不断演变&#xff0c;长期投资策略因其稳健性和对价值增长的显著推动作用而日益受到投资者的重视。在这一背景下&#xff0c;Zeal Digital Shares&#xff08;ZDS&#xff09;项目以其创新的数字股票产品&#xff0c;为全球投资者提供了一个全新的长期投资平…

re题(38)BUUCTF-[FlareOn6]Overlong

BUUCTF在线评测 (buuoj.cn) 运行一下.exe文件 查壳是32位的文件&#xff0c;放到ida反汇编 对unk_402008前28位进行一个操作&#xff0c;我们看到运行.exe文件的窗口正好是28个字符&#xff0c;而unk_402008中不止28个数据&#xff0c;所以猜测MessageBoxA&#xff08;&#x…

cv中每个patch的关联

在计算机视觉任务中&#xff0c;当图像被划分为多个小块&#xff08;patches&#xff09;时&#xff0c;每个 patch 的关联性可以通过不同的方法来计算。具体取决于使用的模型和任务&#xff0c;以下是一些常见的计算 patch 关联性的方法&#xff1a; 1. Vision Transformer (…

Shell运行原理与Linux权限概念

shell的运行原理 Linux严格意义上说的是一个操作系统。我们称之为“核心&#xff08;kernel&#xff09;”&#xff0c;但我们一般用户&#xff0c;不能直接使用kernel&#xff0c;二十通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通。 从…

网络穿透:TCP 打洞、UDP 打洞与 UPnP

在现代网络中&#xff0c;很多设备都处于 NAT&#xff08;网络地址转换&#xff09;或防火墙后面&#xff0c;这使得直接访问这些设备变得困难。在这种情况下&#xff0c;网络穿透技术就显得非常重要。本文将介绍三种常用的网络穿透技术&#xff1a;TCP 打洞、UDP 打洞和 UPnP。…

qt-C++笔记之作用等同的宏和关键字

qt-C笔记之作用等同的宏和关键字 code review! Q_SLOT 和 slots&#xff1a; Q_SLOT是slots的替代宏&#xff0c;用于声明槽函数。 Q_SIGNAL 和 signals&#xff1a; Q_SIGNAL类似于signals&#xff0c;用于声明信号。 Q_EMIT 和 emit&#xff1a; Q_EMIT 是 Qt 中用于发射…

18.2K Star,AI 高效视频监控摄像头

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 导语 在家庭和企业安防领域&#xff0c;实时视频监控是保障安全的核…

AIGC8: 高通骁龙AIPC开发者大会记录B

图中是一个小男孩在市场卖他的作品。 AI应用开发出来之后&#xff0c;无论是个人开发者还是企业开发者。 如何推广分发是面临的大问题。 做出来的东西一定要符合商业规律。否则就是实验室里面的玩物&#xff0c;或者自嗨的东西。 背景 上次是回顾和思考前面两个硬件营销总的…

【JVM】类加载

1. 类加载过程 Java虚拟机&#xff08;JVM&#xff09;的 类加载 过程是将字节码文件&#xff08;.class文件&#xff09;从存储设备加载到内存&#xff0c;并为其创建相应的类对象的过程。类加载是Java程序运行的基础&#xff0c;保证了程序的动态性和安全性。JVM的类加载过程…

人工智能 | 基于ChatGPT开发人工智能服务平台

简介 ChatGPT 在刚问世的时候&#xff0c;其产品形态就是一个问答机器人。而基于ChatGPT的能力还可以对其做一些二次开发和拓展。比如模拟面试功能、或者智能机器人功能。 模拟面试功能包括个性化问题生成、实时反馈、多轮面试模拟、面试报告。 智能机器人功能提供24/7客服支…