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系统能一直正常运行
结语
以上便是今天的全部内容。如果有帮助到你,请给我一个免费的赞。
因为这对我很重要。
编程世界的小比特,希望与大家一起无限进步。
感谢阅读!
相关文章:

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

Vortex GPGPU的github流程跑通与功能模块波形探索(二)
文章目录 前言一、环境配置和debugging.md文档1.1 调试 Vortex GPU1.1.1测试 RTL 或模拟器 GPU 驱动的更改1.1.2 SimX 调试1.1.3 RTL 调试1.1.4 FPGA 调试1.1.5 分析 Vortex 跟踪日志 二、跑出波形文件和日志文件总结 前言 昨天另辟蹊径地去探索了子模块的波形仿真,…...

【X线源】微焦点X射线源的基本原理
【X线源】微焦点X射线源的基本原理 1.背景2.原理 1.背景 1895年11月8日,德国物理学家威廉伦琴在研究阴极射线时偶然发现了X射线。当时,他注意到阴极射线管附近的荧光屏发出了光,即使它被纸板遮挡住。经过进一步实验,他意识到这种…...

LeetCode hot100---栈专题(C++语言)
1、有效的括号 (1)题目描述以及输入输出 (1)题目描述: 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。(2)输入输出描述: 输入:s "()&…...

STM32-MPU6050+DAM库源码(江协笔记)
目录 1、MPU6050简介 2、MPU6050参数 3、MPU6050硬件电路 4、MPU6050结构 5、MPU6000和MPU6050的区别 6、MPU6050应用场景 7、MPU6050电气参数 8、MPU6050时钟源选择 9、MPU6050中断源 10、MPU6050的I2C读写操作 11、DMP库移植 1、MPU6050简介 10轴传感器࿱…...

Ruby 数组(Array)
Ruby 数组(Array) 引言 Ruby,作为一种高级编程语言,以其简洁明了的语法和强大的功能而闻名。在Ruby中,数组(Array)是一种基本的数据结构,用于存储一系列有序的元素。本文将深入探讨…...

分享几个做题网站------学习网------工具网;
以下是就是做题网站;趣IT官网-互联网求职刷题神器趣IT——互联网在线刷题学习平台,汇集互联网大厂面试真题,拥有java、C、Python、前端、产品经理、软件测试、新媒体运营等多个热门IT岗位面试笔试题库,提供能力测评、面试刷题、笔…...

Spring MVC__入门
目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC 二、Spring MVC实现原理2.1核心组件2.2工作流程 三、helloworld1、开发环境2、创建maven工程3、配置web.xml4、创建请求控制器5、创建springMVC的配置文件6、测试HelloWorld7、总结 一、SpringMVC简介 1、什么是MVC MV…...

MATLAB GUI组件全解析:构建交互式应用程序
MATLAB的图形用户界面(GUI)是一个功能强大的工具,它允许开发者创建直观且用户友好的界面。这些界面,也称为应用程序或app,提供了点击控制,使得用户无需学习编程语言或输入命令即可运行应用程序。本文将详细…...

MySQL 实验 2:数据库的创建与管理
MySQL 实验 2:数据库的创建与管理 目录 MySQL 实验 2:数据库的创建与管理一、查看数据库1、语法2、举例 二、创建数据库1、语法2、举例 三、选择数据库1、语法2、举例 四、删除数据库1、语法2、举例 一、查看数据库 1、语法 show databases;2、举例 m…...

LeetCode 2390. 从字符串中移除星号【栈】1347
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

springboot文件上传(阿里云oss)
本地存储 使用uuid是为了避免文件名的重复,防止覆盖 RestController public class FIleUploadController {PostMapping("/upload")public Result<String> upload(MultipartFile file) throws IOException {//把文件的内容存储到本地磁盘上String …...

Linux下Nodejs应用service配置
Linux 的 service 命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、查看状态(status)等。service 命令本身是一个 shell 脚本,它在…...

设计模式-结构型-常用:代理模式、桥接模式、装饰者模式、适配器模式
代理模式 快速入门 代理模式是指在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。 比如这段统计性能的代码: public class UserController {//...省略其他属性和方法...private MetricsCollecto…...

用多了编程工具,还是Editplus3最贴心
编程久了,发现越是复杂的编程工具越是烦人,而不是帮助人。 早期Java届是没有统一的IDE的,有些人习惯用文本编辑器,但苦于缺乏提示,有些人从一些渠道用上了JBuilder,但毛病不少,直到Eclipse化解…...

Angular基础学习(入门 --> 入坑)
目录 一、Angular 环境搭建 二、创建Angular新项目 三、数据绑定 四、ngFor循环、ngIf、ngSwitch、[ngClass]、[ngStyle]、管道、事件、双向数据绑定--MVVM 五、DOM 操作 (ViewChild) 六、组件通讯 七、生命周期 八、Rxjs 异步数据流 九、Http …...

吊打ChatGPT4o!大学生如何用上原版O1辅助论文写作(附论文教程)
目录 1、用ChatGPT生成论文选题2、用ChatGPT生成论文框架3、用ChatGPT进行文献整理4、用ChatGPT进行论文润色5、用ChatGPT进行问题求解6、用ChatGPT进行思路创新7、用ChatGPT进行论文翻译8、如何直接使用ChatGPT4o、o1、OpenAI Canvas 9、OpenAI Canvas增强了啥?10、…...

Linux防火墙-常用命令
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#x…...

C++:STL常用算法随笔
主要的头文件#include <algorithm> < functional> <numeric> 遍历算法: for_each、transform(搬运容器到另一个容器中 ) void print1(int val) {cout << val <<" "; } for_each (v.begin(),v.end() , print1) 或者用仿…...

Python NumPy学习指南:从入门到精通
Python NumPy学习指南:从入门到精通 第一部分:NumPy简介与安装 1. 什么是NumPy? NumPy,即Numerical Python,是Python中最为常用的科学计算库之一。它提供了强大的多维数组对象ndarray,并支持大量的数学函…...

Flutter笔记--通知
这一节回顾一下Flutter中的Notification,Notification(通知)是Flutter中一个重要的机制,在widget树中,每一个节点都可以分发通知,通知会沿着当前节点向上传递,所有父节点都可以通过NotificationListener来监听通知,通过它可以实现…...

Aegisub字幕自动化及函数篇(图文教程附有gif动图展示)(二)
目录 template行 template pre-line template line template syl template syl noblank template char template notext template pre-line notext template syl noblank notext template keeptags 编辑 template loop number 内联变量 编辑 remeber函数 re…...

系统分析师16:系统测试与维护
1 内容概要 2 软件测试类型 2.1 测试类型 动态测试【计算机运行】 白盒测试法:关注内部结构与逻辑灰盒测试法:介于两者之间黑盒测试法:关注输入输出及功能 静态测试【人工监测和计算机辅助分析】 桌前检查代码审查代码走查以上三个都是做的…...

详解Java中的堆内存
详解Java中的堆内存 堆是JVM运行数据区中的一块内存空间,它是线程共享的一块区域(注意了!!!),主要用来保存数组和对象实例等(其实对象有时候是不在堆中进行分配的,想要了…...

C++类和对象下详细指南
C类和对象下详细指南 1. 初始化列表与构造函数 1.1 初始化列表概述 初始化列表在C中用于初始化对象的成员变量,特别是当你需要在对象构造时就明确成员变量的值时。通过初始化列表,成员变量的初始化可以在进入构造函数体之前完成。这不仅可以提升性能&…...

【瑞昱RTL8763E】音频
1 音乐播放控制 1.1 播放列表更新 文件系统在sd卡中保存header.bin及name.bin两份文件用于歌曲名称的存储。为方便应用层进行歌曲显示及列表管理,可将这两个bin文件信息读取并保存到nor flash中。需要播放指定名称的歌曲时,将对于歌曲名称传递给文件系…...

videojs 播放监控
<head><!-- 1. 引入videojs的CSS。 --><link href"https://vjs.zencdn.net/7.20.3/video-js.css" rel"stylesheet" /><!-- If youd like to support IE8 (for Video.js versions prior to v7) --><!-- <script src"htt…...

电源管理芯片PMIC
一、简介 电源管理芯片(Power Management Integrated Circuits,简称PMIC)是一种集成电路,它的主要功能是在电子设备系统中对电能进行管理和控制,包括但不限于以下几点: 电压转换:将电源电压转换…...

C++ 线性表、内存操作、 迭代器,数据与算法分离。
线性表: 线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的 一种,一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和…...

PHP如何解析配置文件
在PHP中解析配置文件有多种方法,具体取决于配置文件的格式。常见的配置文件格式包括INI文件、YAML文件、JSON文件以及PHP数组文件(即PHP文件本身包含配置数组)。下面是一些常用的方法来解析这些配置文件。 1. 解析INI文件 INI文件是最常见的…...