ZZY’s WSL guide

为什么我要做这个东西和为什么我推荐大家用 WSL

为什么我要做这个东西

这学期计算机下智科和物联进入了两门大课:

计算机组成和计算机操作系统

这两门课程需要直面系统底层,接触计算机的真实面貌,让你体会到什么是真正的编程。但是Windows的底层已经封装的相当好了,大部分时候我们在Windows下编程的时候已经无法触碰到底层的东西,更别说所谓名校上完操作系统课后的大作业:自己写一个操作系统出来。所以我们需要Linux来帮助我们来完成这个任务。

为什么我推荐WSL

WSL全称Windows Subsystem for Linux(win下的linux子系统)

(所以用 Mac 的同学,你们就没有必要继续读下去了,因为 Macos 就是基于BSD Linux.)

(并且此教程仅有win10能够使用)

WSL有几大特点:

  • 1.开箱即用:在Windows应用商店中下载后无需多余配置即可使用,免去了配置的麻烦。
  • 2.微软系工具适配极好:很多人被Linux劝退是因为没有图形界面和优秀的图像文件管理,还得去学习vim的使用,但是WSL和Vistal Studio Code(下文简称vsc)因为微软做了大量的适配去配合wsl的使用,所以体验极佳,文本文件的编辑也十分好用。
  • 3.硬件效率高:wsl的软件基础是基于Windows的Hyper-V虚拟机,原生与系统之中,与cpu的沟通效率相较于VirtualBox和Vmware的效率是最高的。我们现在的编程主要还是在利用cpu

所以wsl是个很好的选择来编写系统相关的东西又不会把宿主机搞得看必须得重做系统(我的阿里云server还在的时候折腾的基本每天重装一次系统)

两大原则

你需要独立安装 请你认真阅读guide中的每一个字符, 并按照guide中的内容进行操作: 当guide提到要在互联网上搜索某个内容时, 你就去互联网上搜索这个内容. 如果遇到了错误, 请认真反复阅读讲义内容, 机器永远是对的‾\underline{机器永远是对的}机器永远是对的​。

同时请铭记STFW(SearchTheF∗∗∗ingWeb‾\underline{Search The F***ing Web}SearchTheF∗∗∗ingWeb​)

但现在是互联网时代了, 在网上你能得到各种信息: 比如diff格式这种标准信息, 网上是100%能搜到的; 就包括你遇到的问题, 很大概率也是别人在网上求助过的. 如果对于一个你本来只需要在搜索引擎上输入几个关键字就能找到解决方案的问题, 你都没有付出如此微小的努力, 而是首先想着找人来帮你解决, 占用别人宝贵的时间, 你将是这个时代的"失败者".

于是有了STFW (Search The F***ing Web) 的说法, 它的意思是, 在向别人求助之前自己先尝试通过正确的方式使用搜索引擎独立寻找解决方案.

正确的STFW方式能够增加找到解决方案的概率, 包括

  • 使用Google搜索引擎搜索一般性问题
  • 使用英文维基百科查阅概念
  • 使用stack overflow问答网站搜索程序设计相关问题

如果你没有使用上述方式来STFW, 请不要抱怨找不到解决方案而开始向别人求助, 你应该想, “噢我刚才用的是百度, 接下来我应该试试Google”. 关于使用Google, 不过多描述,不然我害怕等会我人没了,哈人的很。

关于准备

步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”这项windows功能,才能够在Windows上安装WSL。
用win键(就是开始菜单)呼出搜索栏输入 Powershell 并用管理员模式打开。

输入

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

输入完成后不要慌着退出,再输入如下内容

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后去如下网址下载WSL2补充内核更新包

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

速度可能较慢,请耐心等一下,安装完成后重启

步骤 2 - 下载WSL包

在重启完成之后在powershell中输入

wsl --set-default-version 2

并打开Microsoft Store(点击此链接会唤起Microsoft store,其中是Ubuntu 的 20.04 发行版)

https://www.microsoft.com/store/apps/9n6svws3rx71

下载完成后不要关闭,会出现如下界面

请输入你的用户名和密码

密码在输入时不可见,为正常现象,Linux全系都是如此设计

如果仍有关于安装的疑惑,请向我发送电子邮件 hafuhafu@qq.com 我会在尽快的时间内回复。

如何利用vsc与wsl连接

首先下载vsc

https://vscode.cdn.azure.cn/sha/download?build=stable&os=win32-x64-user
安装完成后,点击左侧
搜索并安装这些插件

  • chinese
  • Remote - WSL
  • python
  • C/C++ Extension Pack
  • Code Runner
  • Bracket Pair Colorizer 2
  • Better C++ Syntax

vsc与wsl的链接

重启vsc,可以看到右侧多了个图标

点进去即可进入WSL的终端界面了

简单的Linux使用

简单的包管理和安装及其换源

Linux的软件管理并不是像Windows一样极其混乱和无序,是通过包管理工具来管理的,所以我们首先掌握Linux的包管理方法

更改包管理工具的下载源

因为默认的apt包管理工具在默认下是用的国外的源站,慢的不行,所以我们现在来切换为TsingHuaU的源站。

在下方终端中输入

codecode /etc/apt/sources.list

此时vsc会弹出/etc/apt/sources.list的编辑页面,把内容全部删掉,输入如下内容

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security multiverse

保存后更改完成。
输入sudo apt update来刷新软件源信息。
输入sudo apt upgrade来升级软件版本

定义su密码*root密码 //superuser

输入su来更改root用户密码,root用户是Linux权限中最高的,也不要用这个用户为常规用户,会导致一些意料之外的错误,定义密码后请用su 用户名切换回原来用户。

安装C/C++系工具

Linux下最快的开发效率并不是使用Visual Studio等IDE,而是利用CMake等工具来构建一个大的文件,所以我们需要安装C/C++的编译器,同时我们也最好开始学习使用git等版本控制工具(git在这不过多描述)
输入sudo apt install CMake g++ gcc make git wget

PS:如果你对javaLinux开发或非标准C/C++库有兴趣,可以用可以利用这种方法安装jdk和c/c++库

安装完成后就可以开始我们的第一个C++程序了

点击左侧新建文件,输入test.cpp

#include<iostream>
using namespace std;
int main(){cout<<"hello WSL\n";
}

利用 g++来编译 如何编译呢

g++ 这个编译器的编译公式为g++ source.cpp -X(X不定,如果想了解更多请上网查询) 想要生成的文件的文件名

如果是我要生成可执行文件呢

输入 g++ test.cpp -o test

可以观察到在当前目录下生成了一个无后缀的二进制文件,如何来运行它呢

输入 ./test来运行

可以观察到输出了一行 hello WSL 这就代表着基本配置完毕

简单的命令

ls //列出当前文件夹中文件
mkdir dirname //生成一个文件夹名字为dirname
cd path //进入path这条路径下的文件夹
wget website //下载website这个网址所指代的文件
sudo //super user do **慎用,除非你知道自己在干什么,同时在安装包时也必须在前面加上sudo

简单的键盘命令

CTRL + C //强制关闭当前任务
shift + CTRL + C //复制终端中的内容
TAB //自动补全命令

如想了解更多知识,请上网查询

ZZY’s guide 系列不定期更新

ZZY‘s_wsl_guide相关推荐

  1. CSU1323: ZZY and his little friends

    Description zzy养了一只小怪兽和N只凹凸曼,单挑的话每只凹凸曼都不是小怪兽的对手,所以必须由两只凹凸曼合作来和小怪兽战斗.凹凸曼A和凹凸曼B合作的战斗力为他们战斗力的异或值.现在由zzy ...

  2. 中南月赛 1313: ZZY的宠物

    1313: ZZY的宠物 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 114  Solved: 59 [Submit][Status][Web Bo ...

  3. T48566 【zzy】yyy点餐

    T48566 [zzy]yyy点餐 题目描述 yyy去麦肯士吃垃圾食品. 麦肯士有n种单点餐品(汉堡薯条鸡翅之类的).每次选择一种或者以上的餐点,且每种餐点不多于一个的话,可以认为是购买套餐.购买一个 ...

  4. 牛客每日练习----wyh的数列,组合数问题,zzy的小号

    我喜欢给自己压力,必须得定一个很高的目标,逼自己朝着这个目标前进,不管会不会实现,都是一个动力.                                      ----喻言 链接:http ...

  5. 郑州大学新OJ——p1036 zzy的游戏

    @TO郑州大学新OJ--p1036 zzy的游戏 题目 描述 zzy正在直播玩一个很冷门的游戏.游戏的规则稍微有些复杂.开场时,双方从n名角色中轮流选取角色,然后双方各自选择两名角色出战.任意两名角色 ...

  6. T48568 【zzy】yyy送礼物

    数论题... 来源:luogu秋令营的模拟赛1T2 这道题数据极大,\(N,T \leq 10000000\). 求的是\(\sum_{i=1}^{n}{n \mod i}\). 看上去就是余数求和. ...

  7. ZZY.QR 简单二维码生成编辑器

    自己闲来做了一个QR二维码生成工具,最重要的是,生成后可以简单的编辑绘制,做出比较个性的二维码图片 按照生成类别做了分类,包括文本.短信.网址.名片.邮件.WIFI.电话 加入了解译功能,可以简单的对 ...

  8. Linux 用户行为日志记录

    工作中我们常常遇到,有的员工不安于被分配的权限,老是想sudo echo "ziji" /usr/bin/visudo NOPASSWD:ALL来进行提权,造成误删了数据库某条重要 ...

  9. HDFS的shell和API操作

    1. HDFS的shell操作 hadoop version //查看版本 hadoop fs -appendToFile src(Linux中的文件) dest(hdfs目录下的文件) //追加 h ...

最新文章

  1. c语言零基础快速入门,C语言几种循环结构—零基础小白快速入门必学
  2. 什么是 DMZ 区?
  3. discuz misc.php慢,discuz提示misc.php?mod=patchaction=导致网站访问慢问题解决办法
  4. 奇人有奇书(李渔、张岱、陈继儒、吴敬梓)
  5. php5.6获取文件名,PHP 5.6:headers_sent间歇性地返回true,空文件名和第0行
  6. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
  7. 1694件AI事件大盘点!2020年12月,哪些让你记忆深刻
  8. 关于投资收益和风险的例题(线性规划)
  9. 如何设置AD域用户仅登录到指定的计算机?AD域管理软件
  10. 原生JavaScript + Canvas实现图片局部放大器
  11. 电脑读卡器,读卡器在电脑怎么打开_读卡器插在电脑上显示不出来如何修复-win7之家...
  12. 隐藏在网络邻居背后的协议,快来看看你家网络有几种?
  13. linux 安装mysql(rpm文件安装)
  14. 结对项目—地铁出行路线规划
  15. 单片机闪灯c语言,PIC单片机入门之闪灯程序
  16. python元组是什么意思_python元组是什么意思
  17. Unity 实现2D地面挖洞!涂抹地形(碰撞部分,方法一)
  18. Error: Java exception was raised during method invocation
  19. 「 C/C++疑难杂症 」warning: ISO C++ forbids converting a string constant to ‘CHAR*’ {aka ‘char*’} [-Wwrite
  20. SkyWalking仪表盘

热门文章

  1. 消息队列探秘 – RabbitMQ 消息队列工作原理
  2. mac下配置VSCode的C语言开发环境
  3. vue使用阿里云矢量图
  4. 地表最强! Unity 5.x 插件合集专用贴 - 更新日期 2015.12.06
  5. java+mysql基于ssm企业进销存管理系统【计算机毕业设计】
  6. 网络测试工具netperf介绍
  7. 虚拟机桥接模式上网,局域网内ping通
  8. pc展示emoji表情_如何在智能手机或PC上使用表情符号
  9. CRUISE纯电动车仿真模型,simulink DLL联合仿真,实现电制动优先能量回收策略
  10. 火车头采集器 v9免费版使用