Shell:常用脚本和指令
本文汇总记录一些各个平台上的常用脚本和指令
# 反向连接文件到一个# $(ls -r): 按文件名倒序(z-a)列出当前目录下所有文件# cat $i >> new.md: 将每个文件内容追加写入 new.mdfor i in $(ls -r); do cat $i >> new.md; done;# 将.png结尾的文件名改为 .jpg# ls | cut -d '.' -f 1: 列出文件并用'.'分割,取文件名部分(不含扩展名)# xargs -I {1}: 将前一步的输出作为参数传递给 mv 命令ls | cut -d '.' -f 1 | xargs -I {1} mv {1}.png {1}.jpg
# 将.jpeg结尾的文件名改为.jpg(${x%.jpeg} 去掉扩展名再拼接新扩展名)for x in *.jpeg; do mv "$x" "${x%.jpeg}.jpg"; donePoweshell
Section titled “Poweshell”# 获取当前工作目录路径$PWD = Get-Location
# 删除当前目录下所有旧的 .dll 文件Write-Output "Rove dll"Remove-Item *.dll
# 分别用 C# 和 VB 编译器将源码编译为 .dll 类库Write-Output "Build Dll"csc /t:library .\JskyLib.csvbc /t:library .\JskyLib-vb.vb
# 通过反射(Reflection)动态加载刚编译好的 DLL 文件[Reflection.Assembly]::LoadFile("$PWD\JskyLib.dll")[Reflection.Assembly]::LoadFile("$PWD\JskyLib-vb.dll")
# 调用已加载的 JskyLib.Math 类中的 Sum 方法,计算 1+2Write-Output "Using JskyLib.Math"[System.Console]::Write("`n`n1 + 2 = ")[JskyLib.Math]::Sum(1, 2)
# 调用 JskyLibVB.MathVB 类中的 Version 方法,输出版本信息Write-Output "Using JskyLibVB.MathVB"[System.Console]::Write("`n`nPrint Version Message`n")[JskyLibVB.MathVB]::Version()Windows常用指令
Section titled “Windows常用指令”-
OneDrive 删除注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace -
Create Big File (50MB)
fsutil file createnew test.txt 52428800 -
Create Big File (5GB)
[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ } -
nvidia experience 下载目录
C:\ProgramData\NVIDIA Corporation\Downloader -
Powershll prompt
# 用记事本打开 PowerShell 配置文件 $PROFILEnotepad $PROFILE# 自定义 PowerShell 提示符为简洁的 "~: "function prompt {"~: "}# 自定义 PowerShell 提示符显示当前目录名,如 "PS blog: "function prompt { "PS " + $( Get-Location | split-path -leaf ) + ": " }- WSL
# 立即终止所有正在运行的 WSL 发行版wsl --shutdown# 将指定 WSL 发行版导出为 .tar 文件,用于备份或迁移wsl --export <Distro> <FileName># 从 .tar 文件导入新的 WSL 发行版到指定安装位置wsl --import <Distro> <InstallLocation> <FileName> [Options]# 启动指定的 WSL 发行版wsl --distribution, -d <Distro># 将指定发行版设为默认(直接运行 wsl 时启动的发行版)wsl --set-default, -s <Distro># 修改此注册表键的 DefaultUid 值可更改 WSL 默认用户的 UID(1000 对应首个用户)# \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss DefaultUid Dec 1000- apt proxy
# 编辑 apt 的代理配置文件sudo nano /etc/apt/apt.conf# 设置 HTTP 代理地址,apt 下载软件包时将走此代理Acquire::http::Proxy "http://:@192.168.199.229:7890";# 设置 HTTPS 代理地址,适用于使用 HTTPS 协议的软件源Acquire::https::Proxy "http://:@192.168.199.229:7890";- gem install proxy
# 通过 -p 参数指定 HTTP 代理,使用代理下载并安装 Ruby Gem 包sudo gem install -p http://127.0.0.1:7890 github-linguistPython
Section titled “Python”- 水平速度、落地夹角已知,求下落速度
# math.radians(10): 将角度制的 10° 转换为弧度制# math.tan(): 计算正切值,即水平速度分量与下落速度的比值math.tan(math.radians(10))ImageMagick
Section titled “ImageMagick”# 安装 ImageMagick 图像处理工具sudo apt install imagemagick# 编辑安全策略文件(如放宽图片尺寸和内存限制)sudo vi /etc/ImageMagick-6/policy.xml# 将当前目录所有 PNG 图片转为 JPG 格式,质量设为 90%convert *.png -quality 90 *.jpg# 将当前目录所有 JPG 图片按顺序合并为一个 PDF 文件convert *.jpg mydoc.pdfffmpeg
Section titled “ffmpeg”- 合并视频&音频
# 将视频流(video.mp4)和音频流(audio.wav)合并到 MKV 容器中,-c copy 不重新编码直接复制ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv- Cut
# from to# -ss 起始时间,-to 结束时间,从 05:10 剪切到 15:30ffmpeg -i input.mp4 -ss 00:05:10 -to 00:15:30 -c:v copy -c:a copy output2.mp4# duration# -ss 起始时间,-t 持续时长,从 05:20 开始剪切 10 分钟ffmpeg -i input.mp4 -ss 00:05:20 -t 00:10:00 -c:v copy -c:a copy output1.mp4draw.io
Section titled “draw.io”# draw.io 配置:设置导出图片的最大尺寸和最大字节数限制{"maxImageSize": "10000","maxImageBytes": "30000000"}