Linux入门篇(一)
Linux
- 前言
- Linux初探
- Linux内核
- GNU实用工具
- shell
 
- Linux发行版
- bash shell 基础
- Linux文件系统
- Linux文件操作命令
 
 
前言
  在阅读诸如docker之类的书的时候,经常碰到Linux的知识。同时,大部分的盲区也是在Linux方面。因此就想稍微了解一下这个广为人使用的操作系统吧。
   众所周知,不经常使用的话,遗忘的速度让我们都惊讶不已呀!现在你去看看你一个月前写的一个项目代码试试(狗头保命!)。因为,由于目前阶段我对Linux使用的需求还不是很大。所以也清楚对于诸多书里边实战的部分,如果我在假期学习了开学也是基本忘记了。因此,我目前是让我对Linux初步有一个了解,而不再是门外汉之类的水平,让我能在其余的技术中不至于被卡壳即可了。(但是,看看还是必要的,看时候翻起来找也方便嘛)
好了,废话到此!
Linux初探
首先Linux系统大致可以划分为以下四个部分(有的书忽略了GNU,或者严格的说是没有单独列出来吧)
- Linux内核
- GNU工具
- 图形化桌面环境
- 应用软件
各个部分的协作构成如下图
 
Linux内核
内核主要负责以下4个功能
- 系统内存管理
- 软件程序管理
- 硬件设备管理
- 文件系统管理
-  系统内存管理:操作系统内核的主要功能之一是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建并管理虚拟内存(实际并不存在的内存)。 
 内核通过硬盘上称为交换空间(swap space)的存储区域来实现虚拟内存。内核在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为自己拥有比物理内存更多的可用内存。
-  软件程序管理。Linux操作系统称运行中的程序为进程。进程可以在后台运行,也可以在后台运行。内核控制着Linux系统如何管理运行在系统中的所有进程。 
 内核创建第一个进程(称为init进程)来启动系统中所有其他进程。当内核启动时,会将init进程载入虚拟内存。内核在启动其他进程时,会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
-  硬件设备管理。内核的另一职责是管理硬件。任何Linux系统需要与之通信的设备都必须在内核代码中加入其驱动程序。驱动程序相当于应用程序和硬件设备的“中间人”,允许内核同设备之间交换数据。目前流行的想Linux内核中插入设备驱动的方法为将设备驱动模块加入内核。 
 为此,开发人员提出了内核模块的概念。允许在无须重新编译内核的情况下将驱动程序插入运行中的内核。
 Linux将硬件设备视为一种特殊文件,称为设备文件。其大致分为三种:①字符设备文件;②块设备文件;③网络设备文件。
-  文件系统管理。不同于其他一些操作系统,Linux内核支持通过不同类型的文件系统读写硬盘数据。除了自有的多种文件系统,Linux还能够读写其他操作系统(比如Microsoft Windows)的文件系统。内核必须在编译时就加入对所有要用到的文件系统的支持。 
GNU实用工具
除了由内核来控制硬件设备,操作系统还需要实用工具来实现各种标准功能,比如控制文件和程序。而,Linus的Linux内核和GNU操作系统实用工具结合在一起,产生了一款完成且功能丰富的自由操作系统。
供Linux系统实用的这组GNU核心工具称为core utilities 软件包。其由三部分构成
- 文件实用工具
- 文本实用工具
- 进程实用工具
其中我们最为熟悉的无疑是其中的交换工具---- shell了。
shell
GNU/Linux shell是一种特殊的交互式工具,为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统中的进程的途径。shell的核心是命令行提示符,负责shell的交互部分,允许用户输入文本命令,然后解释命令并在内核中执行。
- shell包含一组内部命令,可用于完成复制文件、移动文件、重命名文件、显示和终止系统中正在运行的程序这类操作。除此之外,shell也允许在命令行提示符中输入程序的名称,它会将程序名称传递给内核以启动程序。
- 也可以将多个shell命令放入文件中作为程序执行。这些文件称作shell脚本。凡是能在命令行中执行的命令都可放入shell脚本中作为一组命令执行。这为创建通常需要执行多个命令的实用工具提供了极大的便利。
- 在Linux系统中,有相当多的shell可供使用。不同的shell有不同的特性,有些适用于创建脚本,有些则适用于管理进程。所有Linux发行版默认的shell都是bash shell。bash !!!
Linux发行版
我们将完整的Linux系统包称为发行版。大量不同的Linux发行版可以满足你可能存在的各种计算需求。
 大多数发行版是为某个特定用户群定制的,比如商业用户、多媒体爱好者、软件开发人员或者普通家庭用户。每种定制的发行版都包含了支持特定功能所需的各种软件包,比如多媒体爱好者要用到的音频和视频编辑软件,软件开发人员要用到的编译器和集成开发环境(IDE)。
 不同的Linux发行版通常分为两类。
- 完整的核心Linux发行版
- 特定用途的Linux发行版
如下两张图片分别为常见的完整版和特定用途版

         图一:完整的核心Linux发行版

         图二:特定用途的核心Linux发行版
bash shell 基础
GNU bash shell是一个程序,提供了对Linux系统的交互式访问。它是作为普通程序运行的,通常是在用户登录终端时启动。系统启动的shell程序取决于用户账户的配置。(也就是说,我们可以通过这里查看默认启动的shell程序或者更改默认启动的shell程序)
/etc/passwd文件包含了所有系统用户账户以及每个用户的基本配置信息。
- 默认的 bash shell 提示符是美元符号($),这个符号表明shell在等待用户输入命令。(不同的Linux发行版会采用不同格式的提示符)。一般这还能提供额外的辅助信息。如当前用户名、主机名。波浪号(~)表明shell会话当前位于主目录中。如Ubuntu中的提示符:
christine@UDesktop:~$
- man命令可以访问Linux系统的手册主页。在man命令之后跟上想要查看的命令名,就可以显示相应的手册页。
Linux文件系统
Linux的路径中不使用驱动器盘符。在Windows中,计算机上安装的物理驱动器的分区决定了文件路径。Windows会为每个物理磁盘分区分配一个盘符,每个分区都有自己的目录结构,用于访问存储在其中的文件。
而Linux则采用另一种方式。Linux会将文件存储在名为虚拟目录(virtual directory)的单个目录结构中。虚拟目录会将计算机中所有存储设备的文件路径都纳入单个目录结构。
Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按照其访问路径一一列出,这点跟Windows类似。
这是一个Linux中的文件路径:/home/rich/documents/test.doc’
这表明文件test.doc位于Documents目录,该目录位于rich目录,而rich目录则包含在home目录中。
要注意两点:①Linux使用正斜线来分隔文件路径中的目录。反斜线是用作反义字符的;尔②文件路径本身并没有提供任何有关文件真实存放在哪个物理磁盘中的信息。
- Linux虚拟目录中比较复杂的部分是它如何来协调管理各个存储设备。我们称在Linux系统中安装的第一块硬盘为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。如下图 
- Linux会使用根驱动器上一些特别的目录作为挂载点(mount point)。挂载点是虚拟目录中分配给额外存储设备的目录。Linux会让文件和目录出现在这些挂载点目录中,即便它们位于其他物理驱动器中。
 系统文件通常存储在根驱动器中,而用户文件则存储在其他驱动器中,如下图 
- 在切花目录的时候,cd命令我们应该都是很熟悉的了。其中地址分为绝对地址和相对地址。其中有两个特殊字符可用于相对路径中:①单点号(.),表示当前目录;②双点号(…),表示当前目录的父目录。如使用../etc表示去到该目录的上一级,从中选择etc目录
Linux文件操作命令
1.pwd:显示出shell会话的当前目录,该目录称为当前工作目录。
 2. ls :①直接使用ls命令显示当前目录下的文件和子目录(不包括隐藏文件)。会按字母进行排序;②ls -F :使用-F选择会在目录名之后添加正斜线,类似地还会在可执行文件之后添加星号(*) ;③ls -a :会显示隐藏的文件。一般隐藏文件是文件名以点号(.)开始的文件;④ls -F -R:可以列出当前目录所包含的子目录中的文件;
 3. touch:创建文件
 4. 复制文件:cp source destination
 5. 文件重命名(移动):在Linux中,重命名文件称为移动。因为在当前目录在,移动到的目的也是该目录,同时文件名变化了。这不就是重命名嘛。mv
 6. 删除文件:rm。
 7. 创建目录:mkdir
 8. 删除目录:rmdir。在默认情况下,该命令只删除空目录。
 9. 查看文件类型:file
 10.查看整个文件:cat 。该命令会一次性加载显示全部内容。而more则是可以进行翻页来进行查看。
 11. 查看部分文件:tail默认查看文件的末尾10行;head会默认显示文件前10行的内容。
相关文章:
 
Linux入门篇(一)
Linux前言Linux初探Linux内核GNU实用工具shellLinux发行版bash shell 基础Linux文件系统Linux文件操作命令前言 在阅读诸如docker之类的书的时候,经常碰到Linux的知识。同时,大部分的盲区也是在Linux方面。因此就想稍微了解一下这个广为人使用的操作系统…...
 
HTTPSHandler SSL Error
我在服务器ubuntu中,尝试使用pip3,但是出现下面的报错 ImportError: cannot import name HTTPSHandler 通过查询资料,发现报错的原因是,该pip3.5中没有安装好openssl. 我尝试在python3.5中使用import ssl, 确实是会显示下面的报错…...
基于Android的高校食堂餐厅配送系统
需求信息: 商家客户端: 1:登录注册:用户可以通过自己的信息进行账号的注册 2:发布菜单:发布自己经营的美食信息 3:用户订单:查看用户的购买订单 4:订单配送:对…...
 
Java设计模式-02工厂模式
为什么需要工厂模式,其作用什么?如何实现,代码演示解析优缺点。Q1:为什么需要工厂模式?工厂模式的作用(优点)是什么? 解耦。把对象的创建和使用的过程分开。就是Class A 想调用 Class B ,那么A只是调用B的…...
 
AXI-Lite 学习笔记
AXI-Lite 学习笔记 参考 FPGA:AXI_Lite总线基础2-1]、第二节 AXI总线介绍、ZYNQ PL与PS交互专题_哔哩哔哩_bilibili AXI-Lite总线系列1 - 基础知识_哔哩哔哩_bilibili AXI4 介绍 AXI4 是ARM公司提出的一种片内总线,描述了主从设备之间的数据传输方式。主…...
 
77页智慧城市顶层设计方案
【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容:篇幅有限,无法完全展…...
 
JavaWeb--MavenMybatis基础
JavaWeb--Maven&Mybatis基础1 Maven1.1 Maven简介1.1.1 Maven模型1.1.2 仓库1.2 Maven基本使用1.2.1 Maven 常用命令1.2.2 Maven 生命周期1.3 IDEA使用Maven1.3.1 IDEA配置Maven环境1.3.2 Maven 坐标详解1.3.3 IDEA 创建 Maven项目1.3.4 IDEA 导入 Maven项目1.4 依赖管理1.…...
 
博客系统--测试用例编写
目录一,整体概览1.1,登录页面测试用例1.2,注册页面测试用例1.3,发布博客功能测试1.4,删除博客功能测试二,具体设计2.1,注册页面测试--等价类法2.2,删除博客功能测试--判定表法一&…...
 
SpringCloud Alibaba
文章目录🚏 第十七章 SpringCloud Alibaba入门简介🚬 一、为什么使用Alibaba🚭 1、spring netflix进入维护模式🚭 Spring cloud alibaba🚬 二、如何使用?🚬 三、版本对应🚏 第十八章…...
地平线slam算法岗位 面试分享
本专栏分享 计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页:秋招算法类面经分享 主要分享计算机算法类在面试互联网公司时候一些真实的经验 小伙伴自我介绍: 写在前面,南京某炮专,研二上阶段,简历写了两个竞赛和一个项目,一个机器人相关的二等奖,一个…...
 
32、基于51单片机红外智能垃圾桶系统设计
摘要 随着现代化进程的日益推进,科技越来越发达,人们的生活水平也提高了,城市化程度越来越高,与此同时也带了许多问题,生活垃圾越来越多垃圾设施却不够完善。无论是在公共场合还是家庭厨房的垃圾大都是没有盖或者有盖…...
 
PIL.Image与cv2之间的常用API汇总
简单介绍 主要是因为经常用到这两个,经常弄混淆,所以,总结一番。持续更新。 from PIL import Image import cv2 as cv import numpy as np import matplotlib.pyplot as plt1、读取文件与写入文件 1.1 Image.open() img_pil Image.open…...
 
【csdn首发】全网爆火的从零到一落地接口自动化测试
前段时间写了一系列自动化测试相关的文章,当然更多的是方法和解决问题的思路角度去阐述我的一些观点。结合我自己实践自动化测试的一些经验以及个人理解,这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。 为什么要做接口测试 测试理念的演变 早…...
 
基于应力的拓扑优化的高效3D灵敏度分析代码(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
PMP®十万个为什么(二)
11.我的职位与项目管理并没有多大联系,PMP对我应该就没有什么价值了吧? 其实不然,首先,我们知道项目管理是一个系统性的工作,在一个企业内部如果要把项目管理的工作做好,除了项目团队的工作与管理水平不断提…...
 
【Linux】生产者消费者模型
🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…...
2023/2/13 蓝桥备战acwing刷题(set的使用、简单推个不等式+差分、快速幂、01背包模板回顾、类似01背包的题)
4454未初始化警告 set计数 #include<iostream> #include<set> using namespace std;int main(){int n,m;cin>>n>>m;set<int> s;int res 0;s.insert(0);while(m--){int l,r;cin>>l>>r;if(s.count(r)0){res;}s.insert(l);}cout<…...
 
【情人节专属】AI一键预测你和Ta的CP值
如何预测你和心仪的Ta有没有夫妻相?基于华为云ModelArts开发的【一键预测你和Ta的CP值】Demo帮你预测CP指数。该模型利用ssim算法综合计算五官特征相似程度,从而得出CP值。//夫妻相的原理在当今心理学、生物学仍有很大争议,夫妻相指数高并不意…...
 
一文浅谈sql中的 in与not in,exists与not exists的区别以及性能分析
文章目录1. 文章引言2. 查询对比2.1 in和exists2.2 not in 和not exists2.3 in 与 的区别3. 性能分析3.1 in和exists3.2 NOT IN 与NOT EXISTS4. 重要总结1. 文章引言 我们在工作的过程中,经常使用in,not in,exists,not exists来…...
 
2023前端面试题——JS篇
1.判断 js 类型的方式 1. typeof 可以判断出’string’,‘number’,‘boolean’,‘undefined’,‘symbol’ 但判断 typeof(null) 时值为 ‘object’; 判断数组和对象时值均为 ‘object’ 2. instanceof 原理是 构造函数的 prototype 属性是否出现在对象的原型链中的任何位置 …...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
 
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
 
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
 
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
 
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
 
图解JavaScript原型:原型链及其分析 | JavaScript图解
 忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
 
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
