Linux和指令初识

news2024/10/6 7:37:36

 前言

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.coloradmin.cn/o/2191425.html

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

相关文章

GitLab flow工作流及其使用

问题背景 Git flow和Github flow及其问题 使用GitLab flow 目录 什么是GitLab工作流 功能分支 生产分支 使用GitLab flow环境分支 使用GitLab flow发布分支 使用GitLab flow合并/拉取请求 使用GitLab flow进行问题跟踪 链接和关闭合并请求中的问题 用rebase压缩提交…

ElasticSearch备考 -- Multi field

一、题目 Create the index hamlet_2 with one primary shard and no replicas Copy the mapping of hamlet_1 into hamlet_2, but also define a multi-field for speaker. The name of such multi-field is tokens and its data type is the (default) analysed string Reind…

【工程测试技术】第6章 信号处理初步,频谱分析,相关系数

目录 6.1 数字信号处理的基本步骤 6.2 离散信号及其频谱分析 6.2.1 概述 6.2.2 时域采样、混叠和采样定理 6.2.3 量化和量化误差 6.2.4 截断、泄漏和窗函数 6.2.5 频域采样、时域周期延拓和栅栏效应 6.2.6 频率分辨率、整周期截断 6.3 相关分析及其应用 6.3.1 两…

Emissive CEO Fabien Barati谈《消失的法老》背后的故事:XR大空间体验的创新与未来

在最近的一次播客访谈中,虚拟现实之声(Voices of VR)的主持人Kent Bye与Emissive公司的联合创始人兼CEO Fabien Barati进行了深入交流。Emissive是全球顶级的VR大空间体验制作商之一,以其沉浸式探险项目如《永恒的巴黎圣母院》和《胡夫地平线》而闻名。以下是这次访谈的核心…

VSCode debug模式无法跳转进入内置模块

在使用VSCode调试python代码的时候&#xff0c; 需要查看第三方库的代码&#xff0c;进行调试。 但是VSCode默认是不进入的&#xff0c; 因此需要更改Debug配置&#xff1a; 在launch.json 里加入如下的代码&#xff1a; "justMyCode": false 这样就能进入第三方库…

计算有向无环图中两节点间简单路径的数量

计算有向无环图中两节点间简单路径的数量 主要步骤:伪代码:C代码实现:解释:在给定一个有向无环图(DAG)以及两个节点s和t时,我们需要计算从节点s到节点t之间的简单路径的数量。为了实现这一目标,我们可以使用动态规划的思想,在拓扑排序的基础上解决问题。 主要步骤: 拓…

【Linux第五课-进程概念下】环境变量、程序地址空间

目录 环境变量main参数 --- 命令行参数环境变量环境变量特性 --- 命令行操作main函数的参数获取环境变量environ获取环境变量getenv()获取环境变量unset移除本地变量或环境变量set显示本地变量 代码获取和设置环境变量 本地变量 程序地址空间什么是进程地址空间为什么有地址空间…

预算有限也能玩转 AI:香橙派、树莓派与 Jetson 的选择攻略

随着 AI 技术的迅猛发展&#xff0c;越来越多的边缘计算设备可以处理从轻量级任务到复杂的 AI 模型。在本文中&#xff0c;我们将对比几款主流的边缘 AI 设备&#xff0c;包括 NVIDIA Jetson 系列、香橙派 和 树莓派 5&#xff0c;并探讨 Hailo 加速器 在边缘 AI 领域的潜力。我…

【学习笔记】手写一个简单的 Spring MVC

目录 一、什么是Spring MVC &#xff1f; Spring 和 Spring MVC 的区别&#xff1f; Spring MVC 的运行流程&#xff1f; 二、实现步骤 1. DispatcherServlet 1. 创建一个中央分发器 拦截所有请求 测试 2. 接管 IOC 容器 1. 创建配置文件 2. 修改 web.xml 配置文件 …

vSAN03:vSAN故障处理、节点维护、删除节点、关闭/重启/删除vSAN集群

目录 vSAN故障处理单节点维护从vSAN集群中永久删除节点关闭vSAN集群重启vSAN集群删除vSAN集群 vSAN故障处理 级别状态处理可能原因活动正常无无缺失vSAN 检测到临时组件故障&#xff0c;且其中的组件可以恢复并还原其工作状态&#xff0c;则该组件将处于“缺失”状态。&#x…

分析JS Crash(进程崩溃)

一、JS Crash异常检测能力 1、JS Crash日志规格 以下是进程崩溃日志信息中对应字段解释。 Build info:XXX-XXXX X.X.X.XX(XXXXXXXX) <- 版本信息 Module name:com.example.myapplication <- 模块名 Version:1.0.0 <- 版本号 Pid:579 <- 进程号 Uid:0 <- 用户ID…

【Qt】Qt学习笔记(一):Qt界面初识

Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序&#xff0c;无须重新编写源代码&#xff0c;便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt Creator是跨平台的Qt集成开发环境。 创建项目 Qt的一些界面&#xff0c;初学时一般选择Qt Widgets …

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机&#xff0c;virtualbox相对于vmare更加轻便&#xff0c;但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后&#xff0c;决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…

Linux 文件 IO 管理(第四讲:软硬链接和动静态库)

Linux 文件 IO 管理&#xff08;第四讲&#xff1a;软硬链接和动静态库&#xff09; 软硬链接操作与现象软链接硬链接 解释软链接硬链接作用 动静态库初识静态库怎么做库&#xff08;开发角度&#xff09;怎么用库&#xff08;使用角度&#xff09;安装当前目录直接使用 动态库…

JavaWeb程序设计(第四版)习题参考答案

JavaWeb程序设计&#xff08;第四版&#xff09;习题参考答案 目录 模块1 习题参考答案 模块2 习题参考答案 模块3 习题参考答案 模块4 习题参考答案 模块5 习题参考答案 模块6 习题参考答案 模块7 习题参考答案 模块8 习题参考答案 模块1 习题参考答案 选择题 1 .A …

WaveletGPT:基于小波的多尺度表征增强大型语言模型训练效率

斯坦福大学的研究人员首次将小波理论应用于大型语言模型&#xff0c;提出了WaveletGPT&#xff0c;通过在Transformer解码器层中添加多尺度滤波器&#xff0c;加速了模型训练速度&#xff0c;并在文本、音频和音乐等多个领域取得了显著的性能提升。 论文介绍 大型语言模型 (L…

求和问题题解

减 sort拍后就A了 #include <bits/stdc.h> #include <cstring> using namespace std; typedef long long ll; ll n,a[400005],cnt0,b[400005]; bool cmp(long long x,long long y){return x>y; } int main () {cin>>n;for(int i1;i<n;i){cin>>…

查缺补漏----同步,异步,半同步,分离式通信

目录 1.同步通信&#xff08;同步定时方式&#xff09; 2.异步通信 3.半同步通信 4.分离式通信 1.同步通信&#xff08;同步定时方式&#xff09; 同步通信方式&#xff08;比如SPI&#xff09;&#xff0c;是把许多字符组成一个信息组&#xff0c;这样&#xff0c;字符可…

Springboot 整合 durid

文章目录 Springboot 整合 druiddruid的优势配置参数使用整合 Druid配置数据源配置参数绑定配置参数配置监控页面配置拦截器 Springboot 整合 druid druid的优势 可以很好的监控 DB 池连接 和 SQL 的执行情况可以给数据库密码加密可以很方便的编写JDBC插件 配置参数 使用 整…

数据结构之树(4)

摘要&#xff1a;本篇主要讲哈夫曼树、并查集、二叉排序树、平衡二叉树等&#xff0c;非常非常非常重要&#xff01;&#xff01;&#xff01; 一、哈夫曼树 基于霍夫曼树&#xff0c;利用霍夫曼编码进行通信可以大大提高信道利用率&#xff0c;缩短信息传输时间&#xff0c;…