PowerShell 学习笔记 - 1 PS Core 基础

PowerShell 学习笔记 - 1 PS Core 基础

本章主要探讨 PowerShell 核心,主要基于 Linux 平台上的 PowerShell Core 实现,实际上于 Windows PowerShell 平台上进行的实验获得的结果也不会有太大区别:

# 运行容器
C:\Users\chuny>docker run -it --name ps-test-base mcr.microsoft.com/powershell:centos-7
PowerShell 6.1.0
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /> $PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
6      1      0


PS /> $PSVersionTable.OS
Linux 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:55:56 UTC 2018

学习一门 Shell 首先要从记忆他的命令(族)做起,但 UNIX Shell 及其历史演进中的开源化特质,使得 Linux 内 bash 可调用项的命名系统支离破碎,以如下二进制为例:

  • ls / wc:源于两个简写 list 与 word count
  • uname:源于系统调用 uname()
  • date:源于非缩写的英文单词 date
PS /> ls |wc -l
19
PS /> uname
Linux
PS /> date
Sun Sep 16 06:59:33 UTC 2018

三个常用二进制的命名源于三种不同的模式,非 UNIX 专业户单单从这些名字上就可能会产生恐惧感。

Windows 世界内,通过原住民 CMD 调用的原生应用命名也有异曲同工之妙:

C:\Users\chuny>taskmgr.exe

C:\Users\chuny>calc.exe

C:\Users\chuny>ipconfig.exe

PowerShell 采取了不同的策略,设计了更加简单好记的 cmdlet 命名范式,cmdlet 实际上并不是命令,而是托管于 .Net 平台的实例,关于 cmdlet 是什么的讨论已经远远超出了本系列的初衷,实际一般脚本工作中,形成一段脚本依靠的是粘合原生功能形成的工作流,而不必关心这些原生功能是如何实现的。

cmdlet 深入内容参考:Windows PowerShell Cmdlet Concepts

例如 Linux 中,单单一个管道的底层实现便是千行规模的,更不必说建立在各种库上面的二进制了。

Linux 管道的实现思路:How Linux pipes work under the hood

因此,cmdlet 即平台相关的原生功能的抽象,以如下的一段获取时间的代码片段为例:

PS /<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值