学好powershell,再学好linux命令即可。
基本不需要学bash,awk,sed,python。
大家注意我说的场景:常见的系统运维。常见的linux使用。
---【第1章 99.9% 放弃bash】---
学1年ps1,顶学5年bat,bash。linux一键安装powershell
h替tps码云家gitee店com/chuanjiao10/kasini3000_agent_linux
在本地,用pwsh代替bash成为默认shell:
powershell支持 -l 参数,支持作为lonin的shell。
pwsh作为默认shell的好处:
1 旧的脚本100%兼容。因为你的脚本还是通过bash执行的。你脚本中的第一行带有#!/bin/bash,对吧?
2 凡是不兼容的命令,可以通过调用bash -c 'xxx命令',或'xxx命令'|bash,来100%兼容。
3 powershell用$profile代替了.bashrc
4 ps命令,脚本tab补全比bash更好,默认命令、脚本都是带有补全的。无需单独开发,单独加载。而且参数名是英文,好记,而不是单个字母。
5 命令历史记录,比bash好。
按【↑】键历史命令,还可以开启命令行历史补全。
Install-Module -Name PSReadLine -AllowPrerelease -Force -Scope CurrentUser
mkdir -p "$env:HOME/.config/powershell"
# 开启,命令行旧命令提示:(提示后,按“→”键,补全)
Add-Content -Value "Set-PSReadlineOption -PredictionSource History" -LiteralPath $profile
用powershell而不用bash,带来的好处:
1 本地:管道传递对象。
2 远程:powershell可以通过ssh命令行,传递代码块,来传递脚本。ssh不行,ssh要传文件才行。
3 远程:脚本远程传参,传递对象。
4 语法简单,坑少。
5 库功能强。
6 ps脚本调试功能强。(单步,断点,执行鼠标选中行)
7 powershell编写传参脚本,比shell强,简太多。
用powershell而不用bash,带来的转换痛苦:(我用10年总结的)
1 powershell不支持小于号管道符。解决:调用cmd,或bash解决。
2 powershell的转义是【`】,bash是【\】
3 powershell在管道中传二进制数据和bash不一致。解决:管道压缩时需调用bash。解压文件,跟管道传二进制数无关。
4 powershell启动后台程序后退出,但后台程序还要继续运行,也需要调用nohup:
Start-Process -FilePath '/usr/bin/nohup' -ArgumentList "xxx命令 参数 参数"
这个命令的目的,是把自己的子进程,交给id1的linux。
---【第2章 基本可以放弃awk】---
在powershell中,旧的awk命令,.awk脚本,都可以100%兼容。你可以使用pwsh,或bash调用旧的。
用powershell而不用awk,带来的好处:
1 awk难以调试,powershell的调试功能强。(单步,断点,执行鼠标选中行)
2 awk的管道过滤功能,powershell都有。比如:
awk print $3,可以用powershell对应功能【filter 过滤器1 {}】代替。
---【第3章 99.9%放弃sed】---
用我开发的脚本【ps找算替.ps1】即可放弃sed。
用【ps找算替.ps1】而不用sed带来的好处:
1 不支持正则,简单。
2 复杂找替,可以模块化开发。即开发n个脚本,互相调用。比如。
读数据源用一个脚本,写数据目标一个脚本,转换数据用一个脚本。找替、或提取数据用【ps找算替.ps1】。
3 可以借助powershell的调试功能。(单步,断点,执行鼠标选中行)
4 可以借助powershell强大的数据转换功能。(csv,html,xml,json等)
---【第4章 基本可以放弃python】---
python和shell共存多年,谁也没代替谁。
主要原因就是互补,或者说python管道功能编写代码很麻烦,命令行功能也不方便。
用powershell而不用python带来的好处:
1 管道。
2 python有的那些功能,powershell基本都有。比如多线程,线程安全型对象,计时器,委托等。
3 其他语言没有的那些功能、库。调用py脚本即可。
4 powershell有ssh远程传对象,py没有。
结论:
有了powershell基本可以放弃python。我看大概也就1%需要?
---【第5章 总结】---
1 bash:建议放弃。
2 awk:可以放弃,也可以用。
3 sed:建议放弃。
4 python:可以放弃,也可以用。
学一种powershell即可达到目的,比学n种语言要好。多个语言的if必然会打架,必然无法调试。
学好powershell,再学linux命令即可。
基本不需要学bash,awk,sed,python。
大家注意我说的场景:常见的系统运维。常见的linux使用。
问:你凭啥说powershell是【正经】的【仙法】?而bash,awk,sed,python是【不正经】+【邪魔歪道】?
答:
现在的开发语言都是面向对象的。可bash,awk,sed不是面向对象的。
现在的开发语言,都有单步,断点,鼠标选中运行。可bash,awk,sed不好调试。把它们组合一起,更不好调试。
python别的方面都好。但远程传对象,管道,这两块瘸腿。win上安装也不方便。
py也没有把精力放在一个【通用的,系统级的,shell身份上】,因为win上有powershell,linux上有bash。
powershell学习简单,没有明显的瘸腿。
基本不需要学bash,awk,sed,python。
大家注意我说的场景:常见的系统运维。常见的linux使用。
---【第1章 99.9% 放弃bash】---
学1年ps1,顶学5年bat,bash。linux一键安装powershell
h替tps码云家gitee店com/chuanjiao10/kasini3000_agent_linux
在本地,用pwsh代替bash成为默认shell:
powershell支持 -l 参数,支持作为lonin的shell。
pwsh作为默认shell的好处:
1 旧的脚本100%兼容。因为你的脚本还是通过bash执行的。你脚本中的第一行带有#!/bin/bash,对吧?
2 凡是不兼容的命令,可以通过调用bash -c 'xxx命令',或'xxx命令'|bash,来100%兼容。
3 powershell用$profile代替了.bashrc
4 ps命令,脚本tab补全比bash更好,默认命令、脚本都是带有补全的。无需单独开发,单独加载。而且参数名是英文,好记,而不是单个字母。
5 命令历史记录,比bash好。
按【↑】键历史命令,还可以开启命令行历史补全。
Install-Module -Name PSReadLine -AllowPrerelease -Force -Scope CurrentUser
mkdir -p "$env:HOME/.config/powershell"
# 开启,命令行旧命令提示:(提示后,按“→”键,补全)
Add-Content -Value "Set-PSReadlineOption -PredictionSource History" -LiteralPath $profile
用powershell而不用bash,带来的好处:
1 本地:管道传递对象。
2 远程:powershell可以通过ssh命令行,传递代码块,来传递脚本。ssh不行,ssh要传文件才行。
3 远程:脚本远程传参,传递对象。
4 语法简单,坑少。
5 库功能强。
6 ps脚本调试功能强。(单步,断点,执行鼠标选中行)
7 powershell编写传参脚本,比shell强,简太多。
用powershell而不用bash,带来的转换痛苦:(我用10年总结的)
1 powershell不支持小于号管道符。解决:调用cmd,或bash解决。
2 powershell的转义是【`】,bash是【\】
3 powershell在管道中传二进制数据和bash不一致。解决:管道压缩时需调用bash。解压文件,跟管道传二进制数无关。
4 powershell启动后台程序后退出,但后台程序还要继续运行,也需要调用nohup:
Start-Process -FilePath '/usr/bin/nohup' -ArgumentList "xxx命令 参数 参数"
这个命令的目的,是把自己的子进程,交给id1的linux。
---【第2章 基本可以放弃awk】---
在powershell中,旧的awk命令,.awk脚本,都可以100%兼容。你可以使用pwsh,或bash调用旧的。
用powershell而不用awk,带来的好处:
1 awk难以调试,powershell的调试功能强。(单步,断点,执行鼠标选中行)
2 awk的管道过滤功能,powershell都有。比如:
awk print $3,可以用powershell对应功能【filter 过滤器1 {}】代替。
---【第3章 99.9%放弃sed】---
用我开发的脚本【ps找算替.ps1】即可放弃sed。
用【ps找算替.ps1】而不用sed带来的好处:
1 不支持正则,简单。
2 复杂找替,可以模块化开发。即开发n个脚本,互相调用。比如。
读数据源用一个脚本,写数据目标一个脚本,转换数据用一个脚本。找替、或提取数据用【ps找算替.ps1】。
3 可以借助powershell的调试功能。(单步,断点,执行鼠标选中行)
4 可以借助powershell强大的数据转换功能。(csv,html,xml,json等)
---【第4章 基本可以放弃python】---
python和shell共存多年,谁也没代替谁。
主要原因就是互补,或者说python管道功能编写代码很麻烦,命令行功能也不方便。
用powershell而不用python带来的好处:
1 管道。
2 python有的那些功能,powershell基本都有。比如多线程,线程安全型对象,计时器,委托等。
3 其他语言没有的那些功能、库。调用py脚本即可。
4 powershell有ssh远程传对象,py没有。
结论:
有了powershell基本可以放弃python。我看大概也就1%需要?
---【第5章 总结】---
1 bash:建议放弃。
2 awk:可以放弃,也可以用。
3 sed:建议放弃。
4 python:可以放弃,也可以用。
学一种powershell即可达到目的,比学n种语言要好。多个语言的if必然会打架,必然无法调试。
学好powershell,再学linux命令即可。
基本不需要学bash,awk,sed,python。
大家注意我说的场景:常见的系统运维。常见的linux使用。
问:你凭啥说powershell是【正经】的【仙法】?而bash,awk,sed,python是【不正经】+【邪魔歪道】?
答:
现在的开发语言都是面向对象的。可bash,awk,sed不是面向对象的。
现在的开发语言,都有单步,断点,鼠标选中运行。可bash,awk,sed不好调试。把它们组合一起,更不好调试。
python别的方面都好。但远程传对象,管道,这两块瘸腿。win上安装也不方便。
py也没有把精力放在一个【通用的,系统级的,shell身份上】,因为win上有powershell,linux上有bash。
powershell学习简单,没有明显的瘸腿。