前言
今天是2021年的第一天,刚好开了新坑,这次不能断更了呀。
今天是新年的第一天,刚好开始进入稍微深入一点的应用讲解,希望大家可以跟随我的脚步一起学习进步!
三连即可提高学习效率0.0
🧑🏻作者简介:一个学嵌入式的年轻人
✨联系方式:2201891280(QQ)
📔源码地址:https://gitee.com/xingleigao/study_qianrushi
⏳全文大约阅读时间: 60min
文章目录
1.linux简介(作为了解)
Unix的起源
Linux的内核就是Unix
- 1969年,由KenThompson在AT&T贝尔实验室实现的。使用的是用汇编语言。
- 1970年,KenThompson和DennisRitchie使用 C语言对整个系统进行了再加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。
Linux是什么?
GNU&GPL
GNU = GNU is Not Unix
由Richard Stallman在1984创建
最初的软件:gcc、make、glibc…
GPL = General Public License
Linux是一种操作系统。
- 1991年,芬兰赫尔辛基大学的学生Linus Torvals为了能在家里的PC机上使用与学校一样的操作系统,开始编写了类UNIX。
- 1991.8.25,Linus就在comp.os.minix新闻组中首次发布了一个Linux内核的公共版本。
Linus各种怼天怼地。特别有意思0.0
Linux体系结构
Linux操作系统的组件
命令终端
前流行的终端窗口有:Xterm、Gnome-terminal、Konsole、Rxvt等
其中ubuntu自带的是Gnome-terminal,我日常使用的是ssh直接远程连接的界面,感兴趣的童鞋可以自己摸索一下。
2.deb软件包管理(apt详细掌握)
两种软件包管理机制
- Debian Linux首先提出“软件包”的管理机制——Deb软件包
将应用程序的二进制文件、配置文档、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。- Redhat Linux基于这个理念推出了自己的软件包管理机制——Rpm软件包。
随着Linux操作系统规模的不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断。Debian Linux开发出了APT软件包管理器。检查和修复软件包依赖关系,利用Internet网络帮助用户主动获取软件包
APT工具再次促进了Deb软件包更为广泛地使用,成为Debian Linux的一个无法替代的亮点。
软件包的类型
Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)
- 二进制软件包(Binary Packages):它包含可执行文件、库文件、配置文件、man/info页面、版权声明和其它文档。
- 源码包(Source Packages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。
软件包的命名遵循以下约定:
软件包管理工具分类
类别 常见工具 描述 命令行 dpkg-deb、dpkg、apt 在命令行模式下完成软件包管理任务。 文本窗口界面 dselect、aptitude、tasksel 在文本窗口模式中,使用窗口和菜单可以完成软件包管理任务。 图形界面 synaptic 在X-Window图形桌面环境中运行,具有更好的交互性、可读性、易用性等特点 我们比较常用的还是dpkg和apt方式
dpkg 相关命令
命令 介绍 dpkg -i <package> 安装一个在本地文件系统上存在的Debian软件包 dpkg -r <package> 移除一个已经安装的软件包 dpkg -P <package> 移除已安装软件包及配置文件 dpkg -L <package> 列出安装的软件包清单 dpkg -s <package> 显出软件包的安装状态
APT工作原理
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。因此,对于用户,这些镜像服务器就是他们的
软件源
(reposity)。
在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list
列出最合适访问的镜像站点地址。
软件源配置文件只是告知Ubuntu系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。若是每安装一个软件包,就在服务器上寻找一边,效率是很低的。因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。这就是APT软件包管理器的工作原理。
软件源配置文件
/etc/apt/sources.list
。本质就是一个普通的文本文件,可以在超级管理员授权下,使用任何文本编辑器进行编辑。在该文件中,添加的软件源镜像站点称为一个配置项,并遵循以下格式:DebType AddressType://Hostaddress/Ubuntu Distribution Component1 Component2……
软件源
软件源分类
- 核心(Main):官方维护的开源软件,是由Ubuntu官方完全支持的软件,包括大多数流行的、稳定的开源软件,是Ubuntu默认安装的基本软件包;
- 公共(Universe):社区维护的开源软件,是由Ubuntu社区的计算机爱好者维护的软件。这些软件包没有安全升级的保障。用户在使用时,需要考虑这些软件包存在的不稳定性;
- 受限(Restricted):官方维护的非开源软件,是专供特殊用途,而且没有自由软件版权,不能直接修改软件,但依然被Ubuntu团队支持的软件;
- 多元化(Multiverse):非Ubuntu官方维护的非开源软件,用户使用这些软件包时,需要特别注意版权问题。
刷新软件源
修改了配置文件——/etc/apt/sources.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,需要将这些资源列个清单,以便本地主机知晓可以申请哪些资源。
使用apt-get update
命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。
管理软件包
apt-get subcommands [ -d | -f | -m | -q | --purge | --reinstall | - b | - s | - y | - u | - h | -v ] pkg
子命令 描述 update 下载更新软件包列表信息 upgrade 将系统中所有软件包升级到最新的版本 install 下载所需软件包并进行安装配置 remove 卸载软件包 autoremove 将不满足依赖关系的软件包自动卸载 source 下载源码包 build-dep 为源码包构建所需的编译环境 dist-upgrade 发布版升级 dselect-upgrade 根据dselect的选择来进行软件包升级 clean 删除缓存区中所有已下载的包文件 autoclean 删除缓存区中老版本的已下载的包文件 check 检查系统中依赖关系的完整性
选项 描述 -d 仅下载软件包,而不安装或解压 -f 修复系统中存在的软件包依赖性问题 -m 当发现缺少关联软件包时,仍试图继续执行 -q 将输出作为日志保留,不获取命令执行进度 –purge 与remove子命令一起使用,完全卸载软件包 –reinstall 与install子命令一起使用,重新安装软件包 -b 在下载完源码包后,编译生成相应的软件包 -s 不做实际操作,只是模拟命令执行结果 -y 对所有询问都作肯定的回答,apt-get不再进行任何提示 -u 获取已升级的软件包列表 -h 获取帮助信息 -v 获取apt-get版本号
我加粗的为常用的命令,应该着重记忆!!!
修复软件包依赖关系
如果由于故障而中断软件安装过程,可能会造成关联的软件包只有部分安装。之后,用户就会发现该软件既不能重装又不能删除。
作为组合命令,下面前者用于检查软件包依赖关系,后者用于修复依赖关系。
apt-get check
——apt-get -f install
在处理依赖关系上,apt-get会自动下载并安装具有依赖关系(depends)的软件包,但不会处理与安装软件包存在推荐(recommends)和建议(suggests)关系的软件包。
安装软件包
在准备好软件源并连通网络后,用户只需告知安装软件的名称,“apt-get install”命令就可以轻松完成整个安装过程,而无须考虑软件包的版本、优先级、依赖关系等。
使用“apt-get install”下载软件包大体分为四步:
- 扫描本地存放的软件包更新列表(由apt-get update命令刷新更新列表),找到最>新版本的软件包;
- 进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包;
- 从软件源所指的镜像站点中,下载相关软件包;
- 解压软件包,并自动完成应用程序的安装和配置
查询软件包信息
apt-cache subcommands [ -p | -s | - q | - i | - c | -h ] pkg
子命令 描述 showpkg 获取二进制软件包的常规描述信息 showsrc 获取源码包的详细描述信息 show 获取二进制软件包的详细描述信息 stats 获取软件源的基本统计信息 search 根据正则表达式检索软件包 depends 获取该软件包的依赖信息 rdepends 获取所有依赖于该软件包的软件包 pkgnames 列出所有已安装软件包的名字 policy 获取软件包当前的安装状态
3.shell基本命令(简单了解)
shell简介
英文单词shell可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。
可以这样认为,Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互
shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。
当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行。
用户在命令行提示符下键入命令文本,开始与Shell进行交互
接着,shell将用户的命令或按键转化成内核所能够理解的指令
控制操作系统做出响应,直到控制相关硬件设备
然后,shell将输出结果通过shell提交给用户
shell的简单命令
sudo shutdown -h now //关机 sudo shutdown -r now //重启 sudo reboot now //重启 sudo shutdown -h +45 “That is all, game over.”//定时关机并打印字符 sudo shutdown -r +60 //定时重启
4.shell中的特殊字符(必须掌握)
shell中的通配符
通配符 含义 实例 星号(*) 匹配任意长度的字符串 用file_*.txt,匹配file_wang.txt、file_Lee.txt、file3_Liu.txt 问号(?) 匹配一个长度的字符 用flie_?.txt,匹配file_1.txt、file1_2.txt、file_3.txt 方括号([…]) 匹配其中指定的一个字符 用file_[otr].txt,匹配file_o.txt、file_r.txt和file_t.txt 方括号([ - ]) 匹配指定的一个字符范围 用file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt 方括号([^…]) 除了其中指定的字符,均可匹配 用file_[^otr].txt,除了file_o.txt、file_r.txt和file_t.txt的其他文件
shell中的管道
管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成了一个管道。
其实这就是两个进程间通信的一种方式。利用管道将第一个程序的输出结果作为第二个命令的输入。
举个例子:ls /usr/bin | wc –w
上面的命令就可以得到
/usr/bin
目录下所有的文件个数。
输出重定向
重定向符 含义 实例 > file 将file文件重定向为输出源,新建模式 ls /usr > Lsoutput.txt,将ls /usr的执行结果,写到Lsoutput.txt文件中,若有同名文件将被删除 >> file 将file文件重定向为输出源,追加模式 ls /usr >> Lsoutput.txt,将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后 < file 将file文件重定向为输入源 wc < file1, 将file1中的内容作为输入传给wc命令 2> 或 &> 将由命令产生的错误信息输入到文件中 ls noexistingfile.txt 2> err.log,使用ls命令,查看一个不存在的文件时,将系统错误提示保存在err.log文件中
命令置换
ls 'pwd'
上面的命令作用就是显示当前目录下的所有文件,可以认为是pwd会先执行出结果作为ls输入来进行输出。
写在最后
今天主要讲解了linux下编程的基础知识,接下来的几天都会围绕这一主题展开,有兴趣的童鞋可以跟我一起呀。三连即可提高学习效率!!!
另外我在更新的就是算法笔记的一些例题笔记,这个系列是用于提高我的算法能力,如果有兴趣对算法领域感兴趣找不到合适的入门文章也可以追更,如果我更新的太慢了请大家点赞收藏,一键三连才能更有更新的动力呀0.0