我目前正在运行 Gentoo Linux 并安装了 PowerShell (应用程序 shell/pwsh-bin)因为我是一个逆向投资者。
话虽如此,运行某些命令时我无法默认获取颜色。取ls
或grep
。当运行ls
或grep
在普通 shell(例如 bash)中时,默认情况下我会得到彩色输出。当运行ls
或在 PowerShell 中时,我必须使用或grep
手动调用这两个命令来获取颜色。话虽这么说,诸如此类的命令在 PowerShell 中默认具有颜色(尽管 emerge 不起作用,这是另一个问题)。ls --color
grep --color
emerge
我想知道我必须做什么才能确保这些命令具有颜色。也许 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-选项解释这里。
注意 - 这只是快速而肮脏的测试,而不是彻底和详尽的操作方法。这些链接应该有助于进一步推进这一点。更多知识渊博的人可能会纠正我:-)