Linux和指令初识

 前言

Linux是我们在服务器中常用的操作系统,我们有必要对这个操作系统有足够的认识,并且能够使相关的指令操作。今天我们就来简单的认识一下这个操作的前世今生,并且介绍一些基础的指令操作

Linux的前世今生

要说Linux,还得从UNIX说起

Unix的发展历程

 起源(1960年代末)

Unix的故事始于1969年,由贝尔实验室的Ken Thompson和Dennis Ritchie开发。最初的目标是创建一个用于内部研究的操作系统,以便于多用户操作和资源共享。最早的Unix版本是基于Multics项目(968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念)的灵感,但更为简化和高效。

标准化与传播(1970年代)

1970年代,Unix的版本不断演变,加入了许多新特性,如多任务处理和文件系统。1973年,Unix的核心部分用C语言重写,使其易于移植到不同的硬件平台。随后,Unix迅速传播到各大学和研究机构,成为计算机科学教育的重要工具。

商业化与分支(1980年代)

1980年代,随着商业需求的增长,多个公司开始开发自己的Unix版本,形成了众多分支,如AT&T的System V和BSD(Berkeley Software Distribution)。这段时间,Unix的商业化步伐加快,各种厂商推出了兼容Unix的操作系统,推动了Unix在企业环境中的广泛应用。

标准化努力(1988年)

为了统一不同的Unix版本,1988年推出了POSIX(Portable Operating System Interface)标准,旨在确保不同Unix系统间的兼容性。这一标准促进了Unix的互操作性,并成为后续操作系统设计的重要参考。

开源运动与现代Unix(1990年代至今)

进入1990年代后,开源运动兴起,Linux作为类Unix操作系统逐渐流行。尽管Unix本身是商业软件,但一些Unix变种(如FreeBSD和OpenBSD)开始以开源形式发布,推动了社区的参与。

现代Unix仍在许多领域发挥着重要作用,如服务器、网络设备和嵌入式系统。Unix的设计理念影响了许多现代操作系统,包括Linux、macOS和各种Unix衍生系统。

起源

Linux的故事始于1991年。当时,芬兰赫尔辛基大学的学生Linus Torvalds开始了一个个人项目,目标是开发一个免费的类Unix操作系统内核。Torvalds的初衷是为了学习操作系统,并且希望创建一个能够在他的个人计算机上运行的Unix系统替代品。

在1991年8月25日,Torvalds在comp.os.minix新闻组上发布了一封著名的邮件:

"Hello everybody out there using minix – I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones."

这封邮件标志着Linux内核的诞生。在邮件中,Torvalds明确表示,这只是一个爱好项目,并且不会像GNU那样庞大。然而,Linux很快超出了他的预期,成为全球开发者和爱好者的焦点。

Unix对Linux的影响

要理解Linux的设计哲学,就必须了解Unix操作系统。Unix的设计理念注重简洁和模块化,其核心哲学是“工具链”——即每个工具只专注于完成一项任务,并且这些工具能够通过简单的命令组合完成复杂的工作。这种设计思想为后来操作系统的发展奠定了基础。

Unix系统不仅对Linux有深远的影响,也对整个计算机行业产生了巨大的推动作用。Linux继承了Unix的许多特性,如文件系统结构、进程管理和权限控制等。

Linux与GNU项目

虽然Linus Torvalds开发了Linux内核,但要构建一个完整的操作系统,需要的不仅仅是内核。幸运的是,GNU项目提供了许多关键组件。GNU项目由Richard Stallman在1983年发起,目标是创建一个完全自由的软件生态系统,包括编译器、Shell、文本编辑器等工具。

Linux内核与GNU工具结合,形成了完整的操作系统,因此很多人称其为“GNU/Linux”。虽然这个名称在社区中存在争议,但不可否认的是,GNU项目为Linux的成功奠定了基础。

自由软件与开源运动

Linux的迅速发展与自由软件运动和开源软件的理念息息相关。Linux遵循GNU通用公共许可证(GPL),这一许可证允许任何人自由地使用、修改和分发Linux的源码。这一自由性激发了全球开发者的参与热情,推动了Linux在短时间内取得了快速进步。

自由软件运动由Richard Stallman发起,倡导软件应该是自由的,用户应拥有对软件的控制权。而开源软件运动则更多地关注开源带来的技术优势,特别是在协作开发和代码共享方面。Linux正是这两大运动交汇处的成功范例。

Linux的快速发展

从1991年发布至今,Linux已经历了数千次内核更新,发展成为一个高度成熟且稳定的操作系统。在最初的几年,Linux主要被技术爱好者和程序员用于个人学习和研究。然而,随着时间的推移,越来越多的企业和组织开始认识到Linux的潜力,尤其是在服务器领域。由于其高性能、安全性和自由的特性,Linux迅速成为了互联网服务器的主力操作系统。

如今,Linux不仅在服务器市场占据主导地位,还广泛应用于各种嵌入式设备、物联网设备和超级计算机中。世界上最快的超级计算机几乎都运行着Linux,而Android操作系统(基于Linux内核)则占据了移动设备市场的主导地位。

Linux官网

The Linux Kernel Archives

发行版本

我们前面介绍的都是Linux内核,是操作系统的核心部分,负责管理系统资源,包括CPU、内存、设备驱动等。内核提供了与硬件的直接交互,并为上层应用程序提供了基本的服务接口。操作系统是在内核的基础之上包括其他各种应用程序、库、工具和用户界面……

Liunx操作系统的构成是

  • 内核:作为操作系统的基础,内核负责调度任务、管理内存、处理输入输出操作、实现文件系统等功能。它是Linux操作系统的“心脏”。

  • 用户空间:在内核之上,用户空间包含了所有用户应用程序和服务,包括图形界面、命令行工具、编程库、服务守护进程等。这些组件与内核协同工作,以提供完整的操作体验。

操作系统发行版是指各种Linux发行版(如Ubuntu、Fedora、Debian等)在Linux内核的基础上,集成了特定的应用程序、包管理工具和用户界面。每个发行版可能会选择不同的内核版本及其配置选项,以满足特定的需求。可以理解为是在Linux内核的基础上向各自更为擅长的方向演化的产物

Linux环境的搭建

这里一般会有三种搭建环境的方式

  • 在物理机上安装Linux系统
  • 使用虚拟机安装Linux系统
  • 使用云服务器,云服务器安装Linux系统

我们这里使用云服务器的方式,这里大家可以按自身实际情况考虑合适的方式

我这里使用的是Ubuntu 22.04 64位,当然了主要是Linux系统都可以选择

如果购买云服务器,如何选购我们就不再展开,但是购买完成之后关注一下服务器IP地址,管理员(root)的账户密码

我们使用Xshell登录我们的服务器,刚才介绍的那三点是完成登录的核心。

Xshell的按照我们也不再展开,基本就是一路默认next安装即可 

官网XSHELL - NetSarang Website

下面就可以登录Xshell

使用以下命令 ssh [用户名]@[服务器IP地址] 登录,[] 内的内容需要替换为你服务器的信息,之后会弹窗要求输入密码,输入登录用户的密码即可成功登录

或者

ssh [服务器IP地址] 之后会弹窗提示你输入用户名和密码

注意,在Linux中的复制和粘贴分别是 ctrl+Insert和shift+insert

也可以使用Xshell记住你的登录

随后需要填写用户名和密码即可实现记住登录信息

之后只需要点击Xshell记录的信息即可自动实现登录

登录之后我们可以来看几个简单的命令

可以通过 uname -r 命令查看内核版本

如果想查看更加详细的信息 可以使用 uname -a 这会显示包括内核版本、主机名、处理器架构等在内的更多信息

还有 whoami 可以查看当前登录的用户名 pwd 可以查看目前在目录中的位置

root用户是超级管理员用户,它可以创建新用户

adduser 新用户名 =》 创建用户

passwd 新用户名 =》 可以修改用户的密码

注意Linux中密码不回显,输入完直接回车即可

删除用户使用 userdel 命令删除用户 userdel 用户名

还希望删除该用户的主目录及其所有文件 userdel -r 用户名

 基础指令

ls

对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息(没用其他参数默认只会列出文件名)

常见参数有 -a 列出包含隐藏文件 -l列出详细信息 ll可以为 ls -al 的缩写

ls后面如果不跟地址默认是本地址,更换地址显示相应地址的信息

注意,ll或者ls -l 显示详细信息时,关注每行的第一个像素的位置,如果是-代表普通文件,d则代表目录,Linux中一切皆文件

-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录

pwd

显示当前所在的位置

cd

进入指定的目录

可以跟绝对地址或者相对地址 ../上一级目录 ./本级目录

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件

cd ~/cd:进入用户家目
cd -:返回最近访问目录

touch

常用于创建一个不存在的文件

touch一个存在的文件,会更改文件的时间属性

mkdir

这个一般用于创建一个目录

如果需要创建多个层级的目录,需要mkdir –p

rmdir指令 && rm 指令

rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令

rmdir只能删除空目录

-p选项使得如果

更为常用的删除命令是rm命令可以同时删除文件或目录

-r则会递归删除内部的全部文件,-f是指强制删除

man

提示命令的参数以及功能,这是一个在线的手册

它内部会有很多本手册,默认查找的是第一本(指令本),第二本是系统调用本,第三本是C语言的手册……一般只用这三本

cp

cp [选项] 源文件或目录 目标文件或目录

参数常用的是 -r 复制目录时需要添加参数

mv

常用于移动文件的位置,也可以给文件重命名

mv [选项] 源文件或目录 目标文件或目录

选项一般不带

cat和tac

常用于输出短文件中的内容

tac正向打印,tac反向打印

cat [选项][文件]

如果直接cat回车则会不断回显你输入的内容

选项常用的时 -n 输出时带行号

more

功能上类似于cat,不过不能一页完全显示时变为分页显示

less

功能上类似于cat,不过是滑动显示

重定向

> 输出重定向 文件不存在则新建,存在则会清空输出

>> 追加重定向 不清空输出

< 输入重定向

head

输出文件前几行

参数 -n 代表行数 n自行替换

tail

输出文件后几行

参数 -n 代表行数 n自行替换

时间相关

date

显示当前时间

可以指定格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下

%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
例如date +%Y:%m:%d

root可以设置当前时间date -s

时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@n

cal

显示日历

cal [参数][月份][年份]

find -name

find 从哪里开始查 -name 待查的文件

从待开始的位置递归遍历查找文件

grep

行为单位查找包含的字符串

-i:忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

常搭配管道符号 | 使用。管道符可以理解为链式编程,前面的输出是后面的输入

zip和unzip

zip [-r] 目标.zip 源

如果目标文件时目录 需要-r

unzip 源.zip [-d 目标位置]

没用指定位置默认为当前

tar

也是压缩或者解压文件

tat czf 目标.tgz 源 //压缩

tar xzf 源.tgz [-C 目标文章] //解压

lrzsz和scp

sz可以从服务器向物理机传输文件(Xshell会询问放在哪个目录下)

rz可以从物理机向服务器传输文件(一般我们使用拖拽的方式)

scp可以实现一台服务器向另外一台服务器发送文件

bc

一个简单的计算器

uname

-r查看内核版本

-a查看核心配置

常用热键

[Tab]按键---具有一下补全和两下提示的功能

[Ctrl]-c按键---让当前的程序停止

上下键翻历史命令

Ctrl]-r按键---搜索历史命令

Ctrl]-d按键---退出当前用户

shutdown [选项] 关机 

初识shell

我们用户是不方便直接操作内核的,需要一个中间人来帮助我们和内核建立连接,这个中间人就是shell(命令行解释器),我们都是通过命令行来操作Linux,shell先拿到用户输入的命令,先进行一层校验再交给内核从而保护内核。shell是个统称,在我们具体的系统中它叫bash,他在接受指令时会产生一个子线程去运行这个指令保证自己一直能正常运行,这也是为了保证Linux系统能一直正常运行

结语

以上便是今天的全部内容。如果有帮助到你,请给我一个免费的赞。

因为这对我很重要。

编程世界的小比特,希望与大家一起无限进步。

感谢阅读!

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

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

相关文章

【C++11】右值引用和移动语义

文章目录 左值和右值的概念左值右值 左值与右值引用移动语义的概念std::move 的作用使用std::move的注意事项 右值引用的使用场景右值引用的其他概念万能引用完美转发std::forward万能引用和右值引用的区别 新的类功能默认成员函数 左值和右值的概念 在C中&#xff0c; 左值 和…

MATLAB下的RSSI定位程序,二维平面上的定位,基站数量可自适应

文章目录 引言程序概述程序代码运行结果待定位点、锚点、计算结果显示待定位点和计算结果坐标 引言 随着无线通信技术的发展&#xff0c;基于 R S S I RSSI RSSI&#xff08;接收信号强度指示&#xff09;的方法在定位系统中变得越来越流行。 R S S I RSSI RSSI定位技术特别适…

面试题之- null和undefined的区别

前言 首先undefined和null都是基本数据类型&#xff0c;这两个基本数据类型分别都只有一个值&#xff0c;就是undefined和null。 undefined代表的含义是未定义&#xff0c;null代表的的含义是空对象&#xff0c;一般变量声明了但是还有没有定义的时候会返回undefined&#xf…

毕设 大数据抖音短视频数据分析与可视化(源码)

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕…

Python小示例——质地不均匀的硬币概率统计

在概率论和统计学中&#xff0c;随机事件的行为可以通过大量实验来研究。在日常生活中&#xff0c;我们经常用硬币进行抽样&#xff0c;比如抛硬币来决定某个结果。然而&#xff0c;当我们处理的是“质地不均匀”的硬币时&#xff0c;事情就变得复杂了。质地不均匀的硬币意味着…

Oracle 表空间异构传输

已经有了表空间的数据文件&#xff0c;和元数据dump文件&#xff0c;如何把这个表空间传输到异构表空间中&#xff1f; 查询异构传输平台信息&#xff1a; COLUMN PLATFORM_NAME FORMAT A40 SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM O…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之⑥:NL2SQL技术探讨

一、概述 NL2SQL&#xff08;Natural Language to SQL&#xff09;是一种将自然语言转换为结构化查询语言的技术。它可以帮助用户通过使用自然语言来与数据库进行交互&#xff0c;而无需了解复杂的SQL语法。 NL2SQL技术的背景&#xff1a; 随着人工智能的发展&#xff0c;越…

【Python】AudioFlux:音频与音乐分析的利器

AudioFlux 是一个专为音频和音乐分析、特征提取设计的开源 Python 库。它支持广泛的音频处理功能&#xff0c;包括特征提取、音高检测、时频分析、谱图处理等。这些功能被广泛应用于机器学习、深度学习、信号处理等领域&#xff0c;特别是对于音乐信息检索&#xff08;MIR&…

Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)

反向代理与跨域描述 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin Resource Sharing, CORS&#xff09;是指在浏览器中&#xff0c;当一个网页的脚本试图从一个域名&#xff08;协议、域名、端口&#xff09;请求另一个域名的资源时&#xff0c;浏览器会阻止这种请求…

《精通开关电源设计》笔记一

重点 效率 纹波 环路响应 尺寸&#xff0c;从静态到动态的研究方法&#xff0c;假设开关电源稳态运行&#xff0c;以电感为中心&#xff0c;根据半导体器件(mos管或二极管)分段分析电路的状态&#xff0c;工具有电路原理和能量守恒 影响效率的主要是开关损耗&#xff0c;所以…

qemu模拟arm64环境-构建6.1内核以及debian12

一、背景 手头没有合适的arm64开发板&#xff0c;但是需要arm的环境&#xff0c;于是想到qemu模拟一个。除了硬件交互以外&#xff0c;软件层面的开发还是都可以实现的。 虚拟机还能自定义内存大小和镜像大小&#xff0c;非常适合上板前的验证&#xff0c;合适的话再买也不迟。…

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离 —— 2024-10-02 下午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离1.代码图片2.分析3.UML4.代码 1.代码图片 运行 Mouse button 1 pressed at (1…

掌控物体运动艺术:图扑 Easing 函数实践应用

现如今&#xff0c;前端开发除了构建功能性的网站和应用程序外&#xff0c;还需要创建具有吸引力且尤为流畅交互的用户界面&#xff0c;其中动画技术在其中发挥着至关重要的作用。在数字孪生领域&#xff0c;动画的应用显得尤为重要。数字孪生技术通过精确模拟现实世界中的对象…

笔记整理—linux进程部分(6)进程间通信、alarm和pause

两个进程间通信可能是任何两个进程间的通信&#xff08;IPC&#xff09;。同一个进程是在同一块地址空间中的&#xff0c;在不同的函数与文件以变量进程传递&#xff0c;也可通过形参传递。2个不同进程处于不同的地址空间&#xff0c;要互相通信有难度&#xff08;内存隔离的原…

华为海思:大小海思的双轮驱动战略分析

华为海思,作为华为旗下的半导体设计部门,近年来在芯片设计领域取得了显著成就,成为了中国乃至全球芯片设计的重要力量。实际上,华为海思并非单一实体,而是由两个主要分支构成:大海思和小海思。这两个分支虽然同属华为海思,但在定位、产品布局以及市场策略上有所不同,共…

【AI学习】Mamba学习(三):离散化SSM的矩阵计算

SSM离散化表示 除了连续的输入之外&#xff0c;还会通常碰到离散的输入(如文本序列)。所以SSM需要离散化形式&#xff0c;就是下面公式2和3。 SSM离散化过程 但是好奇这个离散化过程是如何进行的&#xff1f; 《一文通透想颠覆Transformer的Mamba&#xff1a;从SSM、HiPPO、…

JDBC 概述

JDBC 概述 JDBC的基本概念与功能JDBC的工作原理JDBC的组件与类JDBC的类型与特性JDBC的应用场景 JDBC&#xff08;Java Database Connectivity&#xff09;即Java数据库连接&#xff0c;是Java编程语言用于与数据库进行连接和操作的API&#xff08;应用程序编程接口&#xff09;…

9个微服务最佳实践

1⃣分离数据存储&#xff1a;独立数据库&#xff0c;提升灵活性。 2⃣代码成熟度一致&#xff1a;质量稳定&#xff0c;避免技术债务 3⃣独立构建流程&#xff1a;独自构建&#xff0c;快速部署。 4⃣单一职责原则&#xff1a;业务功能单一&#xff0c;简化维护。 5⃣容器化部署…

TS1 order set分析

如下图&#xff0c;所示为TS1 order序列。该序列有16个symbol组成。 常见的symbol有&#xff0c;PAD和COM等。PAD是K symbol&#xff0c;还有D symbol。下文先给出COM symbol的解读。读协议文档可知COM常被称为K28.5。K是symbol的类型&#xff0c;注意symbol是编码过的数据。K…

DatePicker 日期控件

效果&#xff1a; 要求&#xff1a;初始显示系统当前时间&#xff0c;点击日期控件后修改文本控件时间。 目录结构&#xff1a; activity_main.xml(布局文件)代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:and…