ls 命令是 Unix 和类 Unix 的操作系统中列出文件和目录的命令,Windows 中(cmd 命令提示符)是不支持的,它对应的命令是 dir,不过2006年发布的 Windows PowerShell 已经可以使用 ls 命令了。
Windows Powershell 的 ls 命令和 Linux 是有差异的。比如:
- 文件系统和目录分隔符的差异:Windows PowerShell 使用字母驱动器和反斜杠
,而 Linux 使用树状结构和正斜杠
/
。 - 大小写敏感性的差异:Windows PowerShell 不区分大小写,而 Linux 区分大小写。
- 选项和参数的差异:Windows PowerShell 和 Linux 支持的选项和参数不同。例如,
-Recurse
(Powershell) 和-R
(Linux),-Force
和-f
,-Hidden
和-a
等。
ls -l
命令在 Linux 中是用来列出文件和目录的详细信息,包括权限、所有者、大小、修改时间等,也可以直接使用快捷命令 ll
。
Powershell 中就没有这个参数,不过可以通过组合命令来实现差不多的效果:
代码语言:javascript复制ls -Path ./ | ft Name, Mode, Length, LastWriteTime
该命令会列出当前目录下的文件和目录的名称、模式(权限)、长度(大小)和最后修改时间。实现下面的效果:
每次要输入这么长的命令,简直要命。这里要用到 PowerShell 的 function 用法:
function 是用来创建可重复使用的代码块,可以指定一个名称,可以有任意数量的参数,可以返回一个或多个值。
语法:
scope
可选,表示 function 的作用范围;
name
function 的名称;
parameter
function 的参数,可以有多个,可以指定类型;
statement list
function 要执行的代码,可以分为 begin
, process
, end
和 clean
四个部分,分别表示在处理输入之前、处理每个输入、处理输入之后和清理资源时要执行的代码。
function [scope:]<name> [ ( [type]$parameter1 [, [type]$parameter2])] { begin {<statement list>} process {<statement list>} end {<statement list>} clean {<statement list>} }
或者
代码语言:javascript复制function [scope:]<name> { param ( [type]$parameter1 [, [type]$parameter2]) dynamicparam {<statement list>} begin {<statement list>} process {<statement list>} end {<statement list>} clean {<statement list>} }
function 可以在 PowerShell 中直接定义和调用,也可以保存在一个脚本文件或模块中,以便在其他地方使用。
function 可以像 cmdlet 一样使用通用参数和风险管理参数,也可以使用 return 关键字来返回一个值。
示例:
我要用 ll
命令实现上面的效果,可以这样写:
function ll($path) {ls -Path $path | ft Name, Mode, Length, LastWriteTime}
也可以简写成:
代码语言:javascript复制function ll($path) {ls $path | ft Name, Mode, Length, LastWriteTime}
配置文件地址:C:Users<userName>DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
,没有的话新建一个。
更多扩展配置&脚本文件可以参考我之前写的文章:Powershell增强:命令补全、主题美化及Git扩展保姆级教程
分享一些 Powershell ls 命令的常用属性:
-Path
:列出文件和目录的路径。
例如,列出 D:w3h5Config 目录下的文件和目录。
代码语言:javascript复制ls -Path 'D:w3h5Config'
-Filter
:列出文件和目录的过滤条件。
例如,列出 D:w3h5 目录下的所有扩展名为 .txt 的文件。
代码语言:javascript复制ls -Path 'D:w3h5' -Filter '*.txt'
-Recurse
:递归地列出子目录中的文件和目录。
例如,列出 D:w3h5 目录及其所有子目录下的文件和目录。
代码语言:javascript复制ls -Path 'D:w3h5' -Recurse
-Force
:包括隐藏或受保护的文件和目录。
例如,列出 D:w3h5 目录下的所有文件和目录,包括隐藏或受保护的。
代码语言:javascript复制ls -Path 'D:w3h5' -Force
-Name
:列出文件和目录的名称。
例如,列出 D:w3h5 目录下的所有文件和目录的名称。
代码语言:javascript复制ls -Path 'D:w3h5' -Name
当然,我只是个简单的举个例子,提供一个思路,你可以扩展更多功能,让自己的 Powershell 更加强大好用。
参考文献:
Get-ChildItem
本文部分文献整理得益于 ChatGPT 和 微软 New Bing。
未经允许不得转载:w3h5-Web前端开发资源网 » Windows中使用Unix命令ls -l及快捷命令ll实现