如何在PowerShell中替换ls默认映射的Get-ChildItem为eza命令?
解决PowerShell 7替换
ls为eza的问题 问题1:New-Alias提示别名已存在
ls是PowerShell内置的只读别名,直接用New-Alias创建会触发报错。先强制删除原有只读别名,再创建新别名即可:
# 删除内置的ls只读别名 Remove-Alias -Name ls -Force # 创建指向eza的新ls别名 New-Alias -Name ls -Value eza.exe
问题2:定义ls函数仍调用Get-ChildItem
你之前的函数参数写法存在问题,再加上内置别名未删除时PowerShell会优先调用别名,导致函数不生效。以下是两种修正后的函数写法:
写法1:支持传递所有参数(灵活适配eza额外参数)
function ls { eza.exe -lab --group-directories-first --git --icons $args }
这种写法可以让你直接传递eza的其他参数,比如ls --tree也能正常执行。
写法2:指定路径参数(带默认值)
function ls { param( [string]$Path = "." # 默认使用当前目录 ) eza.exe -lab --group-directories-first --git --icons $Path }
让修改永久生效
如果希望每次打开PowerShell都自动生效,把删除别名+创建函数/别名的命令放到PowerShell配置文件中:
- 打开配置文件:
notepad $PROFILE - 粘贴对应命令并保存,重启PowerShell即可。
内容的提问来源于stack exchange,提问作者Madoka
相关产品推荐
相关产品推荐

