ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Windows 命令提示符下创建 ls?

我想在 windows 命令提示符下使用 ls 并让它运行 dir 命令。

我怎样才能做到这一点?

有些答案很有趣,但是“dir”命令到底有什么问题呢?
@MattDonnan 我只是习惯了 ls ,当我在窗户上做它时,我做了一个有趣的脸。没有了^^
@DavidHeffernan,因为它在 Windows 中不存在?
当然可以。我每天都使用它。
@aF。我使用的是 Windows 7,但我在任何 Windows 版本上运行 ls。我并不是说 Windows 自带 ls,只是说它是开源的,并且有很好的 Windows 端口,在 Windows 上运行它是微不足道的。看看 GnuWin32。

C
Cory Charlton

你可以用一个简单的命令来解决这个问题:

echo @dir %* > %systemroot%\system32\ls.bat

如果您使用的是 vista 及更高版本,请确保首先以管理员身份运行 cmd.exe


我希望我能不止一次地评价这个。工作非常出色。
这更好,因为您仍然可以使用 dir 选项。
我建议使用 dir %* 来允许通过 ls.bat 将任意数量的命令行参数传递给 dir。否则,使用 dir %1,在使用 ls 脚本时最多只能使用一个参数。
@Vartan 很遗憾您的评论是第一个低于“显示更多”阈值的评论。希望@secghost 有一天会看到这一点并修改他们的答案。我想补充一点,执行 @dir %* 也会删除多余的行,因此它与 dir 更加相同
@CaptainMan 哦,是的!完全忘记了@;使用漂亮的语法来避免输出混乱。不过,如果 Windows 符合 POSIX 标准,那就容易多了。至少我们可以做梦。
h
hmjd

你可以:

创建一个名为 ls.bat 的批处理文件并让它只包含 dir 命令

将 ls.bat 文件所在的目录添加到 PATH 环境变量中

然后,您可以从命令提示符执行 ls


为什么不将 ls.bat 放在 system32 文件夹中,这样您就不必添加 PATH
@David天宇Wong,用户很可能没有对该文件夹的写入权限。
如果您将它与 args: ls dir 一起使用,这仍然有效吗?我认为您需要修改 ls.bat 来处理 args...或者您可以尝试使用别名:superuser.com/questions/49170/create-an-alias-in-windows-xp
我喜欢:@echo off\ndir /w %1% 更接近 ls 格式
很好的答案,不应该对此发表评论;-)
s
sipickles

这是一个老问题,但记录在案:

http://gnuwin32.sourceforge.net/packages/coreutils.htm

给你 ls 和更多!


+1 ls *dir * 不做同样的事情,所以别名 dir 有点裤子。
这是最好的答案。忽略投票并执行此操作。
不要忘记将 C:\Program Files (x86)\GnuWin32\bin 添加到您的路径
v
varagrawal

我发现的最简单的方法是:

安装 Git for Windows 将 Git 的 bin 目录添加到您的 Path 变量中。我的位于 C:\Program Files\Git\usr\bin 中。启动命令提示符并享受 ls 的所有荣耀。


很好的建议,可以访问 ls 的全部功能及其所有可选参数。只是一个小小的更新,我已经安装了最新版本的 git for windows 并且 ls.exe 现在可以在 C:\Program Files\Git\ usr \bin 中找到
是的,或者只是在 git 文件夹(而不是 cmd)中启动 bash.exe 并享受 ~complete shell(使用 ls)。
git bash 是可怕的,我喜欢路径选项
C
Community

我有一个解决方案,但它很脏:

创建一个名为 ls.bat 的文件,其中只包含“dir”。

将它放在 C:\windows\system32(或 PATH env var 中的任何目录)中。

那(应该)有效!

编辑:更一致的东西:https://superuser.com/questions/49170/create-an-alias-in-windows-xp


d
dthree

如果您的系统上安装了 Node.js,则可以从 Cash 安装它,这是我为 Windows 上的 Linux 命令编写的一个库:

npm install cash-ls -g

Windows 上 linux 用户的最佳解决方案,npm install cash-global -g。也可以将 ls -l 添加为 ll (LL)。
它的救世主伴侣
b
buster

Vista/7 的 Windows 命令提示符将允许 NTFS 符号链接,然后以管理员身份运行 cmd.exe:

mklink ls %System%\dir.exe

然后设置您的 PATH 环境变量以包含您刚刚创建的链接的位置。

如果您想要的不仅仅是“ls”命令,您应该查看 cygwin

编辑 - 刚刚意识到 dir.exe 不是一个单独的程序,所以这实际上不起作用。但是 mklink 和 cygwin 是值得了解的好东西。


+1,我忘了说那是 windows xp 但这对 windows vista/7 有好处 :)
C
Community

如果您只想让 cmd 将 ls 识别为 dir 的别名,您可以使用 doskey 命令(来自 this answer on superuser)。

这不会改变 dir 命令的原始命令行参数处理。


C
Community

我的 ls.bat 在下面

@dir %*

可以传输cli args

ls /b
ls /w

将它放在 %windir% 或 %PATH% 变量中的任何目录中。

只需确保使用 ANSI 编码保存文件即可:)


C
Community

上面帖子中的 +1 建议安装 git for windows 并将目录 bin 添加到路径变量中。

我在 Windows 8 和 Windows 7 机器上的 cmd.exe 中获得 touch、ls 和许多其他 UNIX 命令的另一种方式。

转到以下站点安装 Cygwin

https://www.cygwin.com/install.html

为您的系统安装 32 位或 64 位版本。默认设置和软件包应包含您需要的内容,因此您无需在进入软件包屏幕后进行任何更改。

安装后,将 Cygwin 文件夹路径复制到您的环境路径变量中。例如;如果您将 cygwin 安装到 C:\Cygwin,您将在您的环境系统路径变量中添加以下内容:

;C:\Cygwin\bin

在我的系统上,我安装了 64 位版本,默认文件夹名称和路径是 C:\cygwin64。所以我在我的系统环境路径变量中添加了以下内容:

;C:\cygwin64\bin

如果终端打开,请重新启动它。然后输入 ls 你会看到一个目录列表。

如果您不熟悉设置 PATH 环境变量,请参阅以下内容:

Superuser Link 1

Superuser Link 2


N
Nerdtron

您也可以使用 cygwin 并直接使用 ls 命令以及您可能习惯的所有其他 unix 命令行工具。


C
Community

我推荐以下食谱。

使用 DOSKEY 和 $* 创建你的 ls 命令。通过将命令记录在 .bat/.cmd 文件中来使命令持久化,并将文件的路径添加到注册表。

例如,您的命令可能看起来像
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$* 对于接受参数的命令很有用。例如,在这里我喜欢能够做到sublime my_code.c

cmd 的注册表位于 HKEY_CURRENT_USER ->软件 ->微软->命令处理器。使用文件(不是包含文件夹)的完整路径创建一个名为 AutoRun 的字符串值条目,例如 %USERPROFILE%\custom_command.cmd。然后每次运行 cmd 时,都会加载你的命令!

您也可以在批处理文件中添加更多有用的东西。有关示例模板,请参阅 here


E
Evan

另一个对我有用的解决方案是使用 UnxUtils,它从可执行文件(包括 lssedgrep)中添加多个实用程序。

要使用:下载 source code。解压缩。将 UnxUtils\usr\local\wbin 路径添加到 Windows PATH 变量。启动一个新的 CMD 实例。


佚名

最简单的方法是

安装 git

将 C:\Program Files\Git\usr\bin 添加到路径变量

现在您可以使用 ls


d
docowhocool

当然 ls 不能作为批处理的 unix 命令工作。如果您检查 %1 的 -l 或 -a 等以及它们的所有组合,它将起作用...


j
jred_kai

您可以遵循本指南:https://gist.github.com/vladikoff/38307908088d58af206b

TL;DR:将 /K path/to/custom/init_cmd.bat 传递给您的“shell 启动”命令。

我使用 ConsoleZ 作为我的 shell 包装器,所以在我的情况下,我可以在“选项卡”中找到设置选项,然后我将 shell 路径设置为 "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" like this

其中 C:\cmd_init.bat 是包含我的宏的批处理脚本,这就是我想要的:

@echo off

doskey ls=dir /b
rem other macro stuff..

抱歉格式和其他错误,这是我第一次在这里回答。我希望它有帮助!


A
A. Markóczy

使用 Linux 子系统 for Windows 的人可以从 Linux bash 调用 ls。以下命令在 System32 中创建 ls 命令:

echo @bash -c "ls %*" > %systemroot%\system32\ls.bat

(必须先启用/安装 Linux 子系统功能)


B
Bk01

使用 doskey 键在 .bat 或 .cmd 文件中创建别名:

@echo off
title "ls command cmd bar"
doskey ls=echo off $T dir $* $T echo on

享受 =)


N
Nathan Tuggy

这是我的C# source code and binary

只需在某处添加 ls.exe 并将路径添加到路径环境变量。

https://i.stack.imgur.com/5wVcu.png


二进制文件是不必要的。只需使用符号链接或 bat 文件。