如何在 (Gentoo) Linux 上的 PowerShell 中默认启用常用实用程序的颜色?

如何在 (Gentoo) Linux 上的 PowerShell 中默认启用常用实用程序的颜色?

我目前正在运行 Gentoo Linux 并安装了 PowerShell (应用程序 shell/pwsh-bin)因为我是一个逆向投资者。

话虽如此,运行某些命令时我无法默认获取颜色。取lsgrep。当运行lsgrep在普通 shell(例如 bash)中时,默认情况下我会得到彩色输出。当运行ls或在 PowerShell 中时,我必须使用或grep手动调用这两个命令来获取颜色。话虽这么说,诸如此类的命令在 PowerShell 中默认具有颜色(尽管 emerge 不起作用,这是另一个问题)。ls --colorgrep --coloremerge

我想知道我必须做什么才能确保这些命令具有颜色。也许 PowerShell 不使用默认实用程序,而是定义ls为自己的命令的别名。但我不知道如何使用这些信息来解决我的问题。

编辑:提供的答案并不能真正解决我的问题。虽然我现在跑步时有颜色ls,但跑步时我没有颜色grep。此外,我在提供的配置文件中遇到了很多错误,大致如下:

Set-Alias: /home/jj/.config/powershell/Microsoft.PowerShell_profile.ps1:2 Line | 2 | set-alias cd set-location | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The AllScope option cannot be removed from the alias 'cd'.

答案1

ls和PowerShell 使用的二进制文件与grep其他 shell 使用的二进制文件相同。在我的本生实验室铍 (Deb 11) 中,这些是/usr/bin/ls/usr/bin/grep。着色是用 中的别名定义的.bashrc

alias grep='grep --color=auto'
alias ls='ls --color=auto'

等中定义的别名.bashrc不会传递到 PS 会话。然而 PS 有$profile- 文件(参见微软“自定义您的环境并添加特定于会话的元素”。要查找配置文件,只需$profile在 shell 中键入即可。在我的系统中默认是~/.config/powershell/Microsoft.PowerShell_profile.ps1,但安装后该文件不存在。 MS 链接包含如何创建一个的说明,但我没有遵循 - 我只是创建了目录并写入了文件。

研究完这个主题后,最简单的方法是混叠中的命令$profile与定义函数相结合。我最终将此作为我的$profile

if ($host.Name -eq 'ConsoleHost')
{
    function ls_col { & '/usr/bin/ls' --color=always $args }
    Set-Alias -name ls -Value ls_col -Option AllScope
    function grep_col { & '/usr/bin/grep' --color=always $args }
    Set-Alias -name grep -Value grep_col -Option Allscope
}

... 和ls和 的grep颜色与我的 Bash 会话中的颜色相同。

Allscope-选项解释这里

注意 - 这只是快速而肮脏的测试,而不是彻底和详尽的操作方法。这些链接应该有助于进一步推进这一点。更多知识渊博的人可能会纠正我:-)

相关内容