免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 459 | 回复: 2

[学习共享] 《单步、断点、图形界面调试,ps极大提升了linux脚本生产力》 [复制链接]

论坛徽章:
0
发表于 2018-11-08 09:47 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2018-11-08 10:09 编辑

《单步、断点、图形界面,ps极大提升了linux脚本生产力》

                     ---linux中调试ps脚本的注意事项


---------【linux中用powershell脚本的好处】---------
好处之一是可以用vscode调试。
这样就有了和win同等的待遇:
1 在vscode图形界面查看变量名,变量值。
2 单步。
3 断点。
4 完全支持中文脚本名、参数名、变量名、函数名、的运行和调试。



请看图:

vscode调试linux+powershell脚本.png


这也是为啥要用linux版powershell的原因。

shell脚本单步,断点难。尤其有些是awk子语句。
生产力估计不老好的。脚本技能不容易提升。
甚至调试1个shell脚本的时间精力,能调试20个ps脚本。


---------【在linux中调试powershell脚本,需要具备哪些条件?】---------
1 安装linux + 图形界面,如gnome。
2 linux中安装vscode。

官网:
https://code.visualstudio.com/docs/setup/linux

centos:
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
sudo yum install code

3 安装插件。
中文界面插件:Chinese (Simplified) Language Pack for Visual Studio Code
powershell插件:powershell

论坛徽章:
0
发表于 2018-11-08 09:48 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2018-11-08 11:18 编辑

---------【为啥要在linux上调试ps脚本】---------
我想主要源于以下差别。

1语法差别:
语法差别很小,几乎可以忽略不计。具体而言。
win版powershell v6.1和,linux版powershell v6.1基本没有语法差别。
win版powershell v5.1和,linux版powershell v6.1,大概有0.5%的语法差别。


2库差别。
win版powershell v6.1和,linux版powershell v6.1基本没有库差别。
win10中:powershell v5.1和,linux版powershell v6.1,至少有80%的库差别。
win7中:版powershell v5.1和,linux版powershell v6.1,大概有3%的库差别。


3linux外部命令差别。
我无法说出,有多少百分比。


结论:
powershell之所以强大,靠的就是那多出的80%的【系统管理】库。
这些库,只存在于win10,win7没有。
linux没有这些库,linux有自己的外部命令。如:awk,sed,grep,ifconfig等。    ps在linux上主要调试的就是这些linux命令。

至于win,linux上都有的ps自带命令,和在ps软件源中的库,都是win、linux、mac通用的。
也就是说,在win,linux,mac中调试,返回结果都是相同的。不需要专门在linux中调试。



---------【linux中调试ps脚本的注意事项】---------
根据上述3,我觉得应该尽量少用linux外部命令。
或者把linux外部命令,用bash包裹起来,存放入ps变量值。

=====================
$bashcmd =
@'
echo '我是bash命令'
echo '命令中可以有单引号'
echo "命令中可以有双引号"
echo '如需解析变量,则用这种括号,注意头尾必须换行'
echo '@\"'
echo '$a'
echo '\"@'
'@
$powershell变量 = /usr/bin/bash -c $bashcmd
#需要转义,有点不好
=====================

$powershell变量 =
@'
echo '我是bash命令'
echo '命令中可以有单引号'
echo "命令中可以有双引号"
echo '如需解析变量,则用这种括号,注意头尾必须换行'
echo '@"'
echo '$a'
echo '"@'
'@ | /usr/bin/bash
#不需要转义,推荐
=====================

也就是说给ps变量传递,字符串值,数字值,数组值,哈希表值。

问:为啥用bash把命令包裹起来?
答:
世界上没有片100%相同的叶子,也没有100%相同的脚本解释器。sh和bash甚至解释都不同。
ps解释linux外部命令,和bash主要在【转义】,有细小差别。
为了100%兼容bash旧命令和返回的结果,就要用bash包裹。




---------【最终结论】---------
始于 2018-11-03  

在linux中运行的ps1脚本,里面有linux本地命令时,需要在linux本地调试。

主用powershell,在ps中调用bash。让旧有的bash,awk,sed给ps变量传值。
也就是说给ps变量传递,字符串值,数字值,数组值,哈希表值。

$数组 = @' ifconfig | xxx |yyy '@ | bash

用vscode在linux中调试,就有了单步、断点、图形界面调试。可以极大提升linux世界脚本生产力。






论坛徽章:
0
发表于 2018-11-08 09:48 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2018-11-08 13:52 编辑


做法1:
如果你喜欢用linux桌面。则安装linux虚拟机 + 图形界面,如gnome。
vscode窗口显示在,linux虚拟机的桌面中

做法2:
如果你喜欢用win桌面。可以使用win + x11图形软件。
也就是说win加,linux虚拟机(建议至少2~3GB虚拟机内存)加,linux版ps(或c++,php等你的开发语言),加linux版vscode。但是【linux版vscode窗口】显示在win中
经我测试,xmanager5不灵。但是vsxsrv这软件可以,而且配置简单。

官网:
https://sourceforge.net/projects/vcxsrv/

3.1 下载安装vcxsrv,运行XLaunch。

3.2 选multipe windows ---》start a programe ---》start programe on remote computer。
在“remote programe”输入框,输入:
code --user-data-dir="/root"

在“Connect to computer”输入框,输入:
你的linux的ip地址

在“login as user”输入框,输入:
你的linux账户名,如root

在“password”输入框,输入:
你的linux密码

下一步 ---》保存 ---》文件名为:vscode.xlaunch

3.3 双击“vscode.xlaunch”文件,这是一个xml文本文件,选文件关联,关联给XLaunch。以后双击此文件,即可运行vscode。

3.4 成功看到vscode英文窗口。此时注意win防火墙,允许XLaunch通过。vscode中安装模块,重新运行,则变成中文vscode。






问:目前哪些linux能安装上powershell?
答:
◦Windows 10 IoT Core(arm32的cpu,本质上是win,树莓派硬件上的win10)
◦Raspbian Stretch(arm32的cpu,树莓派官方操作系统Raspbian,基于大便,所以叫树莓便。)
◦MAC OS X 10.11
◦Ubuntu 14.04/16.04/18.04
◦Debian 8.x/9.x
◦CentOS 7.x/RHEL 7.x/Fedora27/Fedora28
◦open SUSE 42及以上/SUSE Linux Enterprise Server 12 SP2及以上
◦Docker。LINUX发行版中,安装容器dockerd,docker中运行powershell。
◦Arch Linux (archl inux 没有版本号)
◦Linux AppImage 容器(portable application single binary)  https://github.com/probonopd/AppImageKit
◦Kali Linux

安装方法:
https://docs.microsoft.com/zh-cn ... x?view=powershell-6




centos7及以上,安装powershell:
curl -o /etc/yum.repos.d/microsoft.repo  https://packages.microsoft.com/config/rhel/7/prod.repo
sudo yum remove -y powershell #删除旧版
sudo yum install -y powershell
pwsh -c 'mkdir -p "$env:HOME/.config/powershell" '
pwsh -c 'Add-Content  -Value 'Set-PSReadlineOption -EditMode Windows' -LiteralPath $profile '


ubuntu1604:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl -o /etc/apt/sources.list.d/microsoft.list https://packages.microsoft.com/config/ubuntu/16.04/prod.list
sudo apt-get update
sudo apt-get remove -y powershell #删除旧版
sudo apt-get install -y powershell
pwsh -c 'mkdir  -p  "$env:HOME/.config/powershell" '
pwsh -c 'Add-Content  -Value 'Set-PSReadlineOption -EditMode Windows' -LiteralPath $profile '




问:目前哪些linux,可以通过snap包方式安装powershell?
答:
◦Arch Linux/Fedora/elementary OS/OpenSuSE/Solus/Gentoo Linux/Debian/Linux Mit /Manjaro/OpenEmbedded/Yocto/OpenWrt/Raspbian等任何支持snap包的发行版

安装方法: (建议使用预览版,功能比较新,也没啥不稳定的)
snap install powershell –classic   #安装稳定版
snap install powershell-preview –classic #安装预览版


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP