工具的本质也是指令

文章目录
学习目标📝:
学习yum工具,进行软件安装,掌握vim编辑器使用,学会vim的简单配置 ,解决sudo配置问题
安装软件,需要先把软件包下载下来(联网)。软件包并不在你的本地(你的电脑),软件包只能在别人的电脑上(远程服务器上,云服务器)。
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器
下载之后,一定要进行安装,安装的本质其实就是拷贝,拷贝一定会拷贝的特定目录的,目录是有权限的。
如何安装软件
通过 yum, 我们可以通过很简单的一条命令完成简单安装. (关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!! 对于云服务器来说,没网络登录都登录不了,就不需要考虑了)
yum install sl

yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.出现 “complete” 字样, 说明安装完成
yum install -y sl//在指令加上-y表示无需询问,直接安装
我们直接来演示一下效果:
sl

我们需要根据自己的需求一些功能,查找对应的软件
如何卸载软件
yum rmove sl

查看软件包
通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:
yum list | grep sl

除此之外,还有一个搜索的命令:(搜索结果出来不太友好)
yum search sl

这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 ,安装完毕之后可以通过拖拽的方式将文件上传过去
先验证是否联网:
ping www.baidu.com
查看软件包:
yum list | grep lrzsz

进行下载:
yum install -y lrzsz.x86_64
上传文件:rz


把文件下载Windows下:sz


当然,也可以直接进行拖拽。
ls /etc/yum.repos.d/
这个路径下配置的就是yum源的配置文件

云服务器就不需要自己yum源配置了。
wget https://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_tmp
下载好的阿里yum源重命名为CentOS-Base.repo
镜像源如果是国内的了,那就不用管了。
有些软件,没有被纳入centos,Ubuntu,kail等相关生态平台的官方集合中,在非官方的软件集合列表,yum源一般称为epel
yum install -y epel-release
如果在安装软件的时候,没有在CentOS-Base.repo(官方)中找到官方的下载链接,那么yum会自动去epel-release指向的链接处去查找,相当于epel-release(非官方)给yum提供了更多的下载渠道.
vim编辑器功能强大,是具有多模式的编辑器。vim的三种模式(其实有好多模式,我们先了解这3种即可),分别是命令行模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下
对于这些模式的关系之间的理解,我们用一张图便能清楚的理解了:

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面: (这里值得说的是,进入之后是处于[命令模式],你要切换到[插入模式]才能够输入文字 )
[正常模式]切换至[插入模式]
输入a
输入i
输入o
[插入模式]切换至[正常模式]
目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
[正常模式]切换至[末行模式]
「shift + ;」, 其实就是输入「:」
其实也就是上面的那张关系图啦
利用vim创建hello world程序




命令行的意义在于👇
各种命令,能够提高我们的编辑效率
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格(这里自己可以试一试)
下面我们用动图对一些命令做出演示:
shift+4($):行右

shift+6(^):行左

shift+g:底部

gg:顶部

好了,其他具体的动图演示这里就不在展开了😥。
n+shift+g跳转到指定行,n代表的是行号
对于h:左 j:下(假想为jump) k:上(假想为king) l:右
光标所在行:
yy:复制(nyy)支持对光标所在行,进行多行复制
p:粘贴(n p)支持多行粘贴
dd:删除光标所在行(ndd)支持多行删除
dd+p:剪切操作
u:撤销
ctrl+r:取消u操作
文本行的大小写切换 shif+~
shift+r替换模式:批量化替换
r:替换光标所在的一个字符(支持nr)
x:向后删,shift+x:向前删(行内删除,支持n+x进行删除)
w:向后按单词移动
b:先前按单词移动
从命令到插入:
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
在使用末行模式之前,请记住先按「ESC」键确定您已经处命令行模式,再按「:」冒号即可进入末行模式
set nu/nonu调出和取消行号(一张动图解决这两个指令)

无论分多少屏,光标都只有一个。光标的意义在于选中的行或者屏幕。
比如:vs copy.c

光标跨屏:ctrl+ww(动图演示,注意后面光标的闪动)

保持退出后,我们仍然可以看到copy.c:

在底行模式中,不需要退出vim,只需要加上!强制执行即可执行shell指令



我们只需要:%s/需要替换/替换后的/g
执行前:

执行后(我们以动图来演示):

没有配置的vim用起来其实和记事本并没有多大的区别,都不能自动补齐缩进,所以问题来了我们需要对vim进行配置。
我们需要了解配置vim的原理:
vim的配置是一人一份的,一个用户配置的是自己的并不影响别人。每个人虽然用的是同一个vim程序,但是大家用的是vim不同的配置(每个用户在自己的家目录下都有属于自己的配置文件)
我们需要创建.vimrc文件,并在自己的.vimrc文件中添加一系列的命令,充当于vim的配置文件。所谓的vim的基本配置,就是修改自己的vimrc!
但是接下来的问题是配置vim比较麻烦,配置的东西比较多,我们并不知道需要配置哪些,所以我们直接在家目录下执行一键配置的命令即可:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

至此,配置完成。
默认缩进是两个空格,想改变的话可以打开.vimrc对其进行修改

这样子就完成了对vim的基本配置了。

第一、切换成root用户。输入命令
ls /etc/sudoers

一定存在这个文件
第二、通过vim打开已近存在的sudoers
vim /etc/sudoers

添加自己的用户名到这个地方

然后就是退出环节,如果直接wq会报错,所以我们直接强制w!回车,q!回车进行配置。至此,将自己的用户名添加到了可以提权sudo的名单里。

至此,我们总算把sudo问题解决了。
如上,就是关于vim的所有内容
关于vim我们总算说完了,不过对于vim这只是一个开始,我们还需要花大量的时间和精力去学习熟悉
同时,通过此篇,我们了解Linux下的软件包管理器yum以及编译器的vim的使用,虽说我们有VS等编译器,但是属于集成开发环境,我们也应该去学习vim的知识以及基本使用和配置,同时,对于一些指令我也用了动图去做具体的展示,能够更加清晰明了。
最后,我们还解决了我们一开始就提到的sudo提权问题,虽然一开始就接触到了,但是那个时候并没有解决,是因为我们对于vim并没有那么熟悉,通过配置我们完成了普通用户能够sudo提权的配置问题,所以,我们从现在开始,由于root的权限过大,我们也应该摒弃root用户的使用,开始我们自己创建的普通用户之旅。
至此,关于yum和vim的基本使用我们就到这里结束了。
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
我在一个静态网站上工作(因此没有真正的服务器支持),我想在另一个网站中包含一个小的细长片段,可能会向它传递一个变量。这可能吗?在rails中很容易,虽然是render方法,但我不知道如何在slim上做(显然load方法不适用于slim)。 最佳答案 Slim包含Include插件,允许在编译时直接在模板文件中包含其他文件:require'slim/include'includepartial_name文档可在此处获得:https://github.com/slim-template/slim/blob/master/doc/incl
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生
这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什
我正在为个人笔记创建一个日志应用程序,并且在我的Rakefile中包含以下内容:task:newdoentry_name="Entries/#{Time.now.to_s.gsub(/[-\:]+/,'.').gsub(/.0500+/,'')}.md"`touch#{entry_name}``echo"#$(date)">>#{entry_name}`end我想包括的最后一部分是Vim文本编辑器的打开,但我不知道如何打开它,就像我直接从bash终端调用它一样。我试过:vim#{entry_name}但不幸的是,我认为它们都将其作为后台进程打开。我一直在引用“6WaystoRunShe