Linux初识——基本指令
我们在linux下输入各种指令,其实就相当于在windows中的相关操作,比如双击,新建文件夹等。
以下是相关基本指令基本用法
一.ls(显示当前目录下的所有文件和目录)
那如何显示当前目录(我们所在的位置)呢?用指令pwd即可。
1.2 创建一个文件夹/目录
有时候,我们点到文件夹的尽头发现内部无文件了,此时ls发现是空的,为了让其显示,我们可以尝试在此目录下新建一个文件夹,指令:mkdir 文件名
1.3 ls+选项
除此之外,ls大部分还可以后面跟一个选项,比如:ls -l即列出该目录下文件的详细信息。除此之外,还有一些其他的常用选项。
-a:显示当前目录下的所有文件
与ls不同的是,其多了.和..。但我们也能通过颜色判断其是文件夹。稍后再作解释。
1.4 选项的合并
那我们可不可以把两个选项同时使用呢?当然可以即ls -a -l;显示更多文件和文件的更详细的信息。(命令和选项,选项和选项之间必须有至少一个空格隔开,我们建议一个空格即可)
ls除了支持选项进行独立写,也支持合并写,比如ls -al即可达成上面同样的效果(顺序可以随意)
1.5 关于选项 -a
接下来,我们来解释一下刚才ls -l操作看不到的.和..
在Linux中, 以 . 开头的文件称为隐藏文件,只有用-a操作我们才能看见,包括我们自己创建的隐藏文件也是如此
、
.114就是新创建的隐藏文件/目录
1.6 -l下显示的其他信息
如图所示,显示了这两个文件的全部信息,那除了名字,剩下这堆信息又代表着什么呢?
这好比我们在windows下新建一个文本文档,虽然我什么也没写,显示的是0kb,但其也会占据此磁盘空间,这是因为其还有文件的属性,包括文件类型,创建时间等。因此我们得出。
文件=文件内容+文件属性。对文件的操作就是对内容操作或对属性操作。
在上面的红框开头,以d开头的文件我们称为目录,以-开头叫普通文件(比如源文件,文本文件等)
二. pwd(当前的工作路径,即所在目录)
我们在刚才已经演示了用法,在此就不多说了
除此之外,我们还需注意的是,在windows中连续进入几个文件加,上面会显示D:\XX\XXX\XXX.其中,\被称为路径分隔符,在Linux中,路径分割符用/表示,有了分隔符,我们就可以用文件夹(目录)+分隔符来表示一条路径,进而找到我们要找的文件。
有了这个东西,我们可以把ls再完善一下功能,如果我们想显示某一具体文件夹的信息(不一定是当前文件夹),只需 ls -l /文件夹名即可。显示指定目录下的内容。所以,ls的用法通式为:
ls [选项] [路径]。
对于一般的路径:/root/../.../....,我们把第一个/称为根目录,剩下的叫路径。
三 . cd(路径切换)
cd+路径 可切换到指定路径下。这个操作类似于windows的双击文件夹操作。
最后一步就是切换到根目录了。
有了cd操作,我们解释一下.和..到底是啥东西。
.和..叫特殊目录,.是当前目录,..是上级目录(对于112,他的上级目录就是root)cd..就是退到上一级目录,相当于windows中的回退。
3.1 ls -d
有时候,我们并不想展开某一个具体文件夹里的内容,只想看看当前路径下的文件夹,但我们用-l他总是会把文件夹展开显示,因此,需要用 -d选项,ls -d 目录即可展示当前路径下的内容而不打开目录,即只查看目录自己。
因此,我们也可以查看根目录本身而不打开根目录的内容。
注意:/里可以放普通文件,也可以放目录,/里面的目录也是如此,所以,Linux的目录结构是一颗多叉树的形状
3.2 绝对路径与相对路径
这颗多叉树的叶子节点,一定是空目录或普通文件,任何一个父节点可能有多个子节点,但任何一个子节点只有一个父节点。也就是说从根目录到目标文件,来回的路径是唯一的。这也告诉我们,可以用路径来定位一个文件的位置。这种路径称为绝对路径。
有绝对就有相对,那什么是相对路径呢?
假设我现在在112中新建一个txt文件(112中同时有一个lesson2的文件夹)
正常来说,我们想找到这个文件,就会用绝对路径表示:ls /root/112/hello.txt。但我们学过..是上级目录,因此,可用..代替:现在我们的位置是/root/112/lesson2,因为hello.txt在112中,所以我们要回退一个。即ls ../hello.txt。这个就是相对路径,相对是相对于当前路径的意思。之前的cd ..就是相对路径。在实际命令行操作的时候,经常使用相对路径,因为很方便。但绝对路径无论何时都能找到指定文件,在配置文件中使用居多。
在Linux下,任何一个目录都有.和..空目录也是如此,.相当于指向自己的指针,..相当于指向上一级路径的指针。 特殊地,根目录的.和..都指向自己。
3.3 cd - :跳转到最近的上一次路径,比如
3.4 cd ~
结果发现,无论当前在哪个路径,经过cd ~后都会回到/root,我们称为家目录
对于家目录的定义:对于root用户,首次登录所处的路径。对于普通用户,首次登录所处的路径(/home/用户名)。相当于windows的用户里叫桌面的文件夹。
所以,cd ~是回到用户自己的家目录下。root用户可以随便去普通用户的家目录下,相当于超级管理员,而普通用户只能去自己的家目录。
四 .touch指令(新建普通文件)
语法:touch 文件名
注意,在同一路径下不允许出现相同名字的文件或目录
五. mkdir(新建一个目录)
语法:mkdir 目录名 表示在当前路径下新建一个新目录,当然,也可以用相对路径在其他位置新建目录
但有时候我们想一次性新建一串目录比如:
这是不被允许的,我们只能新建一个然后cd进去继续新建,但是有一个选项可以帮助我们一次性完成,即在上图的mkdir后加-p即可。
六 rmdir和rm(删除命令)
rmdir不能删除普通文件,也不能删除非空文件,通常用来删除空目录。
rm可以删除普通文件,也可以删除非空目录,但需要加-r选项,他会把从他开始的所有子目录都删除,是一个递归的过程。但是在进行删除过程中会一直问你是否确定删除,直到递归结束,此时如果我们不想重复性地回答他,直接采用强制删除 rm -rf 目录即可。注意:不要强制删除根目录。
七 . *(通配符)
表示的是任意内容,用法为,xxx* 即代表了xxx后加任意名字的文件的所有文件比如:
file*代表着file后+任意为名字的文件的名字 ,*可以和ls rm搭配使用。如果是只写一个*,比如rm -rf * ,即强制删除当前目录下的任意名字的文件和目录 ,ls同上。(touch命令是新建普通文件的指令,语法为touch 文件名)。
八. 热键
8.1 Tab键
其功能如下:
第一个,命令补齐。比如我们在询问身份时往往会这样
但假设我们忘记了询问的命令了(如图所示,只记得是who什么什么)此时我们就可以连按两下tab,他就会显示以who开头的所有命令,如果我此时再输入一个a然后再按一下tab,发现直接显示whoami,这就是命令补齐。
第二个,路径补齐。
假设我们现在想知道上一级目录里除了lesson2还有什么,我们输入完ls ../后按下tab,就会显示112下的所有目录和文件,我们在输入new后再按下tab就会把剩余的目录补齐。(最后的什么也没显示是因为newdir下无目录和文件)
8.2 ctrl+c
在windows中是复制的快捷键,在linux中是强制终止运行,适用于我们输错了指令导致失控的情况下。
九.man指令
man相当于指令手册一样,当我们忘记了一些要用的指令时,可以用man指令查找,比如我想查关于ls 的相关指令,即man ls即可(以下是运行结果)pwd等等也可以。
除此之外,man也可以:man 数字 指令。数字相当于手册的章节,我们不输数字时默认在1号,像c语言的库函数在3号,我们要查函数就需要man 3 函数。当然,如果我们不输数字,他会从1号开始找,1号找不到找2号,直到找到为止。
十. cp指令(拷贝)
语法:cp 要拷贝的文件名/目录 拷贝成新的文件名/目录
拷贝后,文件里的内容也会拷贝,代码也会拷贝。不仅如此,也可以目录之间的拷贝,但需要加选项-r ,即递归式的拷贝。
注意:cp进行拷贝时需用相对路径或绝对路径进行拷贝
这里是把dir3中的test.txt拷贝到了dir4中
如果是拷贝目录的话,即cp -r 目录名1 目录名2,如果目录名2在当前路径存在那么就会在目录2中创建一个目录1的文件夹并把内容拷贝到其中,如果目录2名字不存在,那他就会在当前目录创建一个名为目录2的文件夹并把内容拷贝到其中。
这里我先把dir3的文件删除了,然后分别把dir4拷贝到dir3中,以及把dir4拷贝到当前目录中(di34是新的名字)。
相关文章:
Linux初识——基本指令
我们在linux下输入各种指令,其实就相当于在windows中的相关操作,比如双击,新建文件夹等。 以下是相关基本指令基本用法 一.ls(显示当前目录下的所有文件和目录) 那如何显示当前目录(我们所在的位置&…...
python 实现贪心算法(Greedy Algorithm)
贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前最优的选择,希望通过局部最优解达到全局最优解的算法设计方法。以下是使用Python实现贪心算法解决几个经典问题的示例: 1. 活动选择问题(Activity Selection…...
设计形成从业务特点到设计模式的关联
规范和指引在应用架构、数据架构等各架构方向上形成规范性约束指导。同一个决策要点、架构单元在统一的架构原则指导下,会因业务特点差异有不同的实现,经过总结形成了最佳实践。在开展新应用的设计时,根据决策要点以及相关的业务特点…...
Pytorch初学
创建虚拟环境 python控制台,jupyter notebook,python文件运行的差异,后续结合使用三者。 jupter主要可以对代码进行分割单独运行,主要做一些探索性工作。 数据集的常见存储模式 1、以标签命名图像。 2、单独存储图像的地址。 加载数据集…...
【动态重建】时间高斯分层的长体积视频
标题:Representing Long Volumetric Video with Temporal Gaussian Hierarchy 来源:浙江大学 链接:https://zju3dv.github.io/longvolcap/ 文章目录 摘要一、前言二、主要方法2.1 时间高斯分层2.2 高效渲染2.3 层次结构更新2.4 紧凑的外观模型…...
Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解
文章目录 模式介绍优缺点适用场景结构案例实现注意事项 模式介绍 有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此…...
IOS开发如何从入门进阶到高级
针对iOS开发的学习,不同阶段应采取不同的学习方式,以实现高效提升.本文将iOS开发的学习分为入门、实战、进阶三个阶段,下面分别详细介绍. 一、学习社区 iOS开源中国社区 这个社区专注于iOS开发的开源项目分享与协作,汇集了大量开…...
数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)
将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums ,其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入:nums [-10,-3,0,5,9…...
细说STM32F407单片机以轮询方式读写外部SRAM的方法
目录 一、实例的功能 二、工程配置 1、KEYLED 2、时钟、DEBUG、USART6、NVIC、GPIO、CodeGenerator 3、FSMC (1) 模式设置 (2) Bank 1子区3参数设置 1) NOR/PSRAM control组,子区控制参数 2) NOR/PSRAM timi…...
【Unity3D】AB包加密(AssetBundle加密)
加密前: 加密后,直接无法加载ab,所以无法正常看到ab内容。 using UnityEngine; using UnityEditor; using System.IO; public static class AssetBundleDemoTest {[MenuItem("Tools/打包!")]public static void Build(){//注意:St…...
wujie无界微前端框架初使用
先说一下项目需求:将单独的四套系统的登录操作统一放在一个入口页面进行登录,所有系统都使用的是vue3,(不要问我为啥会这样设计,产品说的客户要求) 1.主系统下载wujie 我全套都是vue3,所以直接…...
联发科MTK6771/MT6771安卓核心板规格参数介绍
MT6771,也被称为Helio P60,是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片,可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造,拥有八个ARM Cortex-A73和Cortex-A53核心,主频分别…...
ZooKeeper Java API操作
(1)添加依赖,在pom.xml文件中添加zookeeper依赖: (2)连接zookeeper服务,创建cn.itcast.zookeeper包,在该包中创建ZooKeeperDemo类,该类用于实现创建会话和操作ZooKeeper&…...
【vue3封装element-plus的反馈组件el-drawer、el-dialog】
vue2中封装el-drawer、el-dialog这类反馈类子组件,需要将父组件的visible值传递子组件,并且再通过$emit将关闭弹窗的组件值传回父组件,同事子组件还需要监听父组件传递过来的visible的值,来驱动弹窗显示隐藏,很麻烦&am…...
doris:远程存储
功能简介 远程存储支持把部分数据放到外部存储(例如对象存储,HDFS)上,节省成本,不牺牲功能。 注意 远程存储的数据只有一个副本,数据可靠性依赖远程存储的数据可靠性,您需要保证远程存储有…...
win11 电脑重启后,需要重新插拔U盘、移动硬盘才能识别问题
win11 电脑重启后,需要重新插拔U盘、移动硬盘才能识别问题 前言 原因:win10在一个版本更新后,usb默认都开了自动停用 一、解决方式一 在设备管理里面找到那些需要插拔才能识别的usb设备,电源策略里关掉“允许计算机关闭这个设…...
望获实时Linux系统与大语言模型深度融合,开创实时智能无限可能!
大语言模型的崛起为智能化应用开辟了新的可能性。借助深度学习技术,这些模型能够理解和生成自然语言,处理复杂的文本和语义信息。这使得它们在诸如人机问答、内容生成和数据分析等领域展现出巨大的潜力。在实时控制领域,大语言模型能够显著提…...
【工业场景】用YOLOv8实现工业安全帽识别
工业安全帽识别是一项重要的工作安全管理措施,旨在防止工作场所发生头部伤害事故。通过使用YOLOv8等深度学习模型,可以实时准确地检测出工人是否佩戴安全帽,及时发现违规行为,为工人提供更安全的工作环境。 使用YOLOv8实现工业安全…...
137. 只出现一次的数字 II
137. 只出现一次的数字 II 题目-中等难度1. 位运算2. 位运算 题目-中等难度 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数…...
Transformer 和 Attention机制入门
1. 什么是 Transformer 背景: 在自然语言处理领域,早期常使用循环神经网络(RNN)及其变体(如 LSTM、GRU)来处理序列数据,如机器翻译、文本生成等任务。然而,RNN 结构存在以下问题&…...
selenium合集
环境搭建步骤 安装selenium pip install selenium 安装浏览器 安装浏览器驱动 谷歌浏览器:chromdriver.exe ie浏览器:ieserverdriver.exe FireFox浏览器:geckodriver.exe 特别注意⚠️:下载驱动版本必须与浏览器版本一致 下载地址 淘宝镜像࿱…...
# Java 发送电子邮件示例
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…...
数据结构-单链表
文章目录 一、单链表的概念及结构1.链表的概念2.链表的节点结构3.单链表增删查改操作的实现 一、单链表的概念及结构 1.链表的概念 🍉🍉概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中…...
软件工程期末整理(二)
快速原型开发模型是(适用于客户需求难以清楚定义、规模较小的系统)。(编写系统实施计划)不是系统设计阶段的主要活动 解释:系统实施计划”更侧重于后续的实施与部署阶段,属于项目管理层面的内容 协作性不属于构件的特性在类图中…...
【Python】基于blind-watermark库添加图片盲水印
blind-watermark 是一个用于在图像中添加和提取盲水印的 Python 库。盲水印是一种嵌入信息(如水印)到图像中的方法,使得水印在视觉上不可见,但在需要时可以通过特定的算法进行提取。以下是如何使用 blind-watermark 库来添加和提取…...
GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程
大家好,今天给大家介绍一下:GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程。 文章目录 一、GPU算力平台概述人工智能智能发展为什么需要GPU算力平台 二、注册与登录账号注册流程 三、平台的应用之Anydoor应用启动器选择Anydoor的应用场景Anydoo…...
Django:构建高效Web应用的强大框架
在当今快速发展的Web开发领域,选择一个合适的框架对于项目的成功至关重要。Django,作为Python编程语言中最受欢迎的Web框架之一,凭借其强大的功能、高度的可扩展性和简洁的语法,成为了众多开发者心中的首选。本文将深入探讨Django…...
前端-计算机网络篇
一.网络分类 1.按照网络的作用范围进行分类 (1)广域网WAN(Wide Area Network) 广域网的作用范围通常为几十到几千公里,因而有时也称为远程网(long haul network)。广域网是互联网的核心部分,其任务是长距离运送主机…...
Mybatis-plus
一、简介 MyBatis-Plus(简称MP)是一个MyBatis的增强工具,它在MyBatis的基础上只做增强而不做改变,目的是简化开发、提高效率。MyBatis-Plus提供了许多便捷的功能,如强大的CRUD操作、支持多种主键策略、内置代码生成器…...
跨年烟花C++代码
嘿,朋友们!今天来给大家讲讲一段挺有意思的C代码呀,这段代码主要是用来实现一个烟花效果展示的程序哦,下面咱们一点点来看哈。 效果 1. 开头包含的那些头文件 #include <graphics.h> #include <conio.h> #include &…...
第82期 | GPTSecurity周报
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…...
关于FPGA中添加FIR IP核(采用了GOWIN EDA)
文章目录 前言一、IP核二、MATLAB文件三、导出系数COE文件1.设计滤波器2.用官方的matlab代码或者直接用文本文件 四、进行模块化设计源文件 前言 FIR滤波器的特点是其输出信号是输入信号的加权和,权值由滤波器的系数决定。每个系数代表了滤波器在特定延迟位置上的“…...
基于机器学习的京东手机商品评论数据可视化分析系统
完整源码项目包获取→点击文章末尾名片!...
jenkins入门13--pipeline
Jenkins-pipeline(1)-基础 为什么要使用pipeline 代码:pipeline 以代码的形式实现,通过被捡入源代码控制, 使团队能够编译,审查和迭代其cd流程 可连续性:jenkins 重启 或者中断后都不会影响pipeline job 停顿&#x…...
Ubuntu24.04.1 LTS+Win11双系统安装记录
Win11相关 1.用DiskGenius删除硬盘分区 2.关闭win11的BitLocker,否则禁用安全启动后开机时需要帐户密钥,很麻烦。 3.在设备管理器中找到独立显卡,右键禁用。等ubuntu装好显卡驱动后,再进入win启用。 Ubuntu相关 1.Ubuntu24.04在…...
【前端开发常用网站汇总-01】
1、仿mac界面代码截图 https://codeimg.io/?utm_sourceappinn.com 2、可视化大屏汇总(在线Demo) https://www.xiongze.net/viewdata/index.html 3、在线Photoshop(实现简单P图) https://ps.gaoding.com/#/ 4、在线生成ico图标(png转icon文件) https://www.bitbug.net/in…...
【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 10.6.1. 生命周期标注语法 生命周期的标注并不会改变引用的生命周期长度。如果某个函数它制定了泛型生命周期参数,那么它就可…...
Three.js教程014:使用tween实现补间动画
补间动画tween 补间动画(Tween Animation)是一种通过平滑过渡的方式,在一段时间内将对象的属性从一个状态变换到另一个状态的动画技术。Three.js 中可以使用 tween.js 来实现补间动画。 【1】导入补间动画库 // 导入tween import * as TWEEN from "three/examples/j…...
Mac软件介绍之录屏软件Filmage Screen
软件介绍 Filmage Screen 是一款专业的视频录制和编辑软件,适用于 Mac 系统 可以选择4k 60fps,可以选择录制电脑屏幕,摄像头录制,可以选择区域录制。同时也支持,简单的视频剪辑。 可以同时录制电脑麦克风声音 标准…...
MySQL使用navicat新增触发器
找到要新增触发器的表,然后点击设计,找到触发器标签。 根据实际需要,填写相关内容,操作完毕,点击保存按钮。 在右侧的预览界面,可以看到新生成的触发器脚本...
深入理解 DOM:构建动态 Web 页面的基石
在 Web 开发的世界里,DOM (Document Object Model) 就像一位无声的英雄,默默地支撑着我们每天浏览的各种动态网页。你可能每天都在和它打交道,却未必真正了解它。那么,DOM 到底是什么?它为什么如此重要?让我…...
如何构建多层决策树
构建一颗多层的决策树时,通过递归选择最佳划分特征(依据 信息增益 或 基尼系数)对数据集进行划分,直到满足停止条件(例如叶节点纯度达到要求或树的深度限制)。以下是基于 信息增益 和 基尼系数 的递推公式和…...
人工智能 前馈神经网络练习题
为了构建一个有两个输入( X 1 X_1 X1、 X 2 X_2 X2)和一个输出的单层感知器,并进行分类,我们需要计算权值 w 1 w_1 w1和 w 2 w_2 w2的更新过程。以下是详细的步骤和计算过程: 初始化参数 初始权值:…...
stable diffusion安装mov2mov
第一步: 下载mov2mov,地址:https://gitcode.com/gh_mirrors/sd/sd-webui-mov2mov 下载包到web-ui的sd-webui-aki-v4.10\extensions文件夹面解压 第二步:在文件夹中调出cmd窗口,执行下列命令, git restore…...
人工智能学习框架概述
1. 引言 随着人工智能(AI)技术的快速发展,各种学习框架应运而生,为研究人员和开发者提供了便利。这些框架不仅简化了复杂的算法实现,还提供了用于构建、训练和评估模型的工具和环境。本文将对目前流行的人工智能学习框…...
(二)WebGL的渲染管线初识
WebGL的渲染管线可以被看作是将一组数据(例如模型、纹理、颜色等)经过一系列处理阶段,最终生成图像并显示在屏幕上的过程。为了帮助你理解这一过程,我将通过一个通俗易懂的移动例子来一步步详细讲解WebGL 的渲染管线及其关键绘制原…...
1. 使用springboot做一个音乐播放器软件项目【前期规划】
背景: 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴,资金又比较紧张,是那么的不友好。作为程序员的我,也是喜欢听着歌,敲着代码。 最近就想做一个音乐播放器的软件,在内网中使…...
在macOS上安装MySQL
macOS的MySQL有多种不同的形式: 1、本机包安装程序,它使用本机macOS安装程序(DMG)引导您完成MySQL的安装。有关详细信息,请参阅第2.4.2节,“使用本机包在macOS上安装MySQL”。您可以将包安装程序与macOS一…...
使用vue项目中,使用webpack模板和直接用vue.config来配置相关插件 区别是什么,具体有哪些提现呢
在 Vue 项目中,使用 Webpack 模板 和 vue.config.js 来配置相关插件的主要区别在于配置的复杂度、灵活性和易用性。以下是两者的详细对比: 1. Webpack 模板 Webpack 模板是 Vue CLI 早期版本(如 Vue CLI 2.x)中提供的项目初始化模…...
ansible-性能优化
一. 简述: 搞过运维自动化工具的人,肯定会发现很多运维伙伴们经常用saltstack和ansible做比较,单从执行效率上来说,ansible确实比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息队列[暂没深入了解]),但其实…...