Scoop作为Windows下的命令行包管理工具,在之前的文章里用到的非常多,最近又看了下Scoop的说明,这里简要的介绍下更新后的特性,附带一些常用的命令行工具
Github:lukesampson/scoop的README对Scoop有了大概的介绍,我初次接触到是读到了 再谈谈 Scoop 这个 Windows 下的软件包管理器
缘由
- 安装常见命令行工具
- 自带配置环境变量,方便配置简易的开发环境
- 有脚本自动化执行的优势,方便快速部署(比如重装系统的时候)
需要注意的是如果Scoop安装的软件和Powershell的命令或者别名重合,Powershell的命令依然被优先使用
安装
可以使用管理员模式打开powershell运行
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# or shorter
iwr -useb get.scoop.sh | iex
多线程下载支持
部分软件源在Github之类的连接性不太好的地方,偶尔下载很慢而且易报错,现在Scoop推荐默认使用aria2进行多线程下载,只需要安装aira2即可开启多线程下载
scoop install aria2
添加额外的仓库
参考SpencerWoo的文章添加的软件仓库基本上够用了
scoop bucket add extras
scoop bucket add java
scoop bucket add dorado https://github.com/h404bi/dorado
- 默认的main仓库以命令行工具为主(比如收录的cmder是个有GUI的终端软件),例如Linux常用的sed, grep, gawk,vim可以大大方便Powershell的日常使用
- extra仓库收录的高质量的gui软件比较多,比如说googlechrome,typora,vscode
- java仓库收录了多种多版本的JDK,结合下文的
scoop reset
,可以便捷的切换环境变量下的JDK - dorado仓库收录了相当一部分国内常用的软件如微信,网易云,besttrace,因为下载源在国内下载速度很OK
常用软件
除去上面介绍的一些,其实想得到软件都可以在Scoop中使用scoop search
找下看看
$ scoop list
Installed apps:
7zip 19.00
chromedriver 76.0.3809.126
cmder-full 1.3.11
concfg 0.2019.03.09
ffmpeg 4.1.3 #编码工具
gawk 3.1.7
gcc 8.1.0
gdrive
git 2.21.0.windows.1
grep 2.5.4
innounp 0.48
iperf3 3.1.3 #网速测试工具
nodejs 12.5.0
pshazz 0.2019.04.02
R 3.6.0
sed 4.2.1
tesseract 4.1.0.20190314 #OCR工具
vim 8.1.1302
youtube-dl 2019.05.20 #偶尔下载视频
trafficmonitor #任务栏网速,CPU内存占用监测
screentogif #Gif录屏软件
ntop #类似htop的的终端下的资源监视器(但是做不到htop那么强大)
glow #终端下的Markdown Render
openjdk #添加java仓库后,默认安装最新版的openjdk
openjdk9 #java9
sudo
部分命令是无法在普通模式下运行的,一般的方法是打开一个新的管理员模式的窗口,相对来说不太方便,scoop可以安装sudo来实现对单一命令的赋权
比如设置禁用eth0接口的别名
scoop alias add ethd 'sudo netsh interface set interface eth0 disabled' 'disable eth0'
输入scoop ethd
之后就会弹出用户账户控制的弹窗,提示需要管理员权限,用键盘确认就好,省去了再开一个窗口的麻烦(如果是长串命令都需要管理员权限的话还是开一个吧)
ffmpeg
只介绍常用的简单指令
录制直播
面对没有加密的m3u8直播录制,IPTV用的较多,m3u8的地址可以通过浏览器的检查工具找到
ffmpeg -i m3u8 'test.ts'
合并音频和视频
现在越来越多的网站选择把音频和视频分开,使用IDM下载两个文件可以直接用ffmpeg做快速的合并(复制)
ffmpeg -i v.mp4 -i a.mp4 -c copy output.mkv
当然如果youtube-dl支持视频网站的话使用youtube-dl更方便
提取视频中的音轨
常用于提取BGM,不做重编码的情况
ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
-vn没有视频 -acodec copy说使用已经存在的相同的音频流
注意事项
scoop依然有许多不成熟的地方,在高可靠性要求的环境下依然是不推荐的,最经常遇到的莫非是软件安装因为网络等问题终端,安装状态会返回成功,如果需要重新安装的话需要先进行卸载
再一个就是环境变量的问题,scoop可以在安装的时候配置好一些环境变量,但是卸载却不一定会移除,这就导致一些重要的软件在Scoop卸载之后再在其他位置安装会出现环境变量错误的问题
部分高度依赖于安装目录,权限以及关联众多的软件不推荐使用scoop安装,如Chrome
使用Scoop提供的别名
Powershell的别名设置不方便,直接使用WSL的自定义别名(.bashrc)调用Windows下的程序又不能直接在Powershell中运行,直到发现Scoop可以自由的添加“环境变量”,想起来Scoop alias来设置程序运行的scoop别名
本来的用法应该是为Scoop内的操作添加别名:
# Install app
scoop alias add i 'scoop install $args[0]' 'Innstall app'
scoop alias add add 'scoop install $args[0]' 'Install app'
# Uninstall app
scoop alias add rm 'scoop uninstall $args[0]' 'Uninstall an app'
scoop alias add remove 'scoop uninstall $args[0]' 'Uninstall an app'
# List apps
scoop alias add ls 'scoop list' 'List installed apps'
# Update
scoop alias add u 'scoop update $args[0]' 'Update apps, or Scoop itself'
scoop alias add upgrade 'scoop update $args[0]' 'Update apps, or Scoop itself'
但是这个格式看起来就很自由:
比如说给WinMTRCmd添加一个scoop mtr
的别名
scoop alias add mtr '~/winMTRCmd $args[0]' 'MTR tools for Win CMD'
之后使用scoop mtr [host]
就可以愉快的使用mtr工具了
使用Scoop切换软件版本
这里以切换Java版本为例,例如在安装了openjdk和openjdk9之后,从默认的openjdk9切换到openjdk16
$ java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)
$ scoop reset openjdk
Resetting openjdk (16.0.1-9).
Linking ~\scoop\apps\openjdk\current => ~\scoop\apps\openjdk\16.0.1-9
$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)