我将Linux作为唯一使用的操作系统已经大约有15年了

编译器 |张诗颖 主编 |郑丽媛

制作 | CSDN(ID:CSDNnews)

大约 15 年来,我一直将 Linux 作为我唯一的操作系统。最近,我开始了一项很棒的新工作,但只有一个问题 – 它配备了一台 Windows 10 笔记本电脑。

这是我 15 年来第一次使用 Windows。

第一印象

Windows 桌面的混乱程度令人震惊,Linux 经常因其不稳定的桌面而受到批评,但显然 Windows 更糟糕。在 Windows 中,一半是“新” UI(用户界面),一半是旧的 Win 32(应用程序编程接口)/GDI(图形设备接口)类型的 UI——这似乎与 KDE(K 桌面环境)相同 / GTK(通用图形库)同样糟糕,但有一个区别:在 Linux 发行版上,您都可以配置为以 KDE、GTK 或其他方式启动;在 Windows 上,您首先会遇到两者的随机混合。

谢天谢地,Windows 有一个深色主题可用,但仅适用于新 UI – 也就是说,您可能会发现一些旧的非主题 UI 在深色模式下仍显示为亮白色!

你不能自己定制任何东西!

与完全可定制的 Linux 相比,您几乎只能选择使用 Microsoft 为您提供的任何东西;相反,用户可以从头开始构建自己的 Linux 版本。然而,像几乎所有 Linux 用户一样,我选择不构建自己的,而是使用 Linux 发行版。我可以自由选择最接近我需要的发行版并定制我想要的任何东西。多年来我一直在使用 Xubuntu(基于 Ubuntu 的衍生 Linux 发行版),它非常适合我,还有数百种其他 Linux 发行版可供选择。

Windows 不是为我设计的

作为一名软件和网络开发人员电脑的环境变量是什么,我将 Linux 视为一个工具箱,里面装满了软件开发人员数十年来为绝大多数开发人员精心打造的高度复杂的工具。但 Windows 不同,它是一个商业操作系统,主要面向 Word、Excel 和 Outlook 用户。使用时可以明显感受到两者的区别。

非汇编软件

构成标准 Linux/Unix 工具箱的命令行工具(echo、cat、grep、sed、awk、find、cut、sort、curl、ssh 等)都是可组合的和通用的,您可以将它们像乐高积木一样放在一起,并以您喜欢的任何组合创建新工具。您可以在命令行上执行此操作,方法是将文本流从一个工具传送到另一个工具并根据需要进行转换。

不幸的是,没有人真正想出如何制作这种通用且可组合的 GUI 软件。 Windows 一直非常关注 GUI,甚至几乎完全排除了命令行——这意味着它没有此类可组合软件工具的基础。 Windows 中几乎所有东西都是专用的 GUI 软件,因此您必须自己找到、下载并安装它。

解决方案:

您可以获得大多数标准 *nix 用户空间实用程序(GNU 核心实用程序命令列表)的 Windows 版本,它们似乎可以与 PowerShell 一起使用:

$ scoop install coreutils

路径

如果您只是在 GUI 文件管理器中单击内容,那么带有大量空格的长路径无关紧要,但如果您尝试使用命令行,它们只是一种持续的对抗。

但老实说,自从我上次使用 Windows 以来,它们已经消除了路径中的很多空格。此外,PowerShell 确实为主文件夹提供了 ~ 别名,并且 cd ~ 也可以正常工作。

环境变量

环境变量如下所示:%PROFILE% 而不是:$HOME。有区别,但两者都很好,PowerShell 似乎同时接受这两种形式。

不太好,它们显然存储在 Windows 注册表中。如果您使用 setx %var% value 或 GUI 来更新这些值,则必须重新启动 shell – 即键入 exit,窗口/选项卡消失,然后打开另一个窗口。

解决方案:

我还没有尝试过这种方法,但我认为如果你想在当前运行的 shell 中添加持久性环境变量,你应该在你的 $profile 文件中放置一个 setx 命令并重新加载 .$profile,或者你可以运行 myvar =”value” && setx %myvar% “value” 和类似的命令。

安装软件

在 Windows 中,大多数情况下安装软件仍然需要访问网站、下载 .exe 或 .msi 并运行它。但是,当您尝试运行它们时可能会收到一些警告,但这仍然是安装大量软件的唯一方法! 2022年,这种安装方式还是让人堪忧。

虽然现在有了微软商店(Microsoft Store),但情况还是很糟糕。它的软件少于大多数 Linux 发行版的“应用商店”,甚至与 Debian 存储库(大约 60,000 个软件包)和 Arch 的 AUR(7.30,000 个软件包)相比,这是微不足道的(尽管这些计数包括整个Linux 操作系统,安装同一个包管理器)。

与 Netflix(一个流媒体平台)一样,Microsoft Store 被故意设为不显示其实际拥有的数量,但在大多数有用的类别中,它几乎是空的。至少到目前为止,它没有我需要的东西。

例如,尝试安装字体。如果你已经下载了字体,你可以右键点击它,或者设置一个新的字体安装来安装本地字体文件;但它也建议访问 Microsoft Store,那里只有 19 种字体可用。粗略查看 apt list | rg ‘ttf|otf’ | wc -l,我发现我的 Google Fonts/Ubuntu(基于桌面的 Linux 操作系统)框中有 101 种字体,目前有 1364 种字体系列。这些是开源且免费许可的,并且这些字体在 Windows 上运行良好,因此如果 Microsoft 愿意,可以安装它们。

如果有合适的包管理器,Microsoft Store 本来可以用他们的商店解决这个问题,但他们似乎没有这样做:Microsoft Store 的一些团队复制 AppGet 来创建 WinGet,然后选择将其丢弃其他团队创建了 MSIX(一种新的安装包格式)电脑的环境变量是什么,其他团队创建了商店…

(微软组织结构图)

最近出现了一些适用于 Windows 的“包管理器”——nuget、choclaty、scoop、winget 等……唉,这些只是填补漏洞。因为Windows中的很多东西都不是开源的,他们仍然没有自己的包仓库、可复现的构建、包签名等,只能自动化访问网站、下载安装程序、运行的过程它。

这些适用于 Windows 的“包管理器”只是自动下载和安装,而不是真正的包管理器。虽然 Linux 包管理器与 Windows 不同,但它们通常执行以下操作:

1.有某种形式的包仓库,主要存放包列表、元数据、二进制安装包,有时还有源代码

2.包签名、可重复构建、安全下载等

3.浏览和搜索这些包

4.从本地仓库安装包,意思是:

(1)如果是源码包系统,需要编译源码并测试

(2)复制文件到系统,放到正确的位置,然后运行可选的安装脚本和钩子

(3)记录所有安装的文件,知道哪个文件属于哪个包

5.卸载时:

(1)自动删除所有包文件

(2)运行可选的卸载脚本和钩子

(3)确保软件已安全完全卸载

6.更新包的能力意味着:

(1)知道安装了哪些包,以及哪些版本

(2)能够下载和更新任何过时的包

重要的是整个操作系统和所有应用程序都通过这个系统安装,一切都以相同的方式安装和更新。

更不用说 Nix 包管理器对 NixOS 所做的完全低级的事情了。

客观上,微软商店的 MSI(管理信息系统)做了一些不错的事情,只是 MSI 包从一开始就很难创建,所以很多软件仍然不使用 MSI 文件,所以 20 年后他们还附带 Nullsoft/InstallShield/Inno/homegrown setup.exe。拥有一个新的 MSIX 系统固然好,它更容易创建和添加应用程序的容器化/沙盒(如 flatpak/snap)和更新,但由于它是新的,几乎没有人使用它。

即使考虑到这一点,似乎也不认为整个系统可以提供某种连贯的应用程序安装和更新体验。据我所知,Windows Update 为操作系统提供了此功能,但即使它们使用新的 MSIX 安装程序系统,应用程序也会单独更新。我认为 Microsoft Store 应该这样做,因为这样我们就可以从中安装少量应用程序。

除此之外,这些不同的“包管理器”并不都有相同的可用包/应用程序,因此您最终可能会安装多个“包管理器”。另外,由于“包管理器”不支持所有更新,所以当你想更新时,你必须记住你安装了哪些东西。

图片[1]-我将Linux作为唯一使用的操作系统已经大约有15年了-老王博客

我完全理解它的历史和商业原因,但与 Linux 相比,它对最终用户来说仍然是非常糟糕的体验。

解决方案:

到目前为止,Scoop(Windows下的安装源搜索工具)似乎是最好的。

$ scoop search wget$ scoop info postgres$ scoop install coreutils wget xh bat ripgrep

不是特别糟糕的终端

安装在 Windows 上的 shell 和终端应用程序很糟糕,就像 1980 年代的 DOS(磁盘操作系统)在一个窗口中损坏 – 自从我 15 年前上次使用它们以来没有改变。现在有一个名为 PowerShell 的新 shell 可以在您可怕的 80 年代终端窗口中运行,但在其中运行的终端仍然很糟糕。

我有时想知道为什么 VS Code(跨平台编辑器)团队在编辑器的内置终端上投入了这么多精力。我在 Linux 上尝试过一次,然后再也没有碰过它,因为我的编辑器旁边的终端窗口在各方面都好得多。使用 Windows Terminal 一段时间后,我终于明白它为什么存在了。

解决方案:

原来这个问题的答案是安装Windows Terminal。

在此终端内运行的 shell 是可配置的,但我目前使用的是 PowerShell。我想如果你愿意学习它,你会发现它非常强大。这绝对是对 cmd.exe + 旧 shell 的巨大改进。

我可以重新启动并丢失所有终端吗?

当我一天早上登录 Windows 时,我惊讶地发现一夜之间我失去了所有打开的终端、SSH(安全 Shell)会话和所有 VSCode 窗口。由于我的 Outlook、Teams 和 Edge 窗口仍然存在,我最初以为它们崩溃了,但通过事件查看器后,我发现 Windows 更新实际上是在没有询问我的情况下重新启动计算机!

事实证明,有些 Windows 应用程序是“可重新启动的”,而有些则不是 – 这意味着它们会在您重新启动时重新加载所有窗口。

我后来发现 Windows Terminal Preview Edition 现在也可以“重新启动”了。但这并不奇怪,它只是意味着您的终端窗口和选项卡被返回,而不是它们的内容或 SSH 会话等。

我们在 Linux 世界中做事的方式是:

$ uptime09:33:15 up 56 days, 16:33, 1 user, load average: 1.36, 1.29, 0.91

解决方案:

您可以关闭此功能 – 除非您的 IT 部门已通过策略设置它,就像我一样。

虚拟桌面/工作区

Linux 长期以来(30 年)一直为多个虚拟桌面/工作区提供坚如磐石的支持,而 Windows 10 正好实现了这一目标。虚拟桌面/工作区过去可以通过 3rd 方软件获得,但根据我的经验,它非常“hacky”并且不能很好地工作。

使用多个工作区/虚拟桌面是我在 Linux 上工作流程的核心部分 – 我目前有 20 个工作区,所以这对我来说非常重要。

Windows 10 中的这个功能似乎比以前的第三方软件好用,但我还是有一些抱怨:

除非您回到切换台,否则无法查看您在哪个桌面。

据我所知,win+tab 桌面切换器屏幕可以做很多事情——包括在桌面之间移动窗口的唯一方法,但它可能有点慢且不稳定。

当应用重新启动时,它们都在第一个桌面上结束,但很明显,Microsoft Store 人员不会使用多个桌面。

解决方案:

安装虚拟桌面指示器以在任务栏中获得桌面编号指示器,在切换和鼠标滚轮切换时弹出桌面名称。

安装 PersistentWindows,这是一种多屏幕调整工具,可实时跟踪窗口位置并自动将窗口布局恢复到上次匹配的显示器设置。

睡眠/关机后,Windows 全部移至主显示器

似乎当 Windows 发送 DisplayPort 显示器进入睡眠状态时,它会立即忘记每次都这样做,并表现得好像您断开了它们,然后将这些显示器上的所有窗口移动到主显示器上。所以当你唤醒它时,你必须把所有的窗户重新放回原来的位置。

这似乎是从 Windows 7 发布以来就一直在发生的事情,并且很多人抱怨它无济于事。

解决方案:

设置屏幕休眠超时时间很长,或者开机就关机

安装 PersistentWindows – 实时跟踪窗口位置并自动将窗口布局恢复到最后匹配的监视器设置

没有中间按钮的粘贴

Linux 有多个剪贴板,默认情况下有主要和次要选择。需要注意的是,主次选择不是主次,而是功能不同。例如,主选择始终具有您从任意位置选择的最后一个文本的副本,您可以通过单击鼠标中键将其粘贴到任意位置。您只需选择一些文本 – 您无需执行任何其他操作,您可以单击鼠标中键粘贴到任何位置。此外,“辅助”剪贴板可以进行“普通”剪切、复制、粘贴、Ctrl+c 和 Ctrl+v 之一。

主剪贴板非常有用,但 Windows 绝对没有。

Windows 终端可以在右键单击时粘贴剪贴板的内容并将最后一个选择复制到剪贴板,但这仅适用于 Windows 终端。另外,由于Windows只有一个剪贴板,每次在Windows终端选择任何东西都会覆盖剪贴板,而Linux有另一个剪贴板的原因是为了防止这种情况发生。

解决方案:

什么都没有?

SSH

我听说 PuTTY(一个 Telnet、SSH、rlogin、普通 TCP 和串行接口连接软件)是一个很好的 Windows SSH,所以我尝试使用它,但发现它……一点也不好。不过PowerShell自带SSH客户端,所以只要你有一个合理的终端,就可以正常使用SSH了。

解决方案:

使用 Windows/PowerShell 自带的 SSH。

键盘快捷键

我已经开始使用一些有用的键盘快捷键:

同样,这些都不是完全可定制的——您可以使用 PowerToys 键盘管理器获得更多的全局热键定制,但由于某些原因,许多组合是不可能的。例如,我想使用 Win+Enter 启动一个新的终端窗口以匹配我的 Linux 工作流程,但这种组合是不允许的。

网友:“用Windows的唯一原因就是有些软件在Linux上不行”

很多网友看了邓肯·洛克作者的这篇文章后发表了自己的看法。有网友赞同邓肯洛克的观点:

网友@cmehdy:“在切换到Windows之前,我也用了10多年的Mac,感觉和文章说的基本一样。”网友@brokenmachine:“我在家里同时使用Linux和Windows,虽然每当我在Linux PC上进行更新时总是会出现很多问题,但通常我可以修复所有内容,修复后它会保持原样并可靠运行,直到我选择做另一个更新,所以我仍然喜欢 Linux。我使用 Windows 的唯一原因是因为某些软件无法在 Linux 上运行。”

也有部分网友不同意邓肯洛克的观点,认为他的评价不公平:

网友@jmmv:“换平台重新适配需要很长时间,如果长时间不调整,很容易抱怨,也很难给出公正的评价……”网友@libraryatnight:“作为一个整天使用AD、Azure和Windows服务器的人,我觉得Windows Powershell很棒。”

那么,您对当前的 Windows 系统满意吗?您对此有何看法?

参考链接:

结束

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论