bash - VS Code:使用 WSL/Bash 运行任务
问题描述
WSL 使获取 gcc 和其他 Linux 工具变得容易。您可以使用脚本快速配置 WSL 开发环境,因此如果您搞砸了,您可以快速销毁它并以最低成本重新开始。因此,我想在 WSL 而不是 Windows 本身上运行任务。
例如,在 Sublime3 中,我可以使用 GCC 的 WSL 安装来构建 C 代码,只需使用以下代码创建一个新的构建系统:
{
"cmd" : ["bash", "-c", "gcc ${file_name} -o ${file_base_name} && ./${file_base_name}"],
"shell": true,
"working_dir": "${file_path}",
}
到目前为止,我一直试图弄清楚如何在 VS Code 上复制它,但没有成功。似乎至少有另一个人已经设法让这个工作,所以它应该是可能的。
似乎正确的方法是配置tasks.json
文件。相关行似乎是:
"command": "bash.exe",
"args": ["-c", "'insert code here'"]
似乎这告诉 powershell 运行bash -c 'insert code here'
。任何人都可以提出正确的命令吗?
一些背景:
${file}
是一个变量,表示 VSCode 中的活动文件。这是所有预定义变量的列表。
wslpath
是 Windows 1803 中的一个新 bash 命令,它采用 Windows 路径并返回 wsl 路径,例如:
$ wslpath "c:\Users\Evan\Google Drive\Development\Programming Languages\file.c"
/mnt/c/Users/Evan/Google Drive/Development/Programming Languages/file.c
我的尝试:
我尝试编写脚本来执行此操作,但遇到了问题。调用的 tasks.json 语法myscript
应该是这样的(注意我们将文件名传递给脚本,以便脚本可以将其传递给 GCC)。
"args": ["-c", "'myscript.sh \"${file}\"'"]
或根据这个答案
"command": "/path/to/script.sh"
"args": ["\"${file}\""]
myscript
可能看起来像这样:
#!/bin/bash
echo "File Path is here $1"
x=$(wslpath "$1")
gcc "$x" -o a.out
./a.out
解决方案
它可以在没有脚本的情况下完成:
"command": "gcc '$(wslpath '${file}')' && ./a.out"
${file}
将在 bash 中解析命令之前进行解析。
推荐阅读
- java - 用文本替换内容控件
- mysql - 如何在laravel中检测内部服务器错误(500)
- ruby-on-rails - 在同一线程中使用辅助/自治事务
- java - 在哪里为 java 中的 SSLException 添加证书?
- python-3.x - Pip 无法正常工作,我似乎无法找到解决方法
- square - SquarePOS - 为什么仪表板上没有出现销售?
- validation - ckeditor | 内的“必需”属性
- c# - 是否可以在 C# wpf(网格)中绘制形状,如果网格按行和单元格拆分,并且每行内部包含一个堆栈面板?
- excel - Excel 数据透视表 VBA:如何将总和放入行标签中
- laravel - 在 laravel 中,数据未插入数据库