zx900930
V2EX  ›  Windows

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

  •  1
     
  •   zx900930 · Nov 15, 2021 · 8336 views
    This topic created in 1822 days ago, the information mentioned may be changed or developed.

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

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