linux下的powershell,pash试用手记

------1 概述------

1.1 简单来说linux,unix是非常依赖脚本的,而win不是。win中有很多图形程序+c库,效率不比脚本差。点几下鼠标照样能完成需求。当 然,图形和字符是两码事,不能完全替代。

1.2 win中的bat和linux中的bash都是老脚本语言,纵横沙场几十年,功勋卓著。但由于太老,有很多限制和缺陷。用起来比python和powershell差 很多,麻烦很多。一般来讲玩python和powershell的不乐意用。总之新的大有替代老的之势。

1.3 简单来讲pash就是bash+第三方的powershell。

1.4 pash比bash(主要)好在哪?

1.4.1 我认为pash继承了powershell的语法简单,符合习惯的优点。 如用大花括号来做代码段头尾,有foreach,等。

1.4.2 pash调用mono库,是面向对象脚本。支持静态、动态.net类。 如:"aBc".toupper()

当然类库的支持还很不完善,需要你贡献代码。

1.5 至c#程序猿:

虽然powershell调用.net的语法比c#简单,但很多c#人并不想用powershell语法。 他们想用c#语法另做shell,因为他们熟悉c#,他们眼中的shell语法应该和c#相同。

但他们还是绕不过【面向对象的命令行类库】吧。 【面向对象的命令行类库】大都在System.Management里, 还有【支持对象的管道】功能,是从powershell开始,才发明的。

powershell 传教士 原创文章 始于2014-09-20,2014-11-30,2015-01-18,2015-03-11修改。文章版本目前博客园为最新版。 允许转载,但必须保留名字和出处,否则追究法律责任

------2 pash目前实现了,下述命令:------

Add-Member

Add-PSSnapin

Add-Type
                                                                   Clear-Variable
                                                                   Convert-Path
                                                                 ConvertTo-Csv
                                                                   ConvertTo-Html
                                                                 Copy-Item
                                                                   Export-Csv
                                                                   ForEach-Object
                                                                   Format-Default
                                                                   Format-List
                                                                   Format-Table
                                                                   Get-ChildItem 

Get-Command 

Get-Date 

Get-Help 

Get-History 

Get-Host 

Get-Location 

Get-Member 

Get-Process 

Get-PSDrive 

Get-PSProvider 

Get-PSSnapin 

Get-Random 

Get-Service 

Get-Variable 

Import-Csv 

Join-Path 

Move-Item 

New-Alias 

New-Item 

New-Object 

New-Variable 

Out-Default 

Out-File 

Out-Null 

Remove-Item 

Remove-PSSnapin 

Remove-Variable 

Rename-Item 

Restart-Service

Resume-Service 

Select-Object 

Set-Alias 

Set-Location 

Set-Variable 

Sort-Object 

Split-Path 

Start-Service 

Start-Sleep 

Stop-Process 

Stop-Service 

Suspend-Service 

Tee-Object 

Write-Debug 

Write-Error 

Write-Host 

Write-Output 

Write-Progress 

Write-Verbose 

Write-Warning

powershell的特色命令: Select-Object,Where-Object,Group-Object中,只实现了第一个。

没有任何invoke-*命令。如:invoke-command。 有Get-Variable命令,但后面是否跟变量名,都不灵。

Import-Module这个重量级的命令还不支持。

------3 测试脚本内容------

------4 pash试用结论------

只测试过utf8编码保存文件。

4.1好处:

4.1.1 回车设置为cr,lf,crlf都能正确运行。

4.1.2 空格设置为空格,tab键,全角空格,都能正确运行。----bash无法识别中文空格,即全角空格,但pash无此问题。

4.1.3 支持中文函数名,中文变量名。-----好

4.1.4 支持静态类,静态方法,和这种写法,如:    [array]::Sort($mmm)

4.1.5 命令不区分大小写,get-process和Get-Process都好用。

4.1.6 中文支持比原生powershell好,参见麻将八万的测试代码。

4.1.7 支持变量作用域,并工作正常。

4.1.8 支持 -match,并结果正确。

4.1.9 支持 -f ,结果正确。

4.1.10 支持$a++ ,$a--等。

4.1.11 最新版已经修复下面这个问题。

不支持 未定义先引用变量,如:$temp2 = $temp2 + ‘aaa‘     但支持这样:$temp2 =  ‘aaa‘ + $temp2

4.1.12 最新版已支持do { }  while ( ),和while () { }。

4.2 目前不支持:

4.2.2 不支持switch。----这个问题也不大,我更喜欢if嵌套,更直观。

4.2.3 数组:不支持包含参数,即不支持 -contains,和 $数组.contains("a") 。数组也不支持-join。

字符串:不支持 -replace 。

这些个是什么?只是语法糖而已。

语法糖是什么?是给菜鸟程序员制造的,简单好用的功能。   没有这些个功能,我们照样可以用原生的。net语法代替。

如 string.replace:

$aaaa = ‘aaaa?cccc?ddd?kkkkk‘
$bbbb = $aaaa.replace(‘?‘,‘-‘)
write-host $bbbb

4.2.4 不支持@‘‘@,@""@的引用。----前后我已经带了回车,并且在win中测试通过。

4.2.5 不支持变量前缀[string]$a ,[int32]$a。

4.3bug:

4.3.1 else,elseif 不能放在行首。    -----这个bug已经修复

---------------5 pash点评-----------------

get-content 不支持就真的不好了。但如此,我们就武功就全废了么?

还好创建alias的new-alias和$profile功能是好的,这样我们就可以用原生的linux命令建立别名了。

如: echo   "new-alias get-content-linux /usr/bin/cat"  >>  /root/.Pash_profile.ps1 #这里的root根据用户名改变。

这样我们就有了 get-content-linux 这个命令,我们的武功全都回来了。

---------------6 pash脚本案例-----------------

#!/opt/mono/bin/mono     /Pash/Source/PashConsole/bin/Debug/Pash.exe
# test2.ps1
# 每行文字前插入 ‘aaa‘ 

$要处理的文件  =  ‘/etc/sysconfig/network-scripts/ifcfg-lo‘ 

$每行文件 = get-content-linux $要处理的文件

foreach ($temp  in $每行文件)
{
    $temp2 = $temp2 + ‘aaa‘ + $temp + "`r`n"
} 

out-file $temp2 /root/ttt.txt -encoding utf8

---------------7 pash安装-----------------

7.1 安装mono

7.2 git 并编译pash

具体看上一篇帖子 http://www.cnblogs.com/piapia/p/4279253.html

---------------8 千言万语 总结成一句话:-----------------------

希望大家多研究,多关注powershell,多关注pash,多分享~~~ 2015-01-18

时间: 2024-11-05 18:47:29

linux下的powershell,pash试用手记的相关文章

【Lamp】 Linux 下安装PHP+Apache+Mysql 手记

[0]写在最前 由于准备实习原因,今天又重温了Lamp的搭建过程,之前一直是看燕十八老师2012年的教程学习,因此今天也是拿了十八哥的lamp搭建笔记作参考.但这次按照笔记重新搭建,发现了很多问题,由于该笔记已时隔多年,部分软件已经更新几代,网上也少有部分问题的解决方法,因此趁刚搭建好lamp环境,于此整理一下步骤. [0.1]本人操作环境 ubuntu 15.04 软件存放路径 /root/lamp_need/ 安装路径 /usr/local/ [0.2]软件准备 zlib-1.2.7.tar

linux下一键安装 powershell,的bash脚本

说明 目前,linux下的powershell约等于pash.希望大家专注mono,关注pash. 一键安装脚本包括for centos6,centos7,ubuntu 14.04  ubuntu 14.10 安装脚本是用yum或apt安装,mono官方最新版,然后编译安装pash最新版,最后生成两个命令: mybuild用于编译pash mypash用于运行pash 1 centos6 #!/bin/bash # centos6,一键安装mono,pash的shell脚本. # centos

Docker折腾手记-linux下安装

Docker折腾手记-linux下安装 Linux下的安装方法 博主用的是centos7,其它也是大同小异 我根据的是官网的教程进行的操作,地址是 https://docs.docker.com/engine/installation/linux/centos/#install-using-the-repository 刚开始他们balabala了一大堆,要注意的就是在x64的centos才可以安装docker 官方提供了两种方式一种是使用存儲库进行安装 ,一种是从包中进行安装 ,两种方式都可以

使用Powershell管理Linux 下的 SQL Server

我们上一篇文章介绍了在Centos 7.3下安装及配置 SQL Server,今天我们主要介绍的是如何在Windows下使用Powershell来管理Linux下的SQL Server,其实说到Powershell大家都已经很熟悉了,Powershell不止是命令集合也是批量程序,可以很好的协助管理员提高日常的运维工作,但是微软的Powershell有一个毛病就是不同的服务需要安装不同的Powershell,对于Lync下的Shell.Exchange Shell和系统自带的Powershell

pash 安装手记

pash 安装手记---在linux中运行powershell脚本(*.ps1) powershell in linux  ps1 in linux  pash powershell 传教士 2014-09-15 1简介 简单来说pash就是bash+powershell 2官网 https://github.com/Pash-Project/Pash 3下载fedora20---lxde桌面---32位版. http://download.fedoraproject.org/pub/fedor

谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23069658&id=4028681 学习到了一个阶段之后,就需要不断的总结.沉淀.清零,然后才能继续“上路”.回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里那真叫一个难受.那时候脑袋里曾经

7款Linux下阅读PDF的阅读器。

5款Linux下阅读PDF的阅读器.1. Mupdf:link 2. Adobe Reader:link 3. Foxit Reader:link 4.Evince:link 5. Okular:link(基于KDE) 6. zathura Zathura 是一款新的 PDF 查看器 ,它相当轻巧,界面简约(与 Apvlv 很相似),且可以定制(如按键绑定.默认窗口大小等 ).除了 PDF 查看器所具有的一般功能之外,Zathura 还包括搜索.表单编辑.可点击链接.导出图像等其他功能.和 Li

从零开始在linux下搭建wordpress博客

一,准备linux环境 本地虚拟机可以忽略第一部分 微博以及微信的公共平台现在正火的一塌糊涂.既然博客已经上线,准备把一些过程写一下,省的以后我自己忘了.就当留个纪念吧,好歹花了这么长时间. 全文的操作环境为debian.其他linux发行版区别不大. 没有vps的可以在电脑上装个linux虚拟机试试,都一样的. 登入vps Windows下我一直用的是putty,linux下就不多讲了,ssh就行.在linux的shell下输密码是不显示的. 修改root密码 passwd 复制代码 添加新用

linux下Apache服务器配置虚拟域名

在看laravel的某一个入门教程的时候,作者写道: 将网站根目录配置为 learnlaravel5/public. 本身而言,linux下Apache的根目录设置为/var/www/html,而laravel设置的访问目录是learnlaravel5/public.直接放在根目录下面,则访问打时候需要输入一长串,太麻烦.所以想着也配置下,跟作者似的,输入个www.nine.com也能访问. 1. 修改httpd.conf 可以直接在Apache配置文件的结尾添加如下代码,给Apache添加虚拟