<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>操作系统 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</link><description>Recent content in 操作系统 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://liangweidonggood.github.io/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/index.xml" rel="self" type="application/rss+xml"/><item><title>微软开源Coreutils for Windows：Rust重写的UNIX工具集正式登陆</title><link>https://liangweidonggood.github.io/p/wei-ruan-kai-yuan-coreutils-windows/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://liangweidonggood.github.io/p/wei-ruan-kai-yuan-coreutils-windows/</guid><description>&lt;p&gt;2026年6月2日，微软正式发布了 &lt;strong&gt;Microsoft Coreutils for Windows&lt;/strong&gt; 的首个正式版本 &lt;code&gt;v2026.5.29&lt;/code&gt;，标志着这家操作系统巨头第一次以官方身份，把经过 Rust 重写的 UNIX 核心工具集原生地带到了 Windows 平台。对于长期在 Windows、Linux、macOS、WSL 与容器之间来回切换的开发者而言，这是一件期盼已久的事情。&lt;/p&gt;
&lt;h2 id="一项目背景跨平台开发者之痛"&gt;一、项目背景：跨平台开发者之痛
&lt;/h2&gt;&lt;p&gt;长期以来，Windows 与 UNIX 生态之间存在一道隐形的&amp;quot;工具鸿沟&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大量 CI 脚本、运维脚本、构建脚本默认依赖 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;cp&lt;/code&gt;、&lt;code&gt;rm&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;find&lt;/code&gt; 这类 GNU 工具；&lt;/li&gt;
&lt;li&gt;开发者要么借助 WSL，要么依赖 Git for Windows、MSYS2、Cygwin 这类第三方移植，要么就只能把脚本&amp;quot;翻译&amp;quot;成 PowerShell —— 维护成本都不低；&lt;/li&gt;
&lt;li&gt;即使引入了第三方 GNU 工具，命令参数、行为细节也常常与 Linux 上的对应工具存在微妙差异。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;微软 Coreutils for Windows 正是为了解决这个痛点：&lt;strong&gt;让 Linux、macOS、WSL、容器与 Windows 上的同一段命令、同一套参数、同一种管道组合，能够开箱即用地工作&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="二项目简介"&gt;二、项目简介
&lt;/h2&gt;&lt;p&gt;Microsoft Coreutils for Windows 是微软在 GitHub 上以 &lt;code&gt;microsoft/coreutils&lt;/code&gt; 名义维护的开源项目。它并不是从零写起，而是&lt;strong&gt;站在开源社区的肩膀上&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;组件&lt;/th&gt;
					&lt;th&gt;上游项目&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;核心工具集&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://github.com/uutils/coreutils" target="_blank" rel="noopener"
 &gt;uutils/coreutils&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;GNU coreutils 的 Rust 重写版&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;查找工具&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://github.com/uutils/findutils" target="_blank" rel="noopener"
 &gt;uutils/findutils&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;GNU findutils 的 Rust 重写版&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;文本搜索&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://github.com/uutils/grep" target="_blank" rel="noopener"
 &gt;uutils/grep&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;新编写的 Rust 实现&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这三套工具被打包成&lt;strong&gt;单一的多调用二进制文件&lt;/strong&gt;，配合 DOS 时代 &lt;code&gt;find&lt;/code&gt; 与 &lt;code&gt;sort&lt;/code&gt; 的兼容垫片、以及一个支持跨平台 glob 模式的 PowerShell 包装器，组成完整的 Coreutils for Windows 套件。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;项目当前仍处于 &lt;strong&gt;preview（预览）&lt;/strong&gt; 状态，仅在 2026 年 6 月 2 日发布了首个正式 Release。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="三技术亮点"&gt;三、技术亮点
&lt;/h2&gt;&lt;p&gt;从仓库的语言占比即可看出项目的技术组成：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;语言&lt;/th&gt;
					&lt;th&gt;占比&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Rust&lt;/td&gt;
					&lt;td&gt;39.1%&lt;/td&gt;
					&lt;td&gt;核心二进制实现，继承自 uutils 上游&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;PowerShell&lt;/td&gt;
					&lt;td&gt;35.1%&lt;/td&gt;
					&lt;td&gt;构建脚本、CI/CD、辅助脚本&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Inno Setup&lt;/td&gt;
					&lt;td&gt;25.8%&lt;/td&gt;
					&lt;td&gt;Windows 安装包打包&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;几个值得关注的点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rust 实现&lt;/strong&gt;：在内存安全和性能上比传统 C 实现更有优势，也与微软近年来在 Rust 方向上的投入一脉相承。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与上游同步&lt;/strong&gt;：仓库 &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; 明确说明，代码变更会在本仓库与上游 uutils 项目之间流转——既享受了社区成果，也承担了同步责任。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT 许可&lt;/strong&gt;：完全宽松的许可证，便于企业与个人在商业场景下使用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多调用二进制&lt;/strong&gt;：以单一可执行文件承载上百个命令，部署与分发都更轻量。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="四安装与运行要求"&gt;四、安装与运行要求
&lt;/h2&gt;&lt;p&gt;最便捷的安装方式是通过 Windows 包管理器 &lt;strong&gt;WinGet&lt;/strong&gt; 一键安装：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;winget&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Coreutils&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以从 &lt;a class="link" href="https://github.com/microsoft/coreutils/releases/latest" target="_blank" rel="noopener"
 &gt;Release 页面&lt;/a&gt; 下载预编译二进制手动部署。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;运行要求&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;强制要求 PowerShell 7.4 或更高版本&lt;/strong&gt;，旧版 PowerShell 不受支持；&lt;/li&gt;
&lt;li&gt;CMD 可以使用，但部分功能受限；&lt;/li&gt;
&lt;li&gt;推荐 Windows 11，理论上也支持 Windows 10。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五命令支持矩阵"&gt;五、命令支持矩阵
&lt;/h2&gt;&lt;p&gt;Coreutils for Windows 并未&amp;quot;一股脑&amp;quot;把 GNU coreutils 的所有命令都搬过来，而是经过精心设计以&lt;strong&gt;避免破坏 Windows 现有生态&lt;/strong&gt;。下面是核心命令的支持情况：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;命令&lt;/th&gt;
					&lt;th&gt;CMD&lt;/th&gt;
					&lt;th&gt;PowerShell 7.4+&lt;/th&gt;
					&lt;th&gt;备注&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cp&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;date&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;集成自原 DOS 命令&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;hostname&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;Windows 内置的超集&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;kill&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;🛑&lt;/td&gt;
					&lt;td&gt;🛑&lt;/td&gt;
					&lt;td&gt;Windows 缺乏信号支持&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mv&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;rm&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;rmdir&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;sleep&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;sort&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;集成自原 DOS 命令&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tee&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;timeout&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;🛑&lt;/td&gt;
					&lt;td&gt;🛑&lt;/td&gt;
					&lt;td&gt;依赖 &lt;code&gt;kill&lt;/code&gt; 功能&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;uptime&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;✅&lt;/td&gt;
					&lt;td&gt;⚠️&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;dir&lt;/code&gt;、&lt;code&gt;more&lt;/code&gt;、&lt;code&gt;whoami&lt;/code&gt; 等&lt;/td&gt;
					&lt;td&gt;🛑&lt;/td&gt;
					&lt;td&gt;🛑&lt;/td&gt;
					&lt;td&gt;与内置 DOS 命令严重冲突&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;图例：✅ 已发布且可用 · ⚠️ 已发布但与内置命令冲突 · 🛑 未发布&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="故意未包含的命令"&gt;故意未包含的命令
&lt;/h3&gt;&lt;p&gt;以下命令虽然在上游 uutils 中存在，但因&lt;strong&gt;依赖 POSIX 独有概念&lt;/strong&gt;、&lt;strong&gt;可能破坏现有 Windows 脚本&lt;/strong&gt;或在 &lt;strong&gt;Windows 上无实用价值&lt;/strong&gt;而被移除：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;可能在未来加入&lt;/strong&gt;：&lt;code&gt;dd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows 上无意义&lt;/strong&gt;：&lt;code&gt;dircolors&lt;/code&gt;、&lt;code&gt;shred&lt;/code&gt;、&lt;code&gt;sync&lt;/code&gt;、&lt;code&gt;uname&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仅限 POSIX 概念&lt;/strong&gt;：&lt;code&gt;chcon&lt;/code&gt;、&lt;code&gt;chgrp&lt;/code&gt;、&lt;code&gt;chmod&lt;/code&gt;、&lt;code&gt;chown&lt;/code&gt;、&lt;code&gt;chroot&lt;/code&gt;、&lt;code&gt;groups&lt;/code&gt;、&lt;code&gt;hostid&lt;/code&gt;、&lt;code&gt;id&lt;/code&gt;、&lt;code&gt;install&lt;/code&gt;、&lt;code&gt;logname&lt;/code&gt;、&lt;code&gt;mkfifo&lt;/code&gt;、&lt;code&gt;mknod&lt;/code&gt;、&lt;code&gt;nice&lt;/code&gt;、&lt;code&gt;nohup&lt;/code&gt;、&lt;code&gt;pathchk&lt;/code&gt;、&lt;code&gt;pinky&lt;/code&gt;、&lt;code&gt;runcon&lt;/code&gt;、&lt;code&gt;stdbuf&lt;/code&gt;、&lt;code&gt;stty&lt;/code&gt;、&lt;code&gt;tty&lt;/code&gt;、&lt;code&gt;users&lt;/code&gt;、&lt;code&gt;who&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;也就是说，如果你习惯了在 Linux 上 &lt;code&gt;chmod 755 script.sh&lt;/code&gt;，那么在 Windows 的 Coreutils 套件里依然要使用 Windows 原生的 ACL 机制。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="六windows-平台差异处理"&gt;六、Windows 平台差异处理
&lt;/h2&gt;&lt;p&gt;Coreutils for Windows 的文档详细列出了 Windows 与 UNIX 之间的关键差异，以及在 Windows 上的应对策略：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;差异点&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CRLF 行尾符&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Windows 文本文件常用 &lt;code&gt;\r\n&lt;/code&gt;，多数工具透明处理，但正则 &lt;code&gt;$&lt;/code&gt; 匹配与精确字节计数会受影响&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;无 &lt;code&gt;/dev/null&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;使用 &lt;code&gt;NUL&lt;/code&gt; 替代，例如 &lt;code&gt;find . -name &amp;quot;*.log&amp;quot; &amp;gt; NUL&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;无 POSIX 信号&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;SIGHUP&lt;/code&gt;、&lt;code&gt;SIGPIPE&lt;/code&gt;、&lt;code&gt;SIGUSR&lt;/code&gt; 不可用，但 &lt;code&gt;Ctrl+C&lt;/code&gt;（&lt;code&gt;SIGINT&lt;/code&gt;）工作正常&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;路径分隔符&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;/&lt;/code&gt; 和 &lt;code&gt;\&lt;/code&gt; 都接受，但部分工具输出仍使用 &lt;code&gt;\&lt;/code&gt; 分隔&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;文件权限&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Windows 使用 ACL 而非 POSIX 权限位，&lt;code&gt;find -perm&lt;/code&gt; 等谓词可能行为不同或不可用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;符号链接&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;读取已存在符号链接无需提权；创建新链接需要开发者模式或提权终端&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这一节尤其值得开发者留意——&lt;strong&gt;&lt;code&gt;&amp;gt;&lt;/code&gt; 之后不要写 &lt;code&gt;/dev/null&lt;/code&gt;，而要写 &lt;code&gt;NUL&lt;/code&gt;&lt;/strong&gt;，这能省去很多踩坑时间。&lt;/p&gt;
&lt;h2 id="七当前状态与社区反响"&gt;七、当前状态与社区反响
&lt;/h2&gt;&lt;p&gt;截至本文撰写时（2026 年 6 月 3 日）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;首个正式版本&lt;/strong&gt;：&lt;code&gt;v2026.5.29&lt;/code&gt;，发布于 &lt;strong&gt;2026 年 6 月 2 日&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Stars&lt;/strong&gt;：约 1.6k&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forks&lt;/strong&gt;：21&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;许可证&lt;/strong&gt;：MIT&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Issues / PRs&lt;/strong&gt;：16 个开放 Issue，9 个开放 PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;社区对此次发布的反应以正面为主——在 release 页面中可以看到&amp;quot;🎉 庆祝&amp;quot;、&amp;quot;🚀 火箭&amp;quot;、&amp;quot;❤️ 红心&amp;quot;等表情反应相当密集。&lt;/p&gt;
&lt;h2 id="八为什么这件事值得开发者关注"&gt;八、为什么这件事值得开发者关注
&lt;/h2&gt;&lt;p&gt;微软 Coreutils for Windows 的发布，表面上是&amp;quot;多了几个命令&amp;quot;，实质上意义远不止于此：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;官方背书&lt;/strong&gt;：这是微软首次以官方仓库身份维护 UNIX 工具集，长期支持与生态整合都有保障。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脚本可移植性大幅提升&lt;/strong&gt;：今后编写跨平台脚本时，&amp;ldquo;先在 Linux 上跑通，再到 Windows 上跑&amp;quot;的工作流会顺畅很多。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rust 在系统编程领域的又一次胜利&lt;/strong&gt;：核心系统工具的 Rust 重写趋势，从 ripgrep、fd、bat 一直延续到如今的 uutils 系列，生态越来越完善。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;降低 WSL 依赖&lt;/strong&gt;：对于一些原本&amp;quot;为了一两条命令就要切到 WSL&amp;quot;的工作场景，如今可以直接在 PowerShell 中完成。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="九总结"&gt;九、总结
&lt;/h2&gt;&lt;p&gt;Microsoft Coreutils for Windows 是微软在 2026 年交出的一份诚意之作：它把经过开源社区验证的 uutils 系列工具，以官方身份整合到 Windows 平台，并细致地处理了与 Windows 现有命令的冲突问题。虽然目前仍处于 preview 状态、首个版本号 v2026.5.29 距离发布也才一天，但凭借微软的维护力度与 uutils 上游的成熟度，这个项目值得每一个跨平台开发者去尝试。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;立即尝试&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;winget&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Coreutils&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后打开 PowerShell 7.4+，敲下 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;rm&lt;/code&gt;，感受一下&amp;quot;在 Windows 上像在 Linux 一样工作&amp;quot;的丝滑吧。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/microsoft/coreutils" target="_blank" rel="noopener"
 &gt;microsoft/coreutils GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/microsoft/coreutils/releases/latest" target="_blank" rel="noopener"
 &gt;Release v2026.5.29&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/uutils/coreutils" target="_blank" rel="noopener"
 &gt;uutils/coreutils&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/uutils/findutils" target="_blank" rel="noopener"
 &gt;uutils/findutils&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/uutils/grep" target="_blank" rel="noopener"
 &gt;uutils/grep&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>硬盘挂载</title><link>https://liangweidonggood.github.io/p/ying-pan-gua-zai/</link><pubDate>Tue, 06 Mar 2018 00:00:00 +0000</pubDate><guid>https://liangweidonggood.github.io/p/ying-pan-gua-zai/</guid><description>&lt;h1 id="一个目录只能挂一个盘"&gt;一个目录只能挂一个盘
&lt;/h1&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk -l
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.终止占用 /home 进程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fuser -m -v -i -k /home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.备份/home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -r /home/ homebak/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3.卸载 /home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount /home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4.删除/home所在的lv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvremove /dev/mapper/centos-home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5.扩展/root所在的lv，增加100G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvextend -L +100G /dev/mapper/centos-root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6.扩展/root文件系统
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xfs_growfs /dev/mapper/centos-root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;7.重新创建home lv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvcreate -L 40G -n home centos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;8.创建文件系统
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.xfs /dev/centos/home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9.挂载
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/centos/home /home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10.还原 /home 相关文件以及对应目录权限 cp -r homebak/* /home/ chown -R hdfs:hdfs /home/hdfs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id="查看云盘"&gt;查看云盘
&lt;/h1&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk -l
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk /dev/vda: &lt;span class="m"&gt;20&lt;/span&gt; GiB, &lt;span class="m"&gt;21474836480&lt;/span&gt; bytes, &lt;span class="m"&gt;41943040&lt;/span&gt; sectors
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Units: sectors of &lt;span class="m"&gt;1&lt;/span&gt; * &lt;span class="nv"&gt;512&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sector size &lt;span class="o"&gt;(&lt;/span&gt;logical/physical&lt;span class="o"&gt;)&lt;/span&gt;: &lt;span class="m"&gt;512&lt;/span&gt; bytes / &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;I/O size &lt;span class="o"&gt;(&lt;/span&gt;minimum/optimal&lt;span class="o"&gt;)&lt;/span&gt;: &lt;span class="m"&gt;512&lt;/span&gt; bytes / &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disklabel type: dos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk identifier: 0xe4c1f796
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Device Boot Start End Sectors Size Id Type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/vda1 * &lt;span class="m"&gt;2048&lt;/span&gt; &lt;span class="m"&gt;41940991&lt;/span&gt; &lt;span class="m"&gt;41938944&lt;/span&gt; 20G &lt;span class="m"&gt;83&lt;/span&gt; Linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk /dev/vdb: &lt;span class="m"&gt;100&lt;/span&gt; GiB, &lt;span class="m"&gt;107374182400&lt;/span&gt; bytes, &lt;span class="m"&gt;209715200&lt;/span&gt; sectors
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Units: sectors of &lt;span class="m"&gt;1&lt;/span&gt; * &lt;span class="nv"&gt;512&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sector size &lt;span class="o"&gt;(&lt;/span&gt;logical/physical&lt;span class="o"&gt;)&lt;/span&gt;: &lt;span class="m"&gt;512&lt;/span&gt; bytes / &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;I/O size &lt;span class="o"&gt;(&lt;/span&gt;minimum/optimal&lt;span class="o"&gt;)&lt;/span&gt;: &lt;span class="m"&gt;512&lt;/span&gt; bytes / &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk /dev/vdc: &lt;span class="m"&gt;500&lt;/span&gt; GiB, &lt;span class="m"&gt;536870912000&lt;/span&gt; bytes, &lt;span class="m"&gt;1048576000&lt;/span&gt; sectors
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Units: sectors of &lt;span class="m"&gt;1&lt;/span&gt; * &lt;span class="nv"&gt;512&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sector size &lt;span class="o"&gt;(&lt;/span&gt;logical/physical&lt;span class="o"&gt;)&lt;/span&gt;: &lt;span class="m"&gt;512&lt;/span&gt; bytes / &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;I/O size &lt;span class="o"&gt;(&lt;/span&gt;minimum/optimal&lt;span class="o"&gt;)&lt;/span&gt;: &lt;span class="m"&gt;512&lt;/span&gt; bytes / &lt;span class="m"&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id="挂载"&gt;挂载
&lt;/h1&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;span class="lnt"&gt;57
&lt;/span&gt;&lt;span class="lnt"&gt;58
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/vdc /data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount: /data: wrong fs type, bad option, bad superblock on /dev/vdc, missing codepage or helper program, or other error.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;为数据盘创建GPT分区,2t以上的盘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;安装Parted工具和e2fsprogs工具
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y parted
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y e2fsprogs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;分区
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted /dev/vdb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mklabel gpt			&lt;span class="c1"&gt;#设置分区格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkpart primary &lt;span class="m"&gt;1&lt;/span&gt; 100%		&lt;span class="c1"&gt;#划分一个主分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;align-check optimal &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;#检查分区是否对齐，正确结果1 aligned&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print				&lt;span class="c1"&gt;#查看分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;quit				&lt;span class="c1"&gt;#退出Parted工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;partprobe			&lt;span class="c1"&gt;#使系统重读分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk -lu /dev/vdb		&lt;span class="c1"&gt;#查看新分区信息，如果出现gpt的相关信息，表示新分区已创建完成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;为数据盘创建MBR分区，2t以下的盘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk -u /dev/vdc	&lt;span class="c1"&gt;#开始分区，&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;p回车			&lt;span class="c1"&gt;#查看数据盘的分区情况&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;n回车			&lt;span class="c1"&gt;#创建一个新分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;p回车			&lt;span class="c1"&gt;#选择分区类型为主分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1回车			&lt;span class="c1"&gt;#分区编号，默认为1不输直接回车也行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;回车，回车		&lt;span class="c1"&gt;#第一个可用的扇区编号默认2048，最后一个扇区编号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wq回车			&lt;span class="c1"&gt;#并在完成分区后退出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk -lu /dev/vdc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;在新分区上创建一个文件系统。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs -t ext4 /dev/vdc1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;运行命令cp /etc/fstab /etc/fstab.bak，备份etc/fstab。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;运行命令echo &lt;span class="sb"&gt;`&lt;/span&gt;blkid /dev/vdc1 &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sed &lt;span class="s1"&gt;&amp;#39;s/\&amp;#34;//g&amp;#39;&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; /data ext4 defaults &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &amp;gt;&amp;gt; /etc/fstab，向/etc/fstab里写入新分区信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;运行cat /etc/fstab命令查看/etc/fstab中的新分区信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;或者
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; /dev/vda3 /data ext4 defaults &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &amp;gt;&amp;gt; /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# /etc/fstab: static file system information.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Use &amp;#39;blkid&amp;#39; to print the universally unique identifier for a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# device; this may be used with UUID= as a more robust way to name devices&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# that works even if disks are added and removed. See fstab(5).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt; &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# / was on /dev/vda1 during installation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;f126eb90-41ef-4ccf-afa2-055203ed920e / ext4 &lt;span class="nv"&gt;errors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;remount-ro &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home ext4 defaults &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;a6ce082e-88cb-469f-8405-72192b89a439 /data ext4 defaults &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;如果出问题就运行以下命令：The device apparently does not exist&lt;span class="p"&gt;;&lt;/span&gt; did you specify it correctly?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;partprobe
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;运行mount /dev/vdc1 /data 命令挂载文件系统。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;如果运行df -h命令后出现新建文件系统的信息，表示文件系统挂载成功。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;3&lt;/p&gt;
&lt;h1 id="原磁盘进行扩容"&gt;原磁盘进行扩容
&lt;/h1&gt;&lt;p&gt;需求：云盘不够用，原来是 500G,现在又买了 200G，数据不变挂载不变的情况下进行扩容&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1 进入分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk /dev/vdb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2 使用d进行删除分区，如果有多个分区要进行逐个删除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3 使用n进行分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4 使用p选择主分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 5 使用两次回车以选择开始和结束分区位置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 6 提示Partition #1 contains a ext4 signature 是否删除，选择n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 7 保存退出 w&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 8 修正&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;resize2fs /dev/vdb1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 9 查看&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id="重启后硬盘会找不到"&gt;重启后硬盘会找不到
&lt;/h1&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;写入/etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>终端快捷键</title><link>https://liangweidonggood.github.io/p/zhong-duan-kuai-jie-jian/</link><pubDate>Wed, 06 Jan 2010 00:00:00 +0000</pubDate><guid>https://liangweidonggood.github.io/p/zhong-duan-kuai-jie-jian/</guid><description>&lt;p&gt;涉及在linux命令行下进行快速移动光标、命令编辑、编辑后执行历史命令、Bang(!)命令、控制命令等。让basher更有效率。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常用&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;ctrl+左右键:在单词之间跳转&lt;/li&gt;
&lt;li&gt;ctrl+a:跳到本行的行首&lt;/li&gt;
&lt;li&gt;ctrl+e:跳到页尾&lt;/li&gt;
&lt;li&gt;Ctrl+u：删除当前光标前面的文字 （还有剪切功能）&lt;/li&gt;
&lt;li&gt;ctrl+k：删除当前光标后面的文字(还有剪切功能)&lt;/li&gt;
&lt;li&gt;Ctrl+L：进行清屏操作&lt;/li&gt;
&lt;li&gt;Ctrl+y:粘贴Ctrl+u或ctrl+k剪切的内容&lt;/li&gt;
&lt;li&gt;Ctrl+w:删除光标前面的单词的字符&lt;/li&gt;
&lt;li&gt;Alt – d ：由光标位置开始，往右删除单词。往行尾删&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;说明&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl – k: 先按住 Ctrl 键，然后再按 k 键；&lt;/li&gt;
&lt;li&gt;Alt – k: 先按住 Alt 键，然后再按 k 键；&lt;/li&gt;
&lt;li&gt;M – k：先单击 Esc 键，然后再按 k 键。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;移动光标&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl – a ：移到行首&lt;/li&gt;
&lt;li&gt;Ctrl – e ：移到行尾&lt;/li&gt;
&lt;li&gt;Ctrl – b ：往回(左)移动一个字符&lt;/li&gt;
&lt;li&gt;Ctrl – f ：往后(右)移动一个字符&lt;/li&gt;
&lt;li&gt;Alt – b ：往回(左)移动一个单词&lt;/li&gt;
&lt;li&gt;Alt – f ：往后(右)移动一个单词&lt;/li&gt;
&lt;li&gt;Ctrl – xx ：在命令行尾和光标之间移动&lt;/li&gt;
&lt;li&gt;M-b ：往回(左)移动一个单词&lt;/li&gt;
&lt;li&gt;M-f ：往后(右)移动一个单词&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;编辑命令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl – h ：删除光标左方位置的字符&lt;/li&gt;
&lt;li&gt;Ctrl – d ：删除光标右方位置的字符（注意：当前命令行没有任何字符时，会注销系统或结束终端）&lt;/li&gt;
&lt;li&gt;Ctrl – w ：由光标位置开始，往左删除单词。往行首删&lt;/li&gt;
&lt;li&gt;Alt – d ：由光标位置开始，往右删除单词。往行尾删&lt;/li&gt;
&lt;li&gt;M – d ：由光标位置开始，删除单词，直到该单词结束。&lt;/li&gt;
&lt;li&gt;Ctrl – k ：由光标所在位置开始，删除右方所有的字符，直到该行结束。&lt;/li&gt;
&lt;li&gt;Ctrl – u ：由光标所在位置开始，删除左方所有的字符，直到该行开始。&lt;/li&gt;
&lt;li&gt;Ctrl – y ：粘贴之前删除的内容到光标后。&lt;/li&gt;
&lt;li&gt;ctrl – t ：交换光标处和之前两个字符的位置。&lt;/li&gt;
&lt;li&gt;Alt + . ：使用上一条命令的最后一个参数。&lt;/li&gt;
&lt;li&gt;Ctrl – _ ：回复之前的状态。撤销操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Ctrl -a + Ctrl -k&lt;/code&gt; 或 &lt;code&gt;Ctrl -e + Ctrl -u&lt;/code&gt; 或 &lt;code&gt;Ctrl -k + Ctrl -u&lt;/code&gt; 组合可删除整行。&lt;/p&gt;
&lt;p&gt;Bang(!)命令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;!! ：执行上一条命令。&lt;/li&gt;
&lt;li&gt;^foo^bar ：把上一条命令里的foo替换为bar，并执行。&lt;/li&gt;
&lt;li&gt;!wget ：执行最近的以wget开头的命令。&lt;/li&gt;
&lt;li&gt;!wget:p ：仅打印最近的以wget开头的命令，不执行。&lt;/li&gt;
&lt;li&gt;!$ ：上一条命令的最后一个参数， 与 &lt;code&gt;Alt - .&lt;/code&gt; 和 &lt;code&gt;$_&lt;/code&gt; 相同。&lt;/li&gt;
&lt;li&gt;!* ：上一条命令的所有参数&lt;/li&gt;
&lt;li&gt;!_:p ：打印上一条命令是所有参数，也即 &lt;code&gt;!_&lt;/code&gt;的内容。&lt;/li&gt;
&lt;li&gt;^abc ：删除上一条命令中的abc。&lt;/li&gt;
&lt;li&gt;^foo^bar ：将上一条命令中的 foo 替换为 bar&lt;/li&gt;
&lt;li&gt;^foo^bar^ ：将上一条命令中的 foo 替换为 bar&lt;/li&gt;
&lt;li&gt;!-n ：执行前n条命令，执行上一条命令： &lt;code&gt;!-1&lt;/code&gt;， 执行前5条命令的格式是： &lt;code&gt;!-5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查找历史命令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl – p ：显示当前命令的上一条历史命令&lt;/li&gt;
&lt;li&gt;Ctrl – n ：显示当前命令的下一条历史命令&lt;/li&gt;
&lt;li&gt;Ctrl – r ：搜索历史命令，随着输入会显示历史命令中的一条匹配命令，Enter键执行匹配命令；ESC键在命令行显示而不执行匹配命令。&lt;/li&gt;
&lt;li&gt;Ctrl – g ：从历史搜索模式（Ctrl – r）退出。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;控制命令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl – l ：清除屏幕，然后，在最上面重新显示目前光标所在的这一行的内容。&lt;/li&gt;
&lt;li&gt;Ctrl – o ：执行当前命令，并选择上一条命令。&lt;/li&gt;
&lt;li&gt;Ctrl – s ：阻止屏幕输出&lt;/li&gt;
&lt;li&gt;Ctrl – q ：允许屏幕输出&lt;/li&gt;
&lt;li&gt;Ctrl – c ：终止命令&lt;/li&gt;
&lt;li&gt;Ctrl – z ：挂起命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重复执行操作动作&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;M – 操作次数 操作动作 ： 指定操作次数，重复执行指定的操作。&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>