分类 软件技术 下的文章

使用U盘安装Kali系统

使用U盘安装Kali系统

前言

最近发现Kali系统默认的主题配色很好看,于是就萌生了在物理机上装一个用来学(Zhuang)习(Bi)的想法。就用我那台已经修了N遍,但还依然健在的辣鸡X200。这台辣鸡笔记本,P8700的CPU,3GRAM,千兆网口,还带一个RJ11接口。搭配一块辣鸡固态硬盘,干活非常趁手。

分区方案

虽然大家都不建议在电脑上安装双系统,且现在也已经不流行一台电脑安装多个操作系统了。但由于本人有使用此机器在Windows下工作的需求,所以还是选择安装了双系统。该机器之前是使用的Win7+Ubuntu方案,不要吐槽我Win7停止支持还继续用的问题。接下来将其变成Win7+Kali双系统,只要将Kali装到原来Ubuntu的位置即可,介绍一下分区方案。

硬盘使用的是MBR模式,共划分为5个区,因为MBR模式最多只能4个主分区,我创建了sda1~sda3三个主分区,分别为:sda1格式化为NTFS,容量100G,用于安装Win7;sda2格式化为ext4,大约40G,用于挂载根目录“/”;sda3格式化为swap,大约3G,用于做交换分区。sda4创建为扩展分区,再将其分为两个逻辑分区--sda5和sda6,sda5用于挂载Linux家目录“/home”,sda6格式化为NTFS,用于存储数据,以在两个系统下皆可访问。

安装过程

下载Kali安装镜像:

Kali的镜像可以在它的官网下载页面进行下载。这里我选择的是Kali Linux 64-Bit (Installer)2020.1b

可以尝试使用BT下载方式,或使用多线程下载工具,抑或是尝试使用迅雷下载。直接使用浏览器下载可能非常慢,且不支持断点续传便会很难受。

启动盘写入:

这里我使用的Universal USB Installer。这是个免费的工具软件,它预置了针对很多系统的写入方案。下载后运行工具,在License页面点击I Agree同意许可。在Step1中选择---Security and Penetration Testing---下的Kali Linux,Step2中选择刚才下载的kali安装镜像,Step3中选择要写入的U盘(U盘会被清空,注意备份)。点击Create,工具会提示让你再次确认操作,核实U盘选择正确后点击开始创建。当看到工具提示您结束后关闭工具,启动盘就做好了。

安装:

通过U盘安装系统,自然要让计算机从U盘启动。可以通过修改BIOS设置中启动顺序调整,将U盘调到第一序列。然后保存重启即可。大多数电脑进入BIOS的方法是开机时按DEL、F2、ESC中的某个按键。以上方法装完系统后需要再将设置的启动顺序改回来,否则可能出现插着U盘计算机不开机的情况。本人的X200支持另一种方式,开机时按F12进入启动媒体选择菜单,这个菜单只设置本次启动媒体,不会更改BIOS中的启动顺序。

插好U盘,按电源键开机,狂按F12,进入启动媒体选择菜单,选择U盘的名字。几秒后显示出U盘中Kali安装文件的启动菜单,这说明U盘已经引导成功了,我选择图形化安装模式,即Graphical install。稍作等待后出现图形化的安装向导。

首先是语言,按自己的需求选择语言,我选中文(简体),下一页提示我翻译不完整,有些地方可能用繁中和英文显示,问能不能看懂,否则不建议安装,这不废话嘛,看不懂也得上啊。然后选择地区,我选择了中国,计算机系统的地区不能随意设置,这关乎系统时钟的正常工作。接下来配置键盘映射,看了一下我的键盘布局,经验告诉我,要么接受建议的汉语,要么选英语美式键盘。这个要与自己键盘布局匹配的,否则打字会莫名奇妙出错。搞不好,设置密码都不知道自己设置的啥,那可惨了。

下一步安装程序会探测并挂载光盘,此时有可能会出现没有检测到的提示。如果出现此问题,按照网友提供的经验,可以尝试重新拔插安装U盘,有可能能解决问题。若依然不可用,可尝试按Ctrl+Alt+F2进入Shell,尝试运行fdisk -l命令列出所有磁盘分区,看安装U盘路径(比如我是/dev/sdb1),然后使用命令mount -t auto /dev/sdb1 /cdrom将U盘手动挂载到/cdrom下。然后按Ctrl+Alt+F5回到原来的图形安装界面。另外,在图形化安装界面的分区功能中也可查看U盘的路径。

按照提示设置用户名密码等配置信息,在分区功能中我选择重新格式化3个Linux下的分区,并设置好其原来功能对应的挂载点,应用并退出。

自此,应该就没有什么坑了,按照提示完成安装,等待其开机就可以使(Zhuang)用(Bi)了。

树莓派配置DS3231时钟模块

前言:

最近跟随大佬们撸电子垃圾,撸到了一台网络设备。这个设备有白色铁皮壳子,外面两根天线。打开外壳,内部有一块没有焊接USB口的树莓派 B+,通过一块扩展板连接了一枚RT5372无线网卡,并将一个USB口引出。里面有一枚16G存储卡,不知道里面啥系统,也懒得研究了。直接格式化并写入Raspbian系统。扩展板上还有一套基于DS3231 的RTC电路,测了一下,纽扣电池电量还很足,不利用起来岂不可惜?于是就有了本文。

读懂实践本文,你可能需要在技能树中点亮以下技能:
1:基本的Windows系统操作;
2:至少会使用一种工具连接到树莓派的Shell;(比如SSH工具或TTL线)
3:会为树莓派安装系统并进行初始配置;
4:基本电路知识以确保DS3231正确连接

准备:

1:安装好系统的树莓派;
2:可与树莓派连接的带电池DS3231模块;
3:与树莓派可靠的Shell连接

安装时钟模块:

本人的这台网络设备,它的DS3231时钟模块是连接在I2C1上面的,据了解市面上大多数可直插树莓派的时钟模块也是如此,因为I2C1附近易于获取电源为I2C模块供电。

1,使用gpio readall命令可以获取树莓派各IO口的状态,在此我们看到,SDA.1在40P接插件的3脚,SCL.1在5脚,3V3和GND分别在1、9脚。

 +-----+-----+---------+------+---+---Pi B+--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 0 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi B+--+---+------+---------+-----+-----+

2:确保上面提到的四个插针可靠的与DS3231模块连接即可。

系统配置:

1:使用以下命令安装I2C工具。

sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools

2:打开I2C功能。在Shell中输入sudo raspi-config打开树莓派配置工具,移动光标选择Interfacing Options,Enter键进入;移动光标选择I2C,将其设置为Enable后退出配置工具并使用sudo reboot命令重启树莓派。
3:测试时钟模块是否正常。使用sudo i2cdetect -y 1命令探测I2C通道1上的设备地址。若能检测到地址为0x68的设备,这表明树莓派可以正常与DS3231模块通信。
4:将DS3231添加到Device Tree中。使用sudo nano /boot/config.txt命令打开配置文件,在文件末尾添加以下一行代码,按Ctrl+X,输入Y,保存并退出。

dtoverlay=i2c-rtc,ds3231

5:使用sudo reboot命令重启树莓派,然后再次使用sudo i2cdetect -y 1命令,会发现原来的0x68地址处变成了UU,此信息表示该地址设备使用中。这表明,实时时钟已经正确配置了。
此时,我们可以使用以下命令与RTC通信了:

sudo hwclock -r 显示RTC时间
sudo hwclock -s 通过RTC时间设置系统时间
sudo hwclock -w 把系统时间写入RTC
sudo hwclock --set --date="2020-04-09 14:01:08" 修改RTC时间为任意值
sudo hwclock -h 获取帮助

通过Systemd配置同步:

上文中已经配置了DS3231 RTC模块,接下来我们需要让系统开机时自动从RTC中获取时间。据说以前的Linux系统启动采用init进程,此方案启动时间长,启动脚本复杂。后来有了Systemd,事情就变得简单了。笔者接触Linux较晚,当然要用新技术。本文通过创建两个Systemd配置文件分别实现开机读取RTC时间,关机时保存时间到RTC。
1:使用以下命令打开nano并准备创建/lib/systemd/system/hwclock-sync.service文件。

sudo nano /lib/systemd/system/hwclock-sync.service

2:在出现的nano窗口中输入以下内容:

[Unit]
Description=Sync time from RTC when startup
After=fake-hwclock.service
#After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/hwclock -s
TimeoutSec=0

[Install]
WantedBy=multi-user.target

注:笔者系统中有fake-hwclock,所以配置为在fake-hwclock.service后面启动,若您的系统中没有这个软件包,请删除After=fake-hwclock.service行,并删除下一行的#号注释
3:按Ctrl+X,Y,Enter保存/lib/systemd/system/hwclock-sync.servic文件并退出。
4:使用以下命令打开nano并准备创建/lib/systemd/system/hwclock-save.service文件。

sudo nano /lib/systemd/system/hwclock-save.service

5:在出现的nano窗口中输入以下内容:

[Unit]
Description=Sync HardWare RTC to System Clock when Shutdown
DefaultDependencies=no
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/hwclock -w

[Install]
WantedBy=reboot.target halt.target poweroff.target

6:按Ctrl+X,Y,Enter保存/lib/systemd/system/hwclock-save.service文件并退出。
7:使用以下命令使以上两个配置文件开机启动:

systemctl enable hwclock-sync.servic hwclock-save.service

8:这样,我们就完成了时间同步的配置。

如何验证是否正常工作?或许首先应该排除网络时间同步(systemd-timesyncd.service)的干扰,然后大家自行研究,本文就不在此赘述了。

参考:

1:树莓派下 DS3231 时钟模块的配置(I2C接口)-树莓派实验室
2:Raspbian内建硬件驱动-Cocoonshu
3:树莓派模块:使用DS3231时钟模块
4:树莓派使用实时时钟DS3231-nick_zm
5:Linux systemd启动守护进程,service启动顺序分析及调整service启动顺序-MrWang_tju
6:Systemd 入门教程:命令篇-阮一峰
7:Systemd 入门教程:实战篇-阮一峰
8:计算机系统的时间-osoft
9:systemd关机流程 以及 自定义systemd关机脚本和服务-zhangatong

Win7 安装.Net Framework 4.8失败,提示:已处理证书链,但是在不受信任提供程序信任的根证书中终止。或:无法建立到信任根颁发机构的证书链

Win7 安装.net Framework 4.8失败,提示:已处理证书链,但是在不受信任提供程序信任的根证书中终止。或:无法建立到信任根颁发机构的证书链

前言:

在全新安装的Windows7 SP1中安装某些功能包、更新包时可能会出现证书信任的错误。比如我在安装.NET Framework 4.8时遇到了此问题,安装过程中提示:无法建立到信任根颁发机构的证书链。又比如,我在另一次安装中提示:已处理证书链,但是在不受信任提供程序信任的根证书中终止。经过查询相关资料了解到,这是由于没有更新Windows的某些证书引起的,如果计算机可以正常连接Windows Update,更新可以解决问题。但是因为某些原因,我们所处的网络环境可能无法很好的连接到Windows Update,这种情况我们便需要通过其他方法解决这个问题。
批注 2020-03-05 015300.jpg

Windows 7DotTest-2020-03-05-16-46-13.png

操作过程:

经过查询Microsoft官方支持库中的文档,我们找到了相关解决方案:将新的证书导入到操作系统中“受信任的根证书颁发机构”。

1.下载 Microsoft Certificate Authority 2011 证书,请访问 Microsoft Root Certificate Authority 2011。此链接指向微软官方网站,请放心食用~~

文件下载地址:http://go.microsoft.com/fwlink/?linkid=747875&clcid=0x409

2.按Windows徽标键+R键打开运行对话框,输入:certmgr.msc ,点击确定,打开Microsoft管理控制台中的证书管理单元。

Windows 7DotTest-2020-03-05-17-00-57.png

3.从管理单元界面左侧的导航栏中展开:受信任的根证书颁发机构 。在其下的证书目录上右击,选择:所有任务导入

Windows 7DotTest-2020-03-05-17-13-25.png

4.在弹出的证书导入向导中点击下一步,在接下来的页面中点击浏览...,在弹出的打开对话框中选择刚才下载的证书文件,点击下一步。

Windows 7DotTest-2020-03-05-17-19-57.png

5.在接下来的证书存储页面中,默认的配置应为:将所有的证书放入下列存储,受信任的根证书颁发机构,保持默认,点击下一步即可。在最后的页面中确认配置无误后点击完成即可完成证书的导入。

Windows 7DotTest-2020-03-05-17-23-34.png

6.若弹出安全性警告WIndows不能确认证书是否来...您是想安装此证书吗?的提示,请核对指纹确认安全后点击完成证书的导入。

指纹:8f 43 28 8a d2 72 f3 10 3b 6f b1 42 84 85 ea 30 14 c0 bc fe
Windows 7DotTest-2020-03-05-17-32-51.png

完成证书的导入后即可关闭管理单元界面,重新尝试安装所需的功能包、更新包。如图,我已经安装成功了。

Windows 7DotTest-2020-03-05-17-37-26.png

参考:

1:Windows Vista SP2、Windows Server 2008 SP2、Windows 7 SP1 和 Windows Server 2008 R2 SP1 中适用于 .NET Framework 4.6.1/4.6 的安全更新程序 3136000 和适用于 .NET Framework 4.5.2 的安全更新程序 3135996 的已知问题
https://support.microsoft.com/zh-cn/help/3149737/known-issue-for-security-update-3136000-for-the-net-framework-4-6-1-4

2:直接下载 Microsoft Certificate Authority 2011 证书

http://go.microsoft.com/fwlink/?linkid=747875&clcid=0x409

3:Download .NET Framework

https://dotnet.microsoft.com/download/dotnet-framework

OpenSSL-使用OpenSSL生成CSR文件

OpenSSL-使用OpenSSL生成CSR文件

前言

在申请SSL证书之前,需要先生成CSR文件(CSR,Cerificate Signing Request,证书请求文件)。CSR是公钥证书的原始文件,它包含了服务器信息和单位信息,需要提交给CA认证中心。很多网站可以帮我们生成CSR文件,图形化的操作也非常方便,但毕竟不是我们本地生成,恐有key泄露的风险。为此,我找到了在Linux系统下通过OpenSSL工具生成该文件的方法。

读懂实践本文,你可能需要在技能树中点亮以下技能:

  • Linux系统操作基础

准备

  • 一台运行Linux系统的本地计算机或服务器

利用OpenSSL命令生成ECC CSR文件

我申请的SSL证书是ECC类型的(ECC,椭圆曲线加密),相对RSA类型的SSL证书,ECC类型有更好的性能,但其兼容性较RSA差。这里先介绍ECC类型SSL证书申请所用的CSR文件生成的过程。

  1. 使用以下命令在当前目录生成一个名为“Lexsion_ECC.key”的私钥文件,其加密方式为prime256v1。
openssl ecparam -out Lexsion_ECC.key -name prime256v1 -genkey
  1. 使用以下命令利用上面生成的私钥文件“Lexsion_ECC.key”生成一个CSR文件名为:Lexsion_ECC.csr
openssl req -new -key Lexsion_ECC.key -out Lexsion_ECC.csr

上文中“Lexsion_ECC.key”“Lexsion_ECC.csr”可自定义为需要的文件名。

利用OpenSSL命令生成RSA CSR文件

生成RSA CSR文件只需要一行命令。其中,Lexsion_RSA.csr为CSR文件,Lexsion_RSA.key为私钥文件。rsa:2048为加密强度,可按需求修改。

openssl req -out Lexsion_RSA.csr -new -newkey rsa:2048 -nodes -keyout Lexsion_RSA.key

最终的生成

无论是ECC算法还是RSA算法,生成CSR文件的过程中,都要求我们输入一些信息。我们只需要按照提示输入信息即可完成生成。

部分回显信息翻译:

Country Name (2 letter code) [XX]: #国家 ;两个字母表示,可留空。
State or Province Name (full name) []: #州或省;输入全称,可留空
Locality Name (eg, city) [Default City]: #所在城市;可留空
Organization Name (eg, company) [Default Company Ltd]: #组织名称;比如可填公司名称,可留空
Organizational Unit Name (eg, section) []: #组织部门名称;比如IT,可留空
Common Name (eg, your name or your server's hostname) []: #简称FQHN;填写单域名或泛域名,此处必填。
Email Address []: #邮箱地址;可不填写

A challenge password []: #密码;一般留空
An optional company name []: #可选公司名;可留空

按照提示输入完需要的信息后,key文件&csr文件会于当前所在目录产生。这时我们就可以把产生的CSR文件提交给CA了。私钥(key文件)非常重要,切记保存好,不能泄露。

参考

  1. openssl manpage
  2. 公钥加密算法那些事 | RSA 与 ECC 系统对比

通过YandexMail服务搭建免费域名邮箱

前言:

某些情况下,我们需要使用自己的域名搭建邮箱。使用自建服务器的方式繁琐,稳定性较差。所以通常都是使用专业的公司提供的企业(组织)邮箱服务。考虑自己使用的情况,用户数与邮件数量较低,我们可以利用一些商业公司提供的免费体验型业务来做。在中国大陆,例如网易与腾讯公司均有提供企业邮箱业务,其免费版本用户数较低或有需要提交企业信息的情况。在此,我找到了YandexMail,它是俄罗斯著名的邮箱服务提供商,提供免费的企业邮局服务。其容量大,用户数多,支持绑定域名。可创建1000邮箱用户,每个用户10G的容量。支持 POP3、IMAP、SMTP协议。目前看来,注册时可以不用邮箱,不必须填写电话号码收短信。现在如此良心的企业不多了,不敢独享,遂有此帖。

读懂实践本文,你可能需要在技能树中点亮以下技能:

  • 域名相关基础知识;
  • 基本的Windows系统操作;
  • 会一点儿英语;

准备:

  • 运行Windows电脑一台(其他系统也可,但具体某些操作可能不同)
  • 域名一枚

注册账号:

1:使用浏览器打开注册地址:https://passport.yandex.com/registration

2:注册页如下图所示。
A1-b1.jpg

  • First name处填写名字,Surname处填写姓氏,Enter a login处填写登陆账号,Enter a password 和Confirm password处分别填写两次填入同样内容以设置密码,Mobile phone number处填写自己电话号码接收短信。输入手机号码后,点击Send code发送短信验证码,在Enter the code from the SMS处填入接收到的验证码点击Confirm完成验证并点击Register即可完成注册。默认需要填写电话号码接收短信验证,也可以点击“I don't have a telephone number”使用图片验证码的方式通过。

    A1.jpg

  • 图片验证方式需设置密保问题,以保证在忘记密码时可通过密保问题找回密码。点击“I don't have a telephone number”即进入图片验证方式。Choose a security question处选择一个安全问题,在下面的Answer to the security question处填入答案。最后,在Enter the characters处填入图片中的验证码,并点击Register完成注册。若验证码无法辨识,可点击Show a different code更换验证码。

添加域名:

1:使用浏览器打开添加域名网址:https://connect.yandex.ru/pdd/

2:打开网址后会发现有些俄文,但这个并不会对我们造成太大困扰。检查浏览器页面右上角是否有显示登录名,若无登陆名,则点击右上角的登陆图标登陆。登陆后在页面中间的文本框中输入自己的域名,然后点击文本框后的按钮开始添加域名。
InkedA2_LI.jpg

3:新出现的YandexConnect页面中会提醒我们需要验证域名的所有权。如图所示:
InkedB1_LI.jpg

  • 它提供了四种方法,从左到右依次为:HTML文件验证,Meta tag验证,WHOIS验证,DNS记录验证。这里因为我域名使用了Cloudflare做域名解析,有对域名的控制权,所以直接使用最简单的DNS记录验证。

4:根据图示要求,我将在Cloudflare中操作添加一个TXT记录。

登陆Cloudflare,选择要操作的域名,点击DNS按钮进入DNS配置页面,点击“Add record”按钮准备添加新纪录。
C1.jpg

  • Type处选择TXT,Name处输入@,Content处输入Yandex提供的文本内容,最后点击Save完成添加。

5:类似,我们需要再添加一个MX记录,这样邮件服务才能正常运作。Type处填写MX,Name处填写@,Mail server处填写mx.yandex.net,Priority处填写10,最后点击Save保存。
C2.jpg

全部填写好后先等待几分钟(这样成功率高一些),回到验证页面点击Start verification开始验证。下图既为验证通过已经可以使用了:

B3.jpg

出现下图则表示验证通过了,但是MX记录还没生效,可以检查一下MX记录有没有填写错误,若无错误建议等待次日再来检查。

B2.jpg

6:假如我们的域名为XXX.COM,我们可能需要通过访问mail.XXX.COM进入邮箱Web页。我们可以通过添加一个CNAME记录来实现这个需求。Cloudflare中添加一条记录,Type选择CNAME,Name处填写mail,Target处填写domain.mail.yandex.net,最后点击Save保存即可。通过这个mail.XXX.COM登陆是有好处的,相对于通过mail.yandex.com登陆,通过前者登陆时用户名不需要填写@及其右边的域名,直接使用其登陆名就可以登陆。

7:在YandexConnect页面中点击“DNS management” ,参考页面中给出的DNS记录,将原有用于验证的TXT记录删除,并添加相关两个TXT记录。

添加账号:

  • 1:打开账号管理页面:https://connect.yandex.com/portal/admin,如出现登陆页面,则登陆账号。
  • 2:点击“Все сотрудники”(意为:所有员工),打开所有员工页面。点击“Add”,在出现的二级菜单中的条目,“Add a person”表示添加一个员工,“Пригласить сотрудников”意为邀请员工,“Create a department”意为创建一个部门。这里我们点击“Add a Person”即可打开添加新员工页面。
  • 3:页面中,Last name表示姓氏,Name表示名字,Middle name意为中间名,Job title意为职称,Language处为语言选择,Time zone处选择时区,Birth date意为生日,Gender意为性别,Login处填写为其分配的邮箱地址(只填写@左边部分),Password与One more time处输入两次密码。信息填写后,点击黄色的“Add”即完成一个账号的添加,这里我们可以依次添加需要的账号。
  • 4:添加账号后,点击账号,右侧对应显示其名片页,点击头像处可修改头像。点击右上角三点弹出对应账号操作项目,Edit表示编辑,Manage aliases表示管理别名,Change Password为修改密码,Block user 为封锁用户,Grant admin rights为设置管理员权限,Delete为删除账号。

登陆账号:

  • 1:我们可以在此页面登陆Web版本的邮箱:https://mail.yandex.com,需要注意的是,在这里我们需要使用完整邮箱地址登陆。

  • 2:在Enter your login, email or phone框中输入完整邮箱地址,点击“Log in”,按提示输入密码即可登陆Web版邮箱。

  • 3:或可参考添加域名6小节内容,实现自有域名登陆页面,可免输邮箱地址的域名部分。

  • 4:Yandex支持IMAP协议,我们可以使用支持IMAP协议的邮件应用收发邮件。

    IMAP服务器:imap.yandex.com

    SMTP服务器:smtp.yandex.com

    使用完整邮箱地址作为用户名,与网页端相同的登陆密码登陆。

参考:

vim非完全学习手册

前言

vim是vi的增强版本,是Linux系统下的一款常用文本编辑器。我们在Linux系统下配置软件、编写代码,都离不开文本编辑器。由此看来,学会vim的使用是很重要的。本文将讨论vim的一些常用操作,亦可以作为非完全手册。因本人技术有限,如有错漏,欢迎纠正于补充。

vim的最基本操作

我们可以使用以下操作流程通过vim在当前目录创建一个文件test.txt,并保存退出。学会了这些,在进入vim编辑器后,不会退出而去直接关闭终端或强行关电源的尴尬境地就可以避免了。

  1. 创建文件:
     touch test.txt
  2. 使用vim打开:
     vim test.txt
  3. i 键进入插入模式,正常通过键盘输入自己需要输入的文本。
  4. 完成文本输入后,按 Esc 键退出插入模式。
  5. : 键进入扩展命令模式,输入 wq 保存并退出。
  • 以上是vim编辑器的最基本操作,我们亦可以不使用 touch 命令创建文件,直接运行 vim test.txt vim会提示新文件,最后我们在扩展命令模式下使用 wp 命令时vim会自动创建文件并保存。如此,vim 后既可以接相对路径,亦可以接绝对路径。
  • 另外,vim的扩展命令模式下,命令 w 和命令 q 均可以单独使用,命令 w 用于保存文档,命令 q 则用于退出。退出时若文件有修改但没有保存,操作会失败,此时可以使用 q! 命令强行退出。
  • 学会了以上内容,相当于学会了在Windows系统下打开MS Word,打了几个字,然后保存并退出一样。这肯定不能算是学会了vim,甚至连入门都不算。我们需要对其有一个系统化的学习。

vim的编辑器工作模式

vim常用情况下有四个模式,分别是:

  1. 打开时的命令模式(Command Mode);
    此模式用于一般的命令操作,比如快速的移动光标。
  2. i 键进入的插入模式( INSERT Mode);
    此模式用于文本编辑。
  3. : 键进入的扩展命令模式(Extended Command Mode)。
    此模式包含一些扩展的命令输入,比如保存和退出。
  4. v 键进入可视模式(VISUAL Mode)。
    此模式包含可视内容选择操作。

vim打开时会处于命令模式,通过按键方式进入其他模式。在插入模式时,我们可以看到终端左下角显示 -- INSERT -- 字样;在扩展命令模式,我们可以在左下角看到显示“ : ” ;在可视模式,左下角显示 -- VISUAL -- 字样。如需退回到命令模式,按Esc键即可。

1.vim命令模式下的常用操作

以下操作均在命令模式中进行,在操作前请注意检查左下角不要有-- INSERT ---- VISUAL --: 字样。如不在或不确定是否处于命令模式,请按Esc键进入。

光标的移动:

  1. 可以使用键盘上的方向键移动光标,但考虑更高效的使用,可尝试学习vim的命令键:h(左)j(下)k(上)l(右)。
  2. 可以通过按键 0 快速调至当前行首;使用按键 $ 快速调制行末。(注意:$需使用Shift+4实现)
  3. 可以通过使用 gg 按键快速跳至首行;使用 G 按键快速调至末行。(注意前者时按两次g,后者通过Shift+G实现)
  4. 可以使用 7 G 按键快速跳至第七行;即通过按出 行号后再加大写字母 G ,即可快速跳转至那一行。
  5. 可以使用 /string 命令从内容中查找关键词;string表示字符串,即输入关键字进行查找;我们可以使用(n/N)在查询到的多个结果中上下移动箭头。我们可以使用 /^string 这种,关键字前加 ^ 符号,指定搜索以此关键字开始的行; 使用/string$ 这种,关键字后加$符号,指定搜索以此关键字结尾的行。

    文本编辑:

  6. 复制操作:按y键复制当前选定内容;使用 yy 命令复制当前行;使用 5yy 复制光标及以后共5行(yy前输入的数字决定行数);使用 ygg 复制从第一行至光标一行内容;使用 yG 复制从光标行至末行内容。
  7. 剪切操作:按D(需Shift+D)剪切光标处至当前行尾的内容。与以上复制操作类似,剪切操作中使用 dd 剪切光标所在行内容;使用 5dd 剪切光标及以后共5行;使用 dgg 剪切从第一行至光标一行内容;使用 dG 剪切从光标行至末行内容。以上命令可用于删除。
  8. 粘贴操作:使用 p 键将复制的内容粘贴(paste)到光标处。
  9. 撤销与重做:使用 u 撤销(undo)之前的操作,使用 Ctrl+r 组合键重做(redo)撤销的操作。
  10. 按x键删除光标所在字符,使用 r 修改光标处一个字符。

    进入其他模式:

  11. 进入插入模式:使用 i 键进入插入模式;使用 I 键进入插入模式并使光标移动到行首;使用 a 进入插入模式使光标自动后退一位,退出模式时会前进一位。使用 A 进入插入模式使光标自动跳到当前行尾;使用 o 进入插入模式会自动于光标所在行后面创建新行;使用 O 进入插入模式会自动于光标所在行前面创建新行。
  12. 进入扩展命令模式:使用 :(Shift+;键)进入扩展命令模式,此模式亦有人称其为末行模式(可能于命令于末行输入有关)。
  13. 进入可视化模式:使用 v 进入可视模式;使用Ctrl+V进入可视块模式;使用 V(Shift+V键) 进入可视行模式。可视模式用于可视化的内容区域选定,以进入模式时光标位置为起始,方向键移动光标选定结束位置。选定后按 y 键复制内容,按 p 键可粘贴内容。
  14. 进入替换模式:按 RShift+R键)进入替换模式,与 r 不同,替换模式是一个单独的模式,可以连续替换内容。区别于插入模式,该模式是对光标所在位替换,而不是插入。

    退出:

  • 命令模式下,按住Shift键按两次 z 键,即输入 ZZ 即保存并退出。此方法不建议使用,建议使用扩展命令模式下的退出命令。

2.vim插入模式下的自动代码补全

在使用vim的插入模式编辑文本时,如果文中有单词多次出现,可在输入部分内容情况下按Ctrl+P进入自动代码补全。

3.可视模式区块编辑

  1. 块前部插入:在命令模式下光标移动到块起点处,按Ctrl+V键进入可视块模式,移动光标至结束位置以选定块。按Shift+I组合键输入I进入插入模式,输入需要插入的内容,按Esc键退出模式后稍作等待即可完成块前插入。此功能常用作多行添加#号注释。
  2. 块替换:在命令模式下光标移动到块起点处,按Ctrl+V键进入可视块模式,移动光标至结束位置以选定块。按r键进入块替换功能,输入要替换城的字符即可完成替换。
  3. 块删除:在命令模式下光标移动到块起点处,按Ctrl+V键进入可视块模式,移动光标至结束位置以选定块。按x键删除选定的块,此操作亦可以使用d剪切完成。
  4. 块复制:在命令模式下光标移动到块起点处,按Ctrl+V键进入可视块模式,移动光标至结束位置以选定块。按y键复制块,在需要粘贴处按p粘贴块,具体粘贴效果请自行尝试。块剪切请参考上一条。

4.扩展命令模式常用操作

在命令模式下按:(Shift+;)键进入扩展命令模式。

快速跳至指定行:

  • 在扩展命令模式输入行号按回车键可跳转至指定行。

    保存与退出:

  1. 在扩展命令模式下,输入w回车可保存文件。
  2. 在扩展命令模式下,输入q回车可退出,但文件有未保存更改时会失败。
  3. 在扩展命令模式下,输入wq回车可保存并退出。
  4. 在扩展命令模式下,输入w!回车可强行保存。
  5. 在扩展命令模式下,输出q!回车可强行退出,不保存退出。
  6. 在扩展命令模式下,输入wq!回车可强行保存并退出。
  7. 在扩展命令模式下,输入x回车可保存并退出,此处x为小写,大写X为添加密码,慎用!

    查找并替换:

  • 语法,此命令使用时需注意操作的内容中不得出现命令中使用的分隔符。
      :范围 s/查找的内容/替换内容/选项
      :范围 s#查找的内容#替换内容#选项
      :范围 s@查找的内容@替换内容@选项
  1. 范围描述:
    使用 1,4 格式可设定范围为行1~行4;使用 5,$ 可设定范围为行5~最后一行;使用 % 可设定范围为全文;使用 ,7 可设定范围为当前光标所在行~行7。

  2. 选项:
    默认情况下,不使用选项时每行只会替换查找到的第一个结果。我们可以使用g选项设置全局替换。

  3. 示例:

     # 将第21行至第30行的第一个root替换为lexsion
     :21,30 s/root/lexsion/
    
     # 将第31行至最后一行的所有root替换为lexison
     :31,$ s/root/lexsion/g
    
     # 将全文中每一行的所有lexsion替换为root
     :% s/lexsion/root/g
    
     # 将全文中每一行的所有/dev/sda替换为dev/sdb,因操作内容中有/,所以将分隔符换成#。
     :% s#/dev/sda#/dev/sdb#g
    
     # 将第4到第6行每行前面添加#号,一般用于注释。此例中使用了正则表达式。
     :4,6 s/.*/#&/
    
     # 将第4到第6行每行前面的#号删除,一般用于取消注释。此例中使用了正则表达式。
     :4,6 s/^#//
  4. 取消高亮显示:
    我们在执行查找替换类操作后会留下相关内容的高亮,退出重新进入亦不会取消,我们可以尝试查询一段不存在于文件中的内容取消高亮,或于扩展命令模式下使用以下命令取消高亮。

     :noh

    文件读写:

  5. 扩展命令模式下,输入w回车即可保存文件。如果我们需要将文件另存为,比如另存到/root/file2.txt,可使用以下命令完成,即在w命令后空格加上另存为的目录及文件名。

     :w /root/file2.txt
  6. 若我们需要将文件中的部分行(比如4~8)另存为(比如/root/file3.txt),可以在以上命令前添加范围,命令如下:

     :4,8 w /root/file3.txt
  7. 读入文件至当前光标所在行后。例如,将/root/file3.txt读入,命令如下:

     r /root/file3.txt
  8. 如果我们需要将文件读入到指定行之后,除了将光标移动到指定行处,我们可以使用在以上命令前添加行号的方式指定行。比如我们将其读入到第四行之后:

     4 r /root/file3.txt

    环境配置:

  9. 常用临时环境配置命令:

     # 设置行号
     set nu
    
     # 显示控制字符
     set list
    
     # 不区分大小写
     set ic
    
     # 自动缩进
     set ai
    
     # 设置的项目前加no可以表示取消该设置,例如取消行号:
     set nonu
    • 注意,以上命令是在vim的扩展命令模式使用。
  10. 设置永久配置。以上方式设置的配置会在退出vim时还原,如需永久配置,需要创建配置文件并将以上命令写入其中。创建/etc/vimrc可设置全局配置,对所有用户有效。创建~/.vimrc可设置用户配置,对当前用户有效。相信经过上文的学习你是能够完成这个配置的。

双文件编辑

  • vim可以同时打开两个文件,一般用于我们需要对照这一个文件编辑另一个文件的场景,使用以下命令打开目录/root/下的file1和file2:

      # 注意,以下命令中-O为大写,此命令打开后界面呈现纵向分割:
      vim -O /root/file1 /root/file2
    
      # 注意,以下命令中-o为小写,此命令打开后界面呈现横向分割:
      vim -o /root/file1 /root/file2
    
      # 以下命令打开后会对比两个文件,不同处会有高亮:
      vimdiff /root/file1 /root/file2
  • 如需在打开的两个文件界面中切换光标,需要按Ctrl+ww切换。(按住Ctrl键,再按两次w键)
    如需退出两个文件,可在扩展命令模式下运行以下命令退出:

      qall

以上是一些vim的常用操作,想要熟练使用vim,需要日常多加练习,让操作成为习惯。

参考:

Vim help files
https://vimhelp.org/

Vim 中文文档计划-GitHub
https://github.com/yianwillis/vimcdoc

vi编辑器教学视频1-千锋教育-BiliBili
https://www.bilibili.com/video/av13186650/?p=3

vi编辑器教学视频2-千锋教育-BiliBili
https://www.bilibili.com/video/av13186650/?p=4