V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zx900930
V2EX  ›  Windows

wsl 对自动化处理来说真的太爽了

  •  1
     
  •   zx900930 · 2021-11-15 18:56:41 +08:00 · 7231 次点击
    这是一个创建于 1133 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前看到别人写的 bash 想转换成 batch 或者 powershell 要么就是去找对应命令的 windows 替代品, 要么就得去看看用 powershell 怎么实现同样的效果, 还很有可能有 bug. 比如下载某个 github 的最新 release(这里用 jellyfin desktop 举例)

    bash

    curl -s https://api.github.com/repos/jellyfin/jellyfin-media-player/releases/latest \
      | grep browser_download_url \
      | grep windows-x64.exe \
      | cut -d '"' -f 4 \
      | wget -qi -
    

    现在有了 wsl, 可以直接这么写

    batch

    wsl curl -s https://api.github.com/repos/jellyfin/jellyfin-media-player/releases/latest  | wsl grep browser_download_url  | wsl grep windows-x64.exe  | wsl cut -d '^"' -f 4 | wsl wget -qi -
    

    只需要注意处理一下转义符之类的问题, 是不是非常简单方便? 还不用担心出 bug.

    33 条回复    2021-11-16 23:55:03 +08:00
    ivan_wl
        1
    ivan_wl  
       2021-11-15 19:10:17 +08:00
    我直接用 cmder ,自带 git bash ,再配合 scoop 安装各种应用
    rrfeng
        2
    rrfeng  
       2021-11-15 19:12:16 +08:00 via Android   ❤️ 1
    那为啥不直接在 wsl 。的 shell 里跑…
    xlui
        3
    xlui  
       2021-11-15 19:16:46 +08:00
    我直接用 Windows Terminal + Git Bash + Scoop 玩
    zx900930
        4
    zx900930  
    OP
       2021-11-15 19:17:09 +08:00
    @rrfeng wsl 的文件挂载有坑的, 至少跑 docker 的时候会出现 volume 挂载的文件夹被当成是文件. 而且 wsl 的 systemd 有问题. 使用 windows 自带的任务计划在 windows 底下跑更稳定.
    zx900930
        5
    zx900930  
    OP
       2021-11-15 19:21:59 +08:00
    @ivan_wl
    @xlui
    scoop 也挺不错, 可惜和满血的 linux 仓库比, 还是缺了很多包
    Dragonphy
        6
    Dragonphy  
       2021-11-15 22:09:06 +08:00
    我装了俩 wsl ,一个 ubuntu wsl1 ,一个 debian wsl2 ,日常开发用 wsl1 ,docker 用 wsl2
    PrinceofInj
        7
    PrinceofInj  
       2021-11-15 22:20:28 +08:00
    powershell 其实也还行,比较好理解。刚才试着写了一下这个,也挺简单的。convertfrom-json 太好用了,直接可以把 json 里面的元素都解析出来。可惜没绑定手机号不让发代码
    icelo
        8
    icelo  
       2021-11-15 22:27:40 +08:00 via iPhone
    可以在用 idea 跑 wsl 的代码嘛
    zx900930
        9
    zx900930  
    OP
       2021-11-15 22:40:31 +08:00
    @PrinceofInj powershell 脚本确实还行, 就是代码臃肿写起来很难受, linux 很简洁的 shell 脚本用 powershell 就得写很长一串
    Foreach-Object, Get-Content, Set-Content 什么的, 除了某些 Windows 限定的功能用 powershell 写, 我尽量都不用, 因为实在没精力深入学习 powershell 了.
    PrinceofInj
        10
    PrinceofInj  
       2021-11-15 22:46:32 +08:00 via Android
    @zx900930 话是前两天写在 Windows 下写了个简单的脚本需要定时运行,我的计算机又不是天天开机,又没有 Windows 服务器,然后再阿里云的 ubuntu 上装了一下 pwsh ,把脚本拷上去,居然完美运行了... 设置了一下 crontab 美滋滋
    BeautifulSoap
        11
    BeautifulSoap  
       2021-11-15 22:47:47 +08:00 via Android
    @zx900930 两种不同风格喜好不同罢了。比如我就觉得 linux 这脚本的写法,每次打开一个脚本就像是开了乱码文本一样。打开别人写的脚本更是一眼抹黑,当然慢慢看是能看懂的。
    zx900930
        12
    zx900930  
    OP
       2021-11-15 22:53:15 +08:00   ❤️ 1
    Buges
        13
    Buges  
       2021-11-15 23:41:31 +08:00
    你在 Windows 下用管道传个二进制数据试试,全给你弄乱。
    noahhhh
        14
    noahhhh  
       2021-11-15 23:51:29 +08:00 via Android
    自动化用微软的 Power Automate 挺好
    ChenShann
        15
    ChenShann  
       2021-11-16 00:02:48 +08:00
    git bash 够用了。msys 资源少。wsl 虽然功能多,但老是出现莫名其妙的问题。
    auh
        16
    auh  
       2021-11-16 00:31:36 +08:00
    wsl 存储位置移动到其他盘。windows terminal 。ahk ,快捷键映射启动,激活或最小化窗口。启动目录配置,映射 workspace ,zsh 或者其他 shell 操作增强工具,各种安装一通。完美 linux 自用小机器。shell 调试编写,那是灰常省心
    msg7086
        17
    msg7086  
       2021-11-16 06:28:01 +08:00
    你可能不知道 msys2 ?
    PrinceofInj
        18
    PrinceofInj  
       2021-11-16 07:57:47 +08:00 via Android
    @noahhhh 这几天正在捣鼓这个,他貌似不支持自定义脚本,只能运行一些整合好的操作
    dreampet
        19
    dreampet  
       2021-11-16 08:54:01 +08:00
    我们产品有个组件需要 Linux 下编译, 之前都是要求客户单独准备一台 Linux 电脑使用,还得配置各种运行环境才能使用。

    现在随产品带了一个包含全套运行环境的 wsl rootfs ,一键编译, 客户体验直线上升
    2i2Re2PLMaDnghL
        20
    2i2Re2PLMaDnghL  
       2021-11-16 09:16:12 +08:00
    但有个坑,powershell 下的管道会转换成字符串传递,效率相比管道会降
    话说你这里其实不如 wsl bash -c "..."
    noahhhh
        21
    noahhhh  
       2021-11-16 09:34:14 +08:00 via Android
    cweijan
        22
    cweijan  
       2021-11-16 09:37:35 +08:00
    @ivan_wl 2021 就别用 cmder 了,windows terminal 了解一下
    ivan_wl
        23
    ivan_wl  
       2021-11-16 09:59:17 +08:00
    @cweijan 几年前刚出来的时候了解过,当时问题还比较多。对比 ConEmu 有什么优势呢?
    TypeError
        24
    TypeError  
       2021-11-16 10:10:05 +08:00 via Android
    @cweijan win11 还可以直接装 Linux GUI terminal
    zhuangzhuang1988
        25
    zhuangzhuang1988  
       2021-11-16 11:28:38 +08:00
    试了下 powershell 还是很爽的
    (Invoke-WebRequest 'https://api.github.com/repos/jellyfin/jellyfin-media-player/releases/latest' | ConvertFrom-Json).assets
    | Where-Object { $_.browser_download_url -match "windows-x64" }
    | ForEach-Object { Invoke-WebRequest -Uri $_.browser_download_url -OutFile "windows-x64.exe" }
    Dragonphy
        26
    Dragonphy  
       2021-11-16 11:30:34 +08:00
    @PrinceofInj powershell 命令一大串,懒得学🤣
    hahastudio
        27
    hahastudio  
       2021-11-16 11:41:37 +08:00
    @zx900930 岂止是有问题,压根就还没支持 systemd 。。。
    github.com/microsoft/WSL/issues/1579
    wangkun025
        28
    wangkun025  
       2021-11-16 11:56:08 +08:00
    但凡家庭条件好点,我也不会用 WSL 啊。
    cweijan
        29
    cweijan  
       2021-11-16 13:54:27 +08:00
    @ivan_wl 启动更快,且支持多标签
    phony2r
        30
    phony2r  
       2021-11-16 14:20:48 +08:00
    wsl 怎么解决按键冲突的问题? 比如 ctrl + c
    GrayXu
        31
    GrayXu  
       2021-11-16 19:19:47 +08:00
    @phony2r 这个行为是由 terminal 来定义的,不是 shell 。
    noyidoit
        32
    noyidoit  
       2021-11-16 22:14:00 +08:00
    什么都好,除了不支持文件锁,直接劝退
    walpurgis
        33
    walpurgis  
       2021-11-16 23:55:03 +08:00
    @cweijan cmder 是懒人整合包,windows terminal 只是代替其中的 ConEmu
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5374 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:11 · PVG 17:11 · LAX 01:11 · JFK 04:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.