免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1970 | 回复: 3

[学习共享] 单步、断点、图形界面调试,鼠标选中脚本右键运行 ,ps极大提升了linux脚本生产力 [复制链接]

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


《单步、断点、图形界面调试,鼠标选中n行右键执行,powershell极大提升了linux脚本生产力》

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

文章修改版,写于2019-06-20

---------【第一章 在linux中用shell脚本,有啥坏处?】---------
shell脚本单步,断点难。尤其有些是awk子语句,sed子语句,甚至还有python。
这根本就是相当于进入了另一种计算机语言。
甚至调试1个shell脚本耗费的时间精力,顶调试20个ps脚本。
shell的if,awk的if,sed的if,python的if,4种if。
这就好像你脚上套了4层鞋一样,很酸爽。请看:

===========【shell脚本单步,断点难的例子】===========
sed -e 'p;s,.V,,;n;h_' \
-e s|.»|.|* \
-e .*/,f;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/* | \
sed 'N;N;N;sf\n, ,g' | \
$(AWK) 'BEGIN { files[".M] = dirs[".M] = 1 } \
{ d=$$3; if (dirstd] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) filestd] = files[d] M H $$1; \
else { print "fM, $$3 V" $$4, $$1; } } \
END { for (d in files) print "f", df filestd] }'
===========【shell脚本单步,断点难的例子】===========
这也是为啥要用linux版powershell的原因。


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

---------【为啥要在linux上调试ps脚本】---------
问:啥时候用linux版vscode,单步、断点调试linux版ps脚本?
答:
当ps1脚本中,含有linux命令的时候。
当win中无法100%重现,linux环境,linux命令时,那么你就需要在linux中调试。

---------【第三章 linux中调试ps脚本的注意事项】---------
应该尽量少用linux外部命令。
或者把linux外部命令,用bash包裹起来,存放入ps变量值。
=====================
$bashcmd =
@'
echo '我是bash命令'
echo '命令中可以有单引号'
echo "命令中可以有双引号"
echo '如需解析变量,则用这种括号,注意头尾必须换行'
echo [url=]'@\"'[/url]
echo '$a'
echo '\"@'
'@
$powershell变量 = /usr/bin/bash -c $bashcmd
#需要转义,有点不好
=====================

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

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

从win到linux远程,用vscode+powershell,帮shell脚本实现单步,断点的例子。
=====================
#第一行代码。
#在下面这行代码上,下断点。
$powershell变量 =
@'
ls -l /tmp |awk '{print $9}'
'@ | /usr/bin/bash
#第n行代码。
=====================
---------【第四章 在win中用vscode,远程调试linux中的ps1,的步骤】---------
1 在win上安装最新版vscode,最低为1.35.1。

2 安装vscode插件:remote-ssh,remote-ssh-explorer

3 定义ssh配置文件路径:
编辑c:\Users\你的用户名\AppData\Roaming\Code\User\settings.json
加上一行:
"remote.SSH.configFile": "d:\\vscode\\remote.txt"

4 编写ssh配置文件内容:
d:\vscode\remote.txt ,bom头+utf8格式。支持多个服务器,支持中文。
Host 吃鸡ps62
    User root
    HostName 192.168.111.62
    IdentityFile ~/.ssh/id_rsa

5 下载ssh:
https://github.com/PowerShell/Win32-OpenSSH/releases
用ssh-keygen.exe,生成秘钥对。

6 使用我编写的ssh-copy-id6.ps1即可部署本机公钥,到各个linux服务器。
脚本最新版下载地址:
https://pan.baidu.com/s/1n3ahVhYTyrGIm9n4N1SPRw
提取码:i55m

7 测试:
ssh.exe root@192.168.111.62 'date'

8 点击左下角,点【吃鸡ps62】。发现打开了一个【新ssh的子vscode窗口】。
这个窗口其实就是linux中安装的,linux版vscode。
本地vscode,把远程vscode,偷偷安装在了 ~/.vscode-server
可以在这个【新ssh的子vscode窗口】  ——》 插件里面,安装中文插件。
可以在这个【新ssh的子vscode窗口】  ——》 插件里面,安装xxx语言插件。
有了这个插件,即可代码高亮补全和调试,跟本地vscode一样。
若跟本地vscode不一样,或者调试不灵,那么就是测试版的bug。

9 在这个【新ssh的子vscode窗口】中,安装【powershell-preview】扩展。
注意:
【powershell】扩展,目前还不支持远程调试。
你需要安装【powershell-preview】扩展。
remote-ssh这是一个新功能,需要下一个稳定版本的powershell扩展才支持。

10 打开a.ps1,在某一行下断点,然后按f5。

11 点菜单---》终端---》新建终端。
即可打开【那台linux】的命令行,即bash。

12 看看左下角,就知道你连接到了哪台linux机子。

结论:
remote-ssh扩展,给powershell带来了,打开远程文件。
remote-ssh-explorer扩展,给powershell带来了,浏览远程目录,文件。
powershell-preview扩展,帮powershell带来了,远程调试。
远程调试,是最主要的功能。你还可以在linux机子上,安装c#扩展,py扩展,java扩展等。调试工具。

vscode调试linux+powershell脚本.png

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


已经过时。编辑掉。

论坛徽章:
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 #安装预览版


论坛徽章:
0
发表于 2019-04-02 16:00 |显示全部楼层
支持在linux版vscode图形界面中,鼠标选中脚本行,右键,执行选中。

比如有4行脚本,1,2,3,4。你可以选中第2,3行,右键,执行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP