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

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

  •  1
     
  •   zx900930 · 70 天前 · 5486 次点击
    这是一个创建于 70 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    现在随产品带了一个包含全套运行环境的 wsl rootfs ,一键编译, 客户体验直线上升
    2i2Re2PLMaDnghL
        20
    2i2Re2PLMaDnghL  
       70 天前
    但有个坑,powershell 下的管道会转换成字符串传递,效率相比管道会降
    话说你这里其实不如 wsl bash -c "..."
    noahhhh
        21
    noahhhh  
       70 天前 via Android
    cweijan
        22
    cweijan  
       70 天前
    @ivan_wl 2021 就别用 cmder 了,windows terminal 了解一下
    ivan_wl
        23
    ivan_wl  
       70 天前
    @cweijan 几年前刚出来的时候了解过,当时问题还比较多。对比 ConEmu 有什么优势呢?
    TypeError
        24
    TypeError  
       70 天前 via Android
    @cweijan win11 还可以直接装 Linux GUI terminal
    zhuangzhuang1988
        25
    zhuangzhuang1988  
       70 天前
    试了下 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  
       70 天前
    @PrinceofInj powershell 命令一大串,懒得学🤣
    hahastudio
        27
    hahastudio  
       70 天前
    @zx900930 岂止是有问题,压根就还没支持 systemd 。。。
    github.com/microsoft/WSL/issues/1579
    wangkun025
        28
    wangkun025  
       70 天前
    但凡家庭条件好点,我也不会用 WSL 啊。
    cweijan
        29
    cweijan  
       69 天前
    @ivan_wl 启动更快,且支持多标签
    phony2r
        30
    phony2r  
       69 天前
    wsl 怎么解决按键冲突的问题? 比如 ctrl + c
    GrayXu
        31
    GrayXu  
       69 天前
    @phony2r 这个行为是由 terminal 来定义的,不是 shell 。
    noyidoit
        32
    noyidoit  
       69 天前
    什么都好,除了不支持文件锁,直接劝退
    walpurgis
        33
    walpurgis  
       69 天前
    @cweijan cmder 是懒人整合包,windows terminal 只是代替其中的 ConEmu
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3154 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:56 · PVG 12:56 · LAX 20:56 · JFK 23:56
    ♥ Do have faith in what you're doing.