but*_*j10 12 linux powershell ls
我不经常使用 Powershell 或 Linux,所以我不确定: ls -al 在 Powershell“术语”中是什么。我试图找到一些东西,但它说 Powershell 中没有等效的命令。看起来很奇怪,所以我想我应该尽快问一下。
mkl*_*nt0 19
您正在使用的 Unix 实用程序选项ls:
-a选项包括隐藏项目,在类 Unix 平台上是文件系统项目,其名称以.
-l请求所谓的长格式,它生成表格输出,其中包括文件系统项目的模式、用户和组所有权、上次写入时间戳、项目大小及其名称。
PowerShell等效项是:
Get-ChildItem -Force
Run Code Online (Sandbox Code Playgroud)
Get-ChildItem的-Forceswitch在输出中包含隐藏ls项目 - 尽管与 with 不同,表示目标目录本身及其父目录的.和条目不包括在内(这使其相当于更有用的选项)。..-A ls
默认情况下使用相当于长格式的格式化;相反,如果您仅对文件名(相对路径)感兴趣,请使用该开关。-Name
注意:默认情况下,Get-ChildItem目标是当前位置(目录);要显式指定输入路径,请使用参数-Path- 对于通配符模式 - 或-LiteralPath参数 - 对于文字(逐字)路径。第一个位置参数(不以参数名称为前缀)隐式绑定到-Path; 例如,以下命令针对当前用户的主目录:
Get-ChildItem -Force -LiteralPath $HOME
Run Code Online (Sandbox Code Playgroud)
请参阅底部部分以缩短此命令并定义一个方便的“别名”(函数)。
然而,和 之间有一个根本区别:lsGet-ChildItem
ls输出格式化文本,因此通常不鼓励解析其输出。
在 PowerShell 中,格式与数据分离,输出的是对象,而不是字符串。
Get-ChildItemSystem.IO.FileInfoSystem.IO.DirectoryInfo例如,表达式(Get-ChildItem -Force).FullName输出当前目录中所有项目的完整路径。
为了交互方便(您不应该在脚本中这样做),您可以使用内置别名和明确的参数名称前缀来缩短命令:
gci -fo
Run Code Online (Sandbox Code Playgroud)
gci是 的内置别名Get-ChildItem,其名称遵循 PowerShell 的命名约定,其中每个所谓的已批准动词也有一个已批准的 1-2 个字母别名形式;运行Get-Verb Get显示批准的Get动词的别名形式是g; 虽然名词部分没有正式规定,但记住 thatci代表的意思ChildItem应该很容易。
-fo是明确引用开关的最短参数名称前缀-Force(单独-f也可以引用-Filter[1])
-hfor-Hidden或-adfor -Directory,但-Force实际上没有。要查看为给定命令定义的所有Get-ChildItem别名(在此示例中):
PS> Get-Alias -Definition Get-ChildItem
CommandType Name Version Source
----------- ---- ------- ------
Alias dir -> Get-ChildItem
Alias gci -> Get-ChildItem
Run Code Online (Sandbox Code Playgroud)
要将输出限制为内置别名,即排除其他模块或$PROFILE脚本定义的别名,请运行pwsh -noprofile { Get-Alias -Definition Get-ChildItem }(在 Windows PowerShell 中,使用powershell而不是pwsh.
ls是另一个内置别名。
这是PowerShell 是仅限 Windows 的 shell 时的遗留别名,最好避免:
一般来说,别名优先于同名的外部程序,并且隐藏(覆盖)平台的标准命令行实用程序并不是一个好主意;虽然这不适用于lsWindows 上的别名,但在其他情况下却适用,即where(shadows where.exe) 和sc(Windows PowerShell-only, Shadows sc.exe)
具体来说,考虑到真正的lsUnix 实用程序Get-ChildItem具有如此巨大的不同语法(和行为),将后者暴露为ls可能会引起混乱。
因此,建议坚持使用PowerShell命令名称缩写形式的别名,例如gciforGet-ChildItem和gcforGet-Content。虽然这最初并不能帮助从ls/dir和 等熟悉的名称进行转换cat,但 PowerShell cmdlet 名称及其缩写别名是系统化且基于约定的,这一事实使得以后更容易记住它们。
使用预设参数定义一个方便的“别名”function:
POSIX 兼容的 shell,例如允许您使用预设bash参数定义别名,例如alias ll='ls -al'
相比之下,PowerShell 中的别名仅仅是名称映射,您需要声明一个函数(您可以将其添加到$PROFILE文件中以便在将来的会话中使用):
# Equivalent of bash alias `alias ll='ls -al'`
function ll { ls -al @args }
Run Code Online (Sandbox Code Playgroud)
或者,基于以下的类似gcih函数(h表示隐藏Get-ChildItem) :
function gcih { Get-ChildItem -Force @args }
Run Code Online (Sandbox Code Playgroud)
有关 PowerShell 中别名与函数的更多信息,请参阅此答案,包括如何创建更复杂的包装函数。
[1]从概念上讲,它也可以指-File参数,但从技术上讲,后者是一个动态参数,特定于 PowerShell 的文件系统提供程序,因此在歧义性检查期间不会被考虑。
| 归档时间: |
|
| 查看次数: |
40036 次 |
| 最近记录: |