推广 热搜: page  关键词  数据分析  服务  数据分析系统  搜索  获取  哪些  链接  搜索引擎 

Windows 中运行 Linux 命令的方法:wsl、Git Bash、Cygwin、虚拟机安装Linux、busybox、powershell、cmder、x-cmd(各种工具集)

   日期:2025-01-03     作者:xdial    caijiyuan   评论:0    移动:https://sicmodule.kub2b.com/mobile/news/15020.html
核心提示:了解过操作系统原理的同该都知道 Windows 与 Linux 的内核提供的接口不同(系统调用、API、可执行文件格式等)。从

了解过操作系统原理的同该都知道 Windows 与 Linux 的内核提供的接口不同(系统调用、API、可执行文件格式等)。从而导致 Linux 程序无法直接在 Windows 上运行,windows 程序同样也无法直接在 linux 上运行。

例如:在 Linux 下会使用 ls 命令查看目录,ls 会调用 getdents 这个系统调用,Linux 内核收到请求后将目录的内容返回给应用程序;而在 Windows 下使用 dir 命令查看目录,dir 会调用 NtQueryDirectoryFile 这个 API,NT 内核收到请求,将目录的内容返回给应用程序。然而,当把 Linux 上的应用程序拿到 Windows 上运行时,应用程序和内核就双双懵逼了。比如 ls 会尝试调用 getdents 系统调用 (理想化的情况下,暂不考虑可执行文件格式等问题),Windows 的 NT 内核一看,心说:「这他娘的什么东西,老子不认识啊,啥情况啊」,ls 也想:「尼玛,内核怎么不回话啊,咋回事儿啊」……两边语言不通,应用程序自然无法正确执行。

但是有了 WSL,情况就不一样了。依然拿 ls 举例,当在 WSL 中运行 ls 命令时,ls 会调用 getdents 系统调用(这个系统调用接口是 WSL 提供的,Windows 本身并没有这个接口,wsl 收到这个请求,明白了应用程序是想要知道目录的内容,于是把 Linux 的系统调用转换为 NT API NtQueryDirectoryFile。NT 内核收到 WSL 的请求,将目录的内容返回给 WSL,WSL 再把返回的内容包装好后返回给 ls。可以看到 wsl 在 Linux 应用程序与 Windows NT 内核之间起到了翻译者的作用。很简单的道理,既然 NT 内核无法理解 Linux 应用程序的 POSIX 系统调用,那就弄个翻译来将 POSIX 系统调用实时转换为 NT 内核能理解的 API 调用,突出一个见人说人话、见鬼说鬼话。只要实现了足够多的系统调用翻译,那么理论上 WSL 可以完全模拟成一个 Linux 内核。

  • 在 windows 中:借助 Windows Subsystem for Linux (简称 wsl) 可以运行 linux 程序, wsl 是一个在 Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。Cygwin 同样是能让 Linux 应用程序运行在 Windows 上
  • 在 linux 中:借助 Wine (Wine Is Not an Emulator 的首字母缩写) 可以运行 windows 程序,wine 是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

wine 官网

Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。现在 wine 已经基本完成对 windows 的支持,目前主要的困难是反作弊和许可证书的支持。

Ubuntu 安装:sudo apt install wine winetricks

确认 wine 安装完毕,挂好梯子。访问 Wine AppDB,查找你的软件的英文名,比如微信就是 WeChat。不知道英文名可以百度一下。找到你使用的版本或相近版本的 Test Result(测试结果,不会英语就用谷歌翻译插件翻译一下,记录需要哪些依赖,填到 'REQUIRE' 里。sudo chmod +x <脚本名> 赋予脚本运行权限后,运行脚本即可,如果遇到网络问题,卡住不动了,可以 Ctrl+C 中断脚本,再重新运行。

Linux 的 Windows 子系统文档
使用wsl安装linux子系统

wsl 代表是 Windows Subsystem for Linux,在 Windows 10 (内部版本 19041 及更高版本) 或 windows 11 独立成一个单独的命令

 

示例

 

使用 wsl 命令 安装 kali

在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择 “以管理员身份运行”,输入 wsl --install 此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能(可以更改此默认发行版)。然后重启计算机。 如果使用的是更早的版本,请参阅手动安装页。如果你运行的是旧版,或只是不想使用 install 命令并希望获得分步指引,请参阅旧版 WSL 手动安装步骤。首次启动新安装 Linux 发行版时,将会打开一个控制台窗口用来下载并解压缩文件。未来的所有启动时间应不到一秒。

更改 Linux 发行版

默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用  标志进行更改。

  • 若要更改安装的发行版,请输入:。 将  替换为要安装的发行版的名称。
  • 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入: 或 。
  • 若要在初始安装后安装其他 Linux 发行版,还可使用命令:。

如果要通过 Linux/Bash 命令行(而不是通过 PowerShell 或命令提示符)安装其他发行版,必须在命令中使用 .exe: 或若要列出可用发行版,则使用:。

如果不想使用命令行,也可以打开 Microsoft Store,搜索「WSL」并挑选一个你喜欢的 Linux 发行版,然后点击安装。安装完成后,在开始菜单中找到你刚刚安装的发行版,打开它。等待几分钟的初始化过程,设定好用户名与密码后就会自动进入 Linux 环境。至此,你已经完成了 WSL 的安装。你也可以同时安装多个发行版,它们的数据都是独立的,互不影响。WSL 支持同时安装多个 Linux 发行版,直接在 Microsoft Store 中搜索想要的发行版并点击安装即可。这些发行版可以同时运行,并且数据互相独立。你可以使用  来查询已安装的发行版,或者更改默认的发行版。删除发行版也很简单,直接卸载对应的商店应用即可。 

wsl-config

更换 apt 源

sudo vim /etc/apt/sources.list

 

安装 完整版 kali

Kali Linux metapackages:https://www.kali.org/docs/general-use/metapackages/

 

Microsoft store下载的 kali 不包含任何工具 需要手动安装完整版 kali,但是许多教程这里的安装命令都是 sudo apt-get install kali-linux 或 sudo apt-get install kali-linux-full,这里也是找了很久才知道主要数据包名字改了 导致很多教程现在都失效了

链接:https://www.kali.org/news/major-metapackage-makeover/ 

 

参考:https://blog.csdn.net/heray1990/article/details/47803541

如果报错,则执行上面命令,然后再执行 安装完整版 kali

如果更新源后没有更新软件则执行sudo apt-get install kali-linux-large --fix-missing

这里中途会有一些图形化界面的选择选项 类似这种

这里用翻译软件自行翻译选择合适选项
//有教程写有Yes选Yes有OK选OK 最后一个选“from inetd”
安装时大致查看过这些选项影响应该不大请自行斟酌
然后就等着黑框框里闪啊闪啊 等待安装完成
这里提一下 Windows Terminal 从PowerShel l进入子系统只需使用 kali 或者 bash 命令
其中 bash 命令是在当前目录进入子系统
CTRL+D 可以回到 PowerShell / cmd
安装完成后简单的测试一下

可以发现 kali内 置Python2 Python3 以及 binwalk 可以正常使用。至此 安装结束。

由于众所周知的原因,各大发行版默认的软件源在中国大陆的访问速度是龟速。

可以 ​ 清华大学的 Ubuntu 镜像源

进入 WSL 的几种方式

windows 中执行 linux 命令

对于上面的3种方法,可以在终端中附加要执行的命令

  • <distroname> -c [command]
  • bash -c [command]
  • wsl [command](不再需要指定-c只需输入您的命令

使用更专业的终端模拟器。Windows 这个控制台窗口就是很多人讨厌它的原因之一,难用又难看。推荐的终端模拟器有

  • wsl-terminal 专门为 WSL 开发的终端模拟器,基于 mintty 与 wslbridge,稳定易用。
  • ConEmu 是 Windows 上的老牌终端模拟器,功能极为强大,要啥有啥。
  • Hyper 是基于 Electron 的跨平台终端模拟器,好看和可扩展性是卖点,BUG 不少。
  • cmder 是适用于 Windows 的便携式控制台模拟器

Windows 与 linux 相互操作

Windows 下的所有盘符都挂载在 WSL 中的 /mnt 目录下,可以直接操作。WSL 中的所有数据则存放于 C:Users{你的用户名}AppDataLocalPackages{Linux发行版包名}LocalState ootfs 目录中(不要在 Windows 中修改这些文件,这会造成文件权限错误

 

可以在 Windows 命令行中直接调用WSL中的命令:PS C: emp> wsl ls -al
也可以在WSL中直接启动Windows应用:$ notepad.exe "C: empfoo.txt"
还可以通过pipes与Windows程序通信:$ cat foo.txt | clip.exe 复制内容至 Windows 剪贴板
甚至可以把 Windows 命令和 WSL 命令混着用
        window 中执行 PS> ipconfig | wsl grep IPv4
        linux 中执行 $ ipconfig.exe | grep IPv4 | cut -d: -f2
        linux 中执行 $ ls -al | findstr.exe foo.txt
        linux 中执行 $ cmd.exe /c dir

同时,WSL 与 Windows 共享网络栈,也就是说你可以

  • 在 WSL 中启动 web server,在 Windows 上使用浏览器访问
  • 在 Windows 下启动 MySQL/Redis 服务器,在 WSL 中连接
  • 诸如此类。

如果你对 WSL 与 Windows 之间互操作的原理有兴趣,可以参考一下这些文章

  • WSL interoperability with Windows
  • Windows and Ubuntu Interoperability

管理工具:宝塔面板、Webmin

DrvFs 文件权限问题

虽然 WSL 中可以直接访问 Windows 磁盘的内容,但如果你曾经这么做过,你应该对这样绿油油一片的 ls 不会感到陌生。为什么 NTFS 文件系统中的文件到 WSL 下权限就全部成 0777 了呢

这主要是 DrvFs 中 Linux 文件权限的实现导致的。

在 WSL 中,Microsoft 实现了两种文件系统,用于支持不同的使用场景

  • VolFs

    着力于在 Windows 文件系统上提供完整的 Linux 文件系统特性,通过各种手段实现了对 Inodes、Directory entries、File objects、File descriptors、Special file types 的支持。比如为了支持 Windows 上没有的 Inodes,VolFs 会把文件权限等信息保存在文件的 NTFS Extended Attributes 中。记得我上面警告过你不要在 Windows 中修改 WSL 里的文件吗?就是因为 Windows 中新建的文件缺少这个扩展参数,VolFs 无法正确获取该文件的 metadata,而且有些 Windows 上的编辑器会在保存时抹掉这些附加参数。

    WSL 中的  使用的就是 VolFs 文件系统。

  • DrvFs

    着力于提供与 Windows 文件系统的互操作性。与 VolFs 不同,为了提供最大的互操作性,DrvFs 不会在文件的 NTFS Extended Attributes 中储存附加信息,而是从 Windows 的文件权限(Access Control Lists,就是你右键文件 > 属性 > 安全选项卡中的那些权限配置)推断出该文件对应的的 Linux 文件权限。所有 Windows 盘符挂载至 WSL 下的  时都是使用的 DrvFs 文件系统。

由于 DrvFs 的文件权限继承机制很微妙,最后导致的结果就是所有文件的权限都变成了 。而且由于早期的 DrvFs 不支持 metadata,所以你无法给这些文件 chown/chmod,只能对着绿油油的  干瞪眼。不过好消息是,Windows Insider Build 17063 之后,DrvFs 也像 VolFs 一样支持给文件写入 metadata 了。

要启用 DrvFs 的 metadata 支持,你需要添加参数重新挂载磁盘

 

不过如果仅仅是执行了这个,虽然支持了文件权限的修改,但磁盘下的文件权限默认依然还是 ,除非你给它们整个  一遍。如果你不想这么做,也可以指定其他的 mount 参数

 

这样磁盘下的文件的默认权限就是 , 也不会再是绿油油一片啦。

 不过每次使用时都要重新挂载未免也太烦,我们可以通过另一个新特性 Automatically Configuring WSL 实现自动挂载。在 WSL 中创建 ,在其中填写如下内容

 

重启终端,所有的盘符就会使用上面的配置自动挂载啦(可以使用  查看)。

另外,如果你想要给不同的盘符设定不同的挂载参数(上面的方法对所有盘符都有效,如果你想在 WSL 中运行 Windows 下的应用程序,就得每次都  一下,所以我一般都会把  排除掉,就需要手动修改 。首先确保  中的  为 ,然后编辑 ,添加如下内容

 

其他关于 WSL 的折腾

虽然 Microsoft 开发 WSL 出来主要是着重于命令行环境的使用,但经过测试,WSL 是可以通过 X Server 执行 GUI 应用程序的,甚至还可以在 WSL 里面用 Wine 执行 Windows 程序……(?

也有人试过在 WSL 中运行完整的 DE,体验似乎还不错,有兴趣的同学可以去试试。

另外,你也可以通过某些神秘的方法用上 Microsoft Store 未提供的 Linux 发行版,比如 Arch Linux。

如果你对 WSL 的底层实现有兴趣,也可以去围观一下 WSL 的官方博客

  • https://blogs.msdn.microsoft....
  • https://blogs.msdn.microsoft....

总结

虽然 WSL 很不错,但是其比起真正的 Linux 系统还是有很多不足(Docker 等涉及未实现的内核特性的软件无法使用,Raw socket 相关的操作依然容易出错,I/O 性能相比之下较为孱弱等)。如果日常开发中需要使用到那些 WSL 未提供的 Linux 特性,那么还是乖乖跑 VM 或者装 Linux 吧。

你可能知道 Git 是什么。它是由 Linux 创建者 Linus Torvalds 开发的版本控制系统。Git for Windows 是一组工具,能让你在命令行和图形界面中使用 Git。Git for Windows 中包含的工具之一是 Git Bash。

Git Bash 为 Git 命令行提供了仿真层。除了 Git 命令,Git Bash 还支持许多 Bash 程序,如 ssh、scp、cat、find 等。

官网
Cygwin 速查表

Cygwin 提供功能了大量 GNU 和开源工具,可以在 windows 上体验 linux 命令。 cygwin1.dll 提供了大量的 POSIX API功能。

相信各位都听说过鼎鼎大名的 Cygwin。同样是能让 Linux 应用程序运行在 Windows 上,WSL 和 Cygwin 有什么不同呢?其实差别还是挺大的。

虽然 Cygwin 提供了完整的 POSIX 系统调用 API(以运行库  的形式提供,但其依然工作在 User Mode;而 WSL 中的 Linux 应用程序进程会被包裹在一个叫做 Pico Process 的东西里,这个东西里发出的所有系统调用请求都会被直接送往 Kernel Mode 中的  与  处理。

同样是将 POSIX 系统调用转换为 Windows 中的 API,Cygwin 是转换成 Win32 API 的调用(因为它架设在 Win32 子系统上,很多内核操作受限于 Win32 的实现,比如 ,而 WSL 则是转换为更底层的 NT API 调用(WSL 是与 Win32 平行的子系统,直接架设在 NT 内核上,可以通过 NT API 原生实现  等系统调用)。

WSL 架构示意图https://blog.jessfraz.com/post/windows-for-linux-nerds/ 

最重要的一点:如果使用 Cygwin,Linux 应用程序的源码必须 link 至 Cygwin 运行库修改源码重新编译后才能在 Windows 下运行。这些重新编译后的 Linux 应用程序在调用 POSIX API 时不会直接去请求内核,而是会去调用 Cygwin 运行库,由运行库翻译成 Win32 API、执行调用后返回结果。这也就意味着,重新编译后的应用程序需要依赖 Cygwin 运行库才能正常运行(有时候你会碰到的「缺少 」报错就是这个原因,而且这样编译出来的可执行程序是纯正的 Win32 PE 格式封装,只能在 Windows 上运行。Cygwin 目录下,被编译成 Win32 可执行程序的 Linux 应用程序们。

 而在 WSL 下,可以直接运行未经任何修改的 ELF 格式 Linux 可执行程序。

总结:WSL 就像是一个翻译官,就算那些未经修改的 Linux 应用程序们操着一口纯正的 POSIX 系统调用语法,WSL 也能快速准确地将其翻译为 NT 内核能听懂的 API 调用;而那些使用了 Cygwin 重新编译后的 Linux 应用程序,就像是改造人一样变成了 Win32 应用程序的形状,还被套了个翻译机。程序自己(源码中)说的是 POSIX,经过翻译机(Cygwin 运行库)之后就变成 Win32 API 调用了,这样 NT 内核也能听得懂。但是每次添加新程序都要改造,多麻烦啊,还是 WSL 原生态更健康(笑)。

另一种方法是使用虚拟化软件并在其中安装 Linux。这样,你可以在 Windows 中安装 Linux 发行版(带有图形界面)并像常规 Windows 应用一样运行它。

  • github:GitHub - rmyorston/busybox-w32: WIN32 native port of BusyBox.
  • busybox.exe 官网、下载:busybox-w32

BusyBox 是一个包含 许多常见的Unix工具。它经常出现在嵌入式Linux系统中。 像路由器、安卓智能手机、Linux 容器和任何地方 否则,拥有一组紧凑的Unix命令行工具会很方便。

busybox-w32 是 BusyBox 到 Microsoft Windows WIN32 API 的端口。 它将 BusyBox 功能的一个子集带到 Windows 中 单个自包含本机可执行文件。

这个版本的 BusyBox 实现了一百多个 Unix 风格的命令。 其中一些比较重要:ash、awk、sed、vi、find、grep 等。。。

如果您需要 bash 或其他 GNU 实用程序的全部功能,busybox-w32 可能不是你想要的:Cygwin,Gow或UnxUtils可能是 更合适。但是,如果您需要提供一些 shell 脚本 您的软件,或者如果您需要在Windows上运行一些随机的Unix实用程序 busybox-w32 可能是一个紧凑的替代方案。完整的可执行文件更少 比Cygwin设置程序的一半大

powershell 可以执行一些 linux 命令

From:终端利器 Cmder:https://www.e-learn.cn/topic/3885768

打开 Cmder 官网( https://cmder.app/ ,向下滚动页面找到 Download 项选择下载,下载的时候,两个版本,分别是 mini 与 full 版;唯一的差别在于有没有内建 git-for-windows 工具。cmder 完全支持Linux命令行,里面可以使用大量的 linux 命令,比如 grep、curl (没有 wget)、vim、grep、tar、unzip、ssh、ls、bash、perl 等,而且可以多开,快捷键复制粘贴,分屏等,功能非常强大。这里选择 full 版本点击下载 Cmder 压缩包,解压后,双击 Cmder.exe 即可运行。

如果每次都进入到 Cmder 目录下双击 Cmder.exe 打开,比较麻烦,有 3中方法

  • 方法 1:把 cmder.exe 所在目录添加到系统环境变量,win+r 然后输入cmder 即可。
  • 方法 2添加 cmder 到右键菜单。管理员权限的终端执行cmder.exe /REGISTER ALL
  • 方法 3创建 cmder.exe 的快捷方式把创建的 快捷方式 放到 C:WindowsSystem32之后 win+r 输入cmder 即可。

常用的功能

  • 1. Cmder 常用快捷键
            tab           自动路径补全
            ctrl + tab    切换页签
            ctrl + shift + Tab:切换到前一个窗口
            ctrl + t      建立新页签
            ctrl + w      关闭页签;
            ctrl + d      关闭窗口(不输入任何指令时可用
            ctrl + 1      快速切换到第1个页签
            ctrl + n      快速到指定编号的窗口( n值无上限)
            alt + F4      关闭所有页签
            ctr + r       历史命令搜索
            alt + enter   切换到全屏状态
            alt + shift + 1    开启 cmd.exe
            alt + shift + 2    开启 powershell.exe
            alt + Shift + 3    开启 powershell.exe (系统管理员权限)
  • 2. 可在 视窗内 搜寻 画面上 出现过的任意关键字。
  • 3. 新增 页签 按钮。
  • 4. 切换 页签 按钮。
  • 5. 锁定 视窗,让视窗无法再输入。
  • 6. 切换 视窗 是否提供卷轴功能,启动时可查询之前显示过的内容。
  • 7. 按下滑鼠左键可开启系统选单,滑鼠右键可开启工具选项视窗。 Win+Alt+P  :开启 工具选项 视窗
  • Cmder 增加了 alias 功能:可以给超长又难以记忆的指令 起一个别名,输入 alias 可以查看已有的 别名。打开安装目录 config/user-aliases.cmd 文件,直接修改。自定义 aliases:打开 Cmder 目录下的 config 文件夹,里面的 aliases 文件就是可以配置的别名文件,直接修改。
    这里将ls 命令的别名按下列方式修改,添加至文件末尾,就可以在 ls 命令下显示中文,同时增强命令并添加颜色区分。
            l=ls --show-control-chars
            la=ls -aF --show-control-chars
            ll=ls -alF --show-control-chars
            ls=ls --show-control-chars -F
  • 鼠标选中自动复制到剪切板。直接鼠标右键即可粘贴,或者使用Ctrl + v进行粘贴。
  • Ctrl + 滑鼠滚轮 可以实现主控台文字自动放大缩小。

cmder分屏功能: ctrl + t  或者 点击 右下角 + 号

分屏功能 快捷键 设置

右下角 的 三杠,然后选择 Settings ,或者 使用快捷键 Windows+Alt+p 打开 设置

解决 文字 重叠

Win + ALT + P 打开设置界面 monospce,去掉勾勾即可。

如果不行,可以把 Compress long strings to fit space 关掉。

设置编码,解决中文乱码

设置set LC_ALL=zh_CN.UTF-8    或者    set LANG=zh_CN.UTF-8

查看 git log 时乱码

在  中添加下面的语句

 

然后执行下面的命令,来配置git log的输出

 

或者在 .gitconfig 文件中配置

更多乱码问题见: https://blog.csdn.net/guiying123456/article/details/62881400

设置中文界面: 选择  General ---> Interface language ---> zh:简体中文

设为 默认 终端

setting ---> 集成 ---> 默认终端 ---> 强制使用ConEmu作为控制台应用程序的默认终端。如果允许某些程序出现错误,需要关闭此选项;比如 mkcert。

  • 图中绿色设置可以强制将注册成Windows的默认终端

    设置此选项后,系统启动后就会生效,且,即使你打开的是cmd,也会被放到cmder的窗口中执行

  • 红色选项可以解决每次关闭控制台时,弹出确认关闭的弹窗

窗口位置大小记忆:勾选这两个设置,只需要设置一次,下次会自动记住上次终端在桌面出现的位置和窗口大小

设置 vi 模式下 ESC 键最小化窗口的问题

  • 将图中红色改成除了总是的其他选项,否则使用vi时会出现无法切换模式的问题
  • 勾选绿色的选项可以解决打开多个终端任务栏显示多个窗口的问题

解决粘贴多行文本时的弹窗

例如在终端中执行多行语句,总会弹出提示,勾选选项可以解决

将命令提示改成 

默认的命令提示符是,大家都知道Linux是,这里提供一下修改的方法,并不是必须的

  • 1) 首先在的安装目录下,找到目录,然后找到文件
  • 2) 打开后可以查找下面的字段 
  • 3) 将的值替换成
 

将 Idea 的 Terminal 终端换成  

1) 在 idea 中打开其他设置界面,在 idea 中 settings 是对当前项目生效,Other Settings 是对所有项目生效

2) 修改 shell Path 的路径,替换成下面的内容

注意将 cmder 安装目录换成你的安装目录

 

3) 再次打开Terminal终端就可以使用Linux命令了

将 vscode 的 Terminal 终端设置成 cmder

1)打开设置

2) 搜索,点击打开设置json文件

3)将下面的代码粘贴到文件中,修改为自己需要的内容。注意:修改cmder的安装目录为自己的安装目录

 

4) 打开终端,就可以使用了

cmder 启动选项

默认选择的启动项应该是  这个命名任务,可以更改成其它的命令任务或者直接切换到其它的启动项。这里演示设置 PowerShell 的方法。默认的是 cmd

自定义启动目录

下面就来克隆现有的添加一个设置自定义的启动目录的任务(Task)

  • 任务参数:下面来看  "Task parameters" 命令参数,阅读实例可知参数 指定图标位置, 指定启动目录,所以我们可以添加下面的参数
  • 记得在  的 "Specified named task" 处选择 
  • 保存设置,退出,重新打开 cmder 查看效果

具体配置和使用可见:https://github.com/cmderdev/cmder 。

cmder 连接 wsl

终端模拟器 cmder 连接 WSL (Windows Subsystem for Linux,简称WSL)。操作步骤

  • 添加一个标签页时(点击右下角的 ➕,选择 
  • 或直接将启动任务指定为 

Windows系统的分区全部挂载于 Linux 子系统的  目录

 

ssh agent

ssh-agent 介绍可参考: SSH相关命令 中的 ssh-agent 部分

cmd 模式中

官方文档中有说在 cmd 模式中如何处理 ssh agent的相关问题

To start the vendored SSH agent simply call , which is in the  folder.

If you want to run SSH agent on startup, include the line  in  (usually just uncomment it).

bash模式中

官方文档中没有说,但我们可以这样解决。

在或文件中添加如下内容

 

调节背景的透明度

我调整透明度的目的是编写前端代码时可以透过cmder直接看到浏览器页面的变化,无需切换到浏览器再看变化,减少软件切换成本。其实调整好透明度可以更美观。

alias 别名机制

Cmder 增加了alias功能 它让你用短短的指令执行一些常见但指令超长又难以记忆的语法;
在其控制台输入可以查看。

1. cmd aliases

在中添加cmd aliases,它仅用于 cmd 命令

示例

 

: aliases in cmd; called from vendorinit.bat; autocreated from
.

参考:cmder/README.md at master · cmderdev/cmder

2. Bash/Mintty aliases

对于bash,其配置文件的加载顺序是

 

所以我们可以在上面的文件中添加 alias 即可。

几个示例

 

由于 Git for Windows 会自动创建 ,而对此cmder会提示有冲突,此时可以创建一个并在该文件中添加别名。(这里 表示

原本是想添加相关的别名的,但是一旦执行此命令后启动了一个子shell,在此子shell里不可以使用别名。可参考下文的ssh agent部分。(这里属于ssh代理相关问题

3.Power Shell aliases

直接使用命令添加或在下面的文件中添加

 

补充: 锁定视窗 ,可以让视窗无法再输入

Chocolatey 软件包管理系统

以管理员权限打开窗口,运行下面的语句

 

安装软件命令 ,

  • 短写是 

查询安装包是否存在 

可安装包列表

 

github

文档

x-cmd 是一个以 Unix 哲学所指导而成的 庞大有趣的工具集合。目标是将其打造成 安全、透明、强大的工具集合;它起始于 bash,却以 shawk 成形,并与一系列现代化脚本生态、开源二进制工具、云服务、AI/LLM 水乳交融。立足 Unix/Posix 环境,x-cmd 将会成为开源自由开发者的无限手套,集众智于股掌,为想像力和创造力披荆斩棘,开拓无限可能。

一句命令 使用 500+ 开源工具

一句命令 调用 AI 与云服务

一句命令 执行你的脚本,无虑依赖

x-cmd 采用 posix shell 编写,并自带一个无需 root 即可使用的包管理器。借助这个组合,x-cmd 的代码以 mod (模块) 方式组织:

  • 包装优化传统命令, 例如
    • x uname 对  的输出美化
    • x cd 对 cd 命令的增强
  • 按需下载并使用了大量非预装但极其实用的工具,并让他们交相辉映。例如:
    • x jq,不仅按需下载 jq,用户不需手动安装 jq,并且借助 fzf 强大的交互,用户便可一边修改 jq 表达式一边快速查看结果
  • 再加上 curl,x-cmd 还提供了 git,ai 及其它云服务的 CLI 模块:
    • x tldr 查看 TLDR 文档
    • x cb 访问 codeberg,x-cmd 力图在实现过程中,给用户提供一致的用户设计体验。类似的还有 x gh, x gt, x gl
    • x bwh

现在,将上述的功能相互作个乘法 -- 这个乘法,既可以是 x-cmd 不断提供的模块,也可以用户所编写的 脚本。

当前模块的派生原则是:

  • UI 化:我们对 ps,docker 命令表格输出结果进行了表格输出 的美化;而最近,我们才刚刚开始挖掘 fzf 的强大实力,这些工作可以在 x yq,x rg, x find 找到。
  • AI 化:我们计划对原有命令引入 LLM,除了用于命令的纠正,我们还试图实现更为深度的整合与探索。当前的一些成果请看 ai-llm。

安装

使用 WSL2 或者 Git-For-Windows / Git-Bash / Cygwin / Mingw

WSL2 和 Git-For-Windows 上的安装方式与 Linux 上安装方式 完全一样。

shell 下执行命令

eval "$(curl https://get.x-cmd.com)"
eval "$(wget -O- https://get.x-cmd.com)"

x.bat -- 为 Windows 用户增设的 安装/启动 模式

如果你没有 Git-Bash,也没有 WSL2,可以 点击这里 下载 x.bat 脚本。

下载后,双击打开该bat脚本,会自动按需下载安装 git-for-windows,打开 git-bash,并在上面安装 x-cmd,安装之后,你仍可以把 x.bat 放在桌面。以后双击打开,即可快速启动带有 x-cmd 的 git-bash。该 BAT 脚本的功能如下:

  1. 检查环境是否有 Git-Bash
    1. 如果有,直接进入第二步
    2. 如果没有,就下载一个最新版本的 Git-Bash
  2. 检测是否在用户目录安装了 x-cmd
    1. 如果有,直接进入第三步
    2. 如果没有,使用 Git-Bash 来安装 x-cmd,并配置好启动 bash 时即加载 x-cmd
  3. 打开 Git-Bash,此时 x-cmd 已加载。

使用 Windows 的 WSL2 提供了近乎完美的 Linux 体验,就如同在原生 Linux 系统上一样,x-cmd 在上面的运作效率良好。

升级

方法1:执行命令 x upgrade

方法 2:重新执行安装脚本:eval "$(curl https://get.x-cmd.com)"

x ping:用于 ping 的增强模块

x man:基于 fzf 的预览增强

x gemini:使用 Gemini(双子座) AI models(模型)

x env:环境管理

x jq/x yq:快速测试JQ表达式

x osv

x theme:兼容各种Bosix Scheer主题美化

现在有 210 多个模块520 多个1200 多个安装接收

模块

X-CMD 提供的功能模块,通过  的方式调用,更多介绍请查看 => get-started

Module (模块)Function (功能)Similar items (类似条目)theme设置 shell 的主题oh-my-zsh /oh-my-bashtldrUse cases for browsable commandstldr client toolproxy

快速配置 apt、pip、npm 等下载源。

unknownz/uz根据后缀,对各种格式进行压缩和解压缩unknownpick交互式 选择percolghGitHub 交互式客户端Official Github CLI for GogtGitee 交互式客户端?ws项目 脚本 管理?env设置 脚本 运行时/开发 环境asdf/nvm/sdkman/pyenv/rbenv/...hub脚本 发布 服务?

X-CMD 收录的工具软件包,由 env 模块进行驱动管理,更多介绍请查看 => get-started

Package (包名)Official Site (官方网站)Function (功能)jq/yqjq/yqjson/ymlp7zip7zip压缩和解压缩ffmpegffmpeg音频 和 视频opensslopenssl安全加密fdfd高效替代 findrgrggrep 的高效替代品sdsd与 sed 类似,但更易于使用batbatcat 的 Rust 实现nmapnmap安全 扫描pandocpandoc文档格式转换smartmontoolssmartmontools硬盘监控工具

安装

X-CMD 收录的软件包安装方式,由 install 模块驱动,更多介绍请查看 => get-started

本文地址:https://sicmodule.kub2b.com/news/15020.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号