Win10,  方法记录

win采用linux命令替换dos命令以执行用户指令

本文于2021年1月6日由AlvinCR更新

文章导引

1 准备

1.1 启用开发者模式

选择设置-更新和安全,开启开发者模式,并允许从任意源安装应用。参考:https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development?OCID=WinClient_Ver1703_Settings_DevMode

 

1.2 启用子系统

选择 控制面板-程序-程序和功能-启用或关闭windows功能-勾选适用于linux的windows子系统

安装成功后重启电脑再进行下一步。

 

2 下载适用于 Linux 的 Windows 子系统

官网:https://aka.ms/wslstore

通过cmd命令-bash获取地址

在2021.1.3日共有5个可选项:

如果是没接触过linux的新手(估计新手也不会看这个),选择版本参考网站:https://www.oschina.net/translate/best-linux-distributions

个人倾向类centos指令,ubuntu用的比较少。所以选择openSUSE。2021.1.3补充:SUSE的一些命令在win下支持度比较低,使用体验很一般,改用kali linux。

下面是更改选项的基本介绍(内容源于网络):

Ubuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统。他是世界上最流行的发行版之一,每次发行,它都有提升。最新发行版为桌面、移动及其桌面移动混合版的优化。

OpenSUSE 发行版是 Linux 的一个普通发行版,由 OpenSUSE 项目构建,目标是在成为一个不错面向新手的发行版的同时,也能满足有经验的 Linux 用户的需求。OpenSUSE 附带有 YAST, 它是一个管理员程序,能对安装,包管理以及其它一些东西进行控制。

Kali Linux以前被称为BackTrack,是一个渗透测试发行版,被广泛应用于在线安全社区。这种基于Debian的Linux发行版可以轻松地执行数字取证任务。

Debian 是一个比较老的 Linux 发行版,是跟着 GNOME 桌面环境一起出现的。不过,这个桌面环境也能用于 FreeBSD,并且对于其它内核的支持工作也在进行中, 比如Hurd。 Debian 以其预装的超过 37500 的程序包为荣,并且带有简单的功能使得其能轻松的获取到更多的包。

https://docs.microsoft.com/en-us/windows/wsl/install-win10

补充:WSL 是 Windows Subsystem for Linux 的简称, 可让开发人员按原样运行 GNU/Linux 环境 – 包括大多数命令行工具、实用工具和应用程序 – 且不会产生虚拟机开销。

下载完启动就可以了

等待安装,设置管理员名以及密码即可

3 使用

3.1 方法一

在文件管理器中按住shift+鼠标右键,选择在此处打开linux shell便可用linux命令替代win 的命令。

使用粘贴选项的时候不能用ctrl+v,也不能使用shell的快捷键,而是复制之后单击鼠标右键进行粘贴命令。在这里不使用ctrl+v并不是不能复制,而是会出现“口”的现象

3.2 方法二

使用cmd命令输入bash即可接入linux端

 

4 附

1 windows和linux换行规则

^M 在Linux/Unix输入方法:CTRL+v,接着按CTRL+SHIFT+m

1.1 有趣的历史知识:

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做”回车”(Carriage Return),告诉打字机把打印头定位在左边界;另一个叫做”换行”(Linefeed),告诉打字机把纸向下移一行。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有”<换行>”,即”\n”;Windows系统里面,每行结尾是”<回车><换行>”,即”\r\n”;Mac系统里,每行结尾是”<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

(以上内容转载自阮一峰blog

总结来说就是由于历史原因导致win和linux在一些细节上发生了分歧(win和linux设计时都参考了 UNIX,linux更是如此),导致了win和linux的指令在细节上略有不同,因此win命令不能直接在linux上运行,但是可以经过简单转化后运行。

1.2 在windows下创建的文本文件,为什么在linux中显示正常

因为在使用linux的vim命令时会自动检测换行符,但是有时win下创建或编辑的文件在linux下会出现^M,这是由于vim检查文本的换行符所导致的,只要存在不是win格式的换行符,那么就会原模原样的显示文本数据。

1.3 相关代码

(1)用sed命令替换

sed -e ‘s/^M//g’ before.txt > after.txt

参考下面sed命令,可以看出上面参数是直接在命令列模式上进行 sed 的动作编辑

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html

2 X Window 与微软的 Windows 区别

  • UNIX/Linux 系统与 X Window 没有必然捆绑的关系,也就是说,UNIX/Linux 可以安装 X Window,也可以不安装;而微软的 Windows 图形环境与内核捆绑密切。
  • UNIX/Linux 系统不依赖图形环境,依然可以通过命令行完成 100% 的功能,而且因为不使用图形环境还会节省大量的系统资源。

http://c.biancheng.net/view/707.html

留言

您的电子邮箱地址不会被公开。 必填项已用*标注

win采用linux命令替换dos命令以执行用户指令