前言
很多人在吐槽 Windows 的命令行不好用,事实的确如此。但是,批评 Windows 命令行功能不强大,我不认同。本文将持续更新,介绍一些常见的 Linux 命令功能在 Windows 环境的等价实现。
ls
Linux 的 ls
命令很强大,也很美观,在 Windows 里一种十分勉强的实现方式是
dir /b
但是这样区分不出文件和文件夹,可以用 dir /b /ad
列出文件夹,用 dir /b /a-d
列出文件。Linux 的 ls
可以分列,这个功能在 Windows 可以用 PowerShell
的 Format-Wide
实现。
然后需要实现的是用不同颜色区分文件和目录我粗略的写了一个程序(Github Project) 勉强实现了分列显示和用颜色区分文件和目录,其实调用 Windows 的 API 完全可以写出一个和 Linux 的 ls
一模一样的程序来。但是 Windows 的用户已经习惯右键查看文件属性,因此没人去写这个程序。
需要强调的是,从 dir /?
可以看出,这个命令的功能很完整,只是输出的结果不好看而已。
pwd
查看当前目录的完整路径,等价
cd
或者
echo %CD%
realpath
查看文件的完整路径
echo %CD%\<filename>
或者
forfiles /M <filename> /c "cmd /ce echo @path"
遍历指定类型文件
例如:以完整路径列出所有txt文件
forfiles /S /M *.txt /c "cmd /c echo @path"
或者
for /r . %i in (*.txt) do echo %i
相对路径则是
forfiles /S /M *.txt /c "cmd /c echo @relpath"
使用 for
命令也可以实现,但不如上面这条命令简单。这个功能我遇到的使用场景是需要把工程目录的所有 Verilog 源文件列举出来生成文件列表给仿真器使用。Linux 里使用 find
可以做到。