You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中为ls -lrt设置别名且不破坏原有ls别名

在PowerShell里直接用New-Alias创建带空格和参数的别名是行不通的——因为PowerShell的别名规则很明确:别名名称不能包含空格,而且只能指向单个命令(或另一个别名),没法直接绑定带管道、参数的完整命令序列。这就是你之前的命令无效的原因。

接下来给你两种不破坏原有ls别名的解决方案,按需选择:

方案1:创建独立的函数+别名(简单直接)

如果你不想改动原有ls的任何行为,只是想新增一个类似ls -lrt的快捷方式,可以先定义一个实现目标功能的函数,再给它起一个简洁的别名:

# 定义实现排序功能的函数
function Get-SortedChildItemByTime {
    Get-ChildItem | Sort-Object -Property LastWriteTime
}

# 给函数起一个好记的别名,比如llrt(类似Linux里的ll)
New-Alias -Name llrt -Value Get-SortedChildItemByTime

之后只要敲llrt,就能得到按最后修改时间排序的文件列表,原来的ls依然保持原样,完全不受影响。

方案2:扩展ls的功能,支持-lrt参数(更贴近Linux习惯)

如果你习惯了Linux里ls -lrt的写法,想让PowerShell里的ls也能识别-lrt参数,同时保留原有ls的所有功能,可以定义一个同名函数覆盖原别名(PowerShell中函数优先级高于别名,所以不会破坏原命令):

function ls {
    [CmdletBinding()]
    param(
        # 接收所有未定义的参数,传给原Get-ChildItem
        [Parameter(ValueFromRemainingArguments=$true)]
        $RemainingArgs,
        # 定义-lrt开关参数
        [switch]$lrt
    )

    if ($lrt) {
        # 如果带-lrt参数,执行排序后的结果
        Get-ChildItem @RemainingArgs | Sort-Object -Property LastWriteTime
    } else {
        # 否则执行原Get-ChildItem的功能,保留所有原有参数支持
        Get-ChildItem @RemainingArgs
    }
}

这样一来:

  • 敲ls:和原来完全一样,执行Get-ChildItem
  • 敲ls -lrt:得到按最后修改时间排序的列表
  • 敲ls -Recurse -Filter *.txt:依然保留原Get-ChildItem的所有参数功能,不受影响

让设置永久生效

上面的设置只是当前会话有效,如果想每次启动PowerShell都生效,把对应的函数/别名代码添加到你的PowerShell配置文件里:

  1. 打开配置文件:
    notepad $PROFILE
    
  2. 将代码粘贴进去,保存关闭
  3. 下次启动PowerShell时,设置就会自动加载

内容的提问来源于stack exchange,提问作者Brian Cross

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:25:46