使用 Renamer 批量重命名,节约重命名时间

d2b5ca33bd970f64a6301fa75ae2eb22 7

我最近在用 Youtube 看《喜人奇妙夜》(毕竟 Youtube 上有纯享版,体验太好了)。同时,为了方便我可以在地铁/高铁上看,我还会使用 Youtube-DLP 下载到本地。但,Youtube DLP 下载到本地的视频文件往往名字都特别特别的长,比如:

【纯享】《看不见的TA》i人闫佩伦和“鬼怪”张佑维变室友? | 《喜人奇妙夜》Amazing Night EP3 SKETCH #喜人奇妙夜 #闫佩伦 #张祐维 [XUsi1R1Ny80].f614.mp4

这个内容长度中存在了大量的无用信息,虽然对于 Youtube 这样的视频平台来说,有助于流量和搜索,但对于我这样的本地存储用户来说,大大的影响了我的本地观感,因此,我一般都会手动移出其中的无用信息。只保留作品名和基础的介绍信息,比如上面的文件名我会修改成 《看不见的TA》i人闫佩伦和“鬼怪”张佑维变室友?.mp4

当然,我可以写一个脚本来完成,但重命名这件事实在是太过于常见了,所以我也懒得写脚本(且脚本还需要指定路径,麻烦。),刚好,SetApp 套装中有一个 Renamer 的 App,可以解决这个问题,于是便有了这篇文章,介绍我自己是如何处理的。

分析目标和模块

Renamer 提供了多种重命名的能力,其中包括文本替换、正则表达式替换、数字、移出文本等多种能力,这些能力将会成为我稍后使用的工具。

d2b5ca33bd970f64a6301fa75ae2eb22
Renamer 提供的模块

如果看我们的文件名前后,可以很清晰的分辨出,我操作了两个部分:

  1. 去除了最前面的【纯享】
  2. 去除了后面一直到拓展名的中间介绍文字。

因此,我需要用到两个模块,来实现替换 —— 正则表达式(Regular Expression) 和文本替换(Find & Replace)。

配置替换

替换纯享

纯享因为是固定文本,所以替换比较简单,新增一个替换的动作,选择 Find & Replace,并配置只对文件名生效,设置 Find 为【纯享】,Replace 为空,就会在执行替换的时候,将【纯享】替换为空文本,来达到移除特定内容的效果。

d2b5ca33bd970f64a6301fa75ae2eb22 1

当然, 同样的功能你还可以用移除文本来操作 —— 选择 Remove Text, 并把要移出的 【纯享】放在里面即可。

d2b5ca33bd970f64a6301fa75ae2eb22 2

替换其他内容

【纯享】因为是固定文本,相对简单,但后续的内容则就复杂了许多,其中的内容会变化,且包含了大量的 ID、标签等信息,单纯的 Find & Replace 是无法解决的,因此我们这里用到正则表达式替换来完成。

你可以借助于 Regexr 这个网站来调试你的正则表达式,在上方编写你的表达式,并在下方填写你的测试文本,通过高亮,即可判断是否正确匹配。

d2b5ca33bd970f64a6301fa75ae2eb22 5

测试匹配正确后,复制上方的正则规则,在 Rename 中新增一个 Regular Expression 替换动作,配置成文件名 Only,并填入你的正则表达式。

d2b5ca33bd970f64a6301fa75ae2eb22 4

效果

最后,拖入你要修改名称的文件,就可以查看到批量修改文件名的效果了。这时你只需要拖入多个文件,就能一次性给 N 个文件完成更名的动作了。

d2b5ca33bd970f64a6301fa75ae2eb22 6

使用 fresh 来提升你的 Golang 开发效率

5e54199359bbafe0ef692365a9bcffb6

Golang 作为一个编译型语言,在编写程序时,一个不太方便的点便是每次修改完代码,都需要重新编译才能测试效果。虽然你可以使用 go run main.go 命令来运行一个 go 文件,但由于项目往往文件比较多、修改时还是需要手动输入命令比较麻烦,所以给 Golang 的开发过程带来了不少的问题。

fresh 就是一个帮助你执行一些重复命令的命令行工具,有了 fresh ,你就可以不用自己手动执行 go run main.go,它在检测到文件发上了变化后,会自动帮你中断掉当前进程,并重新执行命令,帮你实现 live-reload 的效果。

fresh 的执行效果

v1btrb

https://github.com/gravityblast/fresh

安装

安装比较简单,执行 如下命令后,你就可以在任何地方执行 fresh 命令了。

go get github.com/pilu/fresh
Code language: JavaScript (javascript)

执行

当你当前目录有 main.go 文件时,直接执行 fresh 就会自动执行 main.go 文件。不过,如果你想要自定义的话,也可以通过配置文件来完成。创建一个 sample.conf 文件,贴入如下配置,并执行 fresh -c sample.conf 就可以让 fresh 按照你的配置来执行命令。

root:              .
tmp_path:          ./tmp
build_name:        runner-build
build_log:         runner-build-errors.log
valid_ext:         .go, .tpl, .tmpl, .html
no_rebuild_ext:    .tpl, .tmpl, .html
ignored:           assets, tmp
build_delay:       600
colors:            1
log_color_main:    cyan
log_color_build:   yellow
log_color_runner:  green
log_color_watcher: magenta
log_color_app:<a href="https://github.com/gravityblast/fresh#usage"></a>
Code language: HTML, XML (xml)

如何用 SSH Config 来优化你的 SSH 连接?

text

在 Windows 的时候,我一度非常喜欢使用诸如 XShell 之类的软件,主要原因是我可以将不同的服务器信息保持在同一个软件当中,不用每次都手动保存(Putty往往就无法保存)。

而到了 macOS 之后,我不再使用 XShell 这样的软件来完成我的 SSH 工作流(事实上我也找不到类似 XShell 的软件,后来在 Setapp 软件包中发现了 Core Shell,但我已经有了下面的技巧了,就没再用)。

经过一番研究,我发现对于我的诉求来说,其实完全没必要使用一款第三方软件来完成,SSH 自带的功能即可完成。

再次 Review 一下我的诉求:

  1. 我希望不要输入 IP 地址,而是输入一个短语,或者是域名来连接我的服务器。
  2. 我希望能够支持自定义端口,因为我一般会把我的服务器端口从 22 改为一个随机的数字。
  3. 我希望可以指定密钥文件,因为我有多个密钥,不通的场景可能使用不同的密钥。

这些诉求如今我的新方法都可以实现。

SSH 支持自定义 Config 文件,而默认的 Config 文件位于 ~/.ssh/config 这个文件中,你可以在其中添加自己的配置来实现自定义 SSH。

比如这里用到的就是 SSH Config 中的 Host 定义,你可以以如下的规则来定义一个新的配置。

Host 主机名
    User 登录用的用户名
    HostName 登录用的主机名,可以是域名或者IP
    Port 登录用的端口号
    IdentityFile 需要使用的密钥文件

比如下图就是一个配置的例子

d2b5ca33bd970f64a6301fa75ae2eb22 3

通过在你的 Config 文件当中添加对应的定义,你就可以用 ssh 主机名 的方式来连接你的服务器了。

比如,我的树莓派的配置的主机名是 pi 那我就可以使用 ssh pi 的方式来连接到我的树莓派当中。

d2b5ca33bd970f64a6301fa75ae2eb22 5

macOS 如何跳过默认密码规则,设定短密码

fc09d8197fd6e42ee25a92c7ce900edb

macOS 为了确保安全,为系统设定了一个相对复杂的规则,因此,在使用的时候,你需要设定一个符合一般密码规则的密码。如果你试图输入一个短密码,会提示如下错误:

passwd: Credentials could not be verified, username or password is invalid.  Credentials could not be verified, username or password is invalid.
Code language: HTTP (http)

不过,家用电脑很多时候是没有这个必要性的,对于我这种居家使用,希望有密码,但又没必要特别长的密码的人来说,就可以考虑设定一个更短的密码。一方面,有短密码可以避免猫没事来踩我键盘,另一方面,短密码也不至于特别长,一觉醒来不用输入一个特别长的密码。

macOS 是如何设定你的密码规则的?

macOS 当中是有一个 Account Policy 的,系统设定了一个默认的 Policy 来限制你的密码必须符合某些特定的规则。

因此,如果你希望突破默认的 Account Policy ,则有两种方式:

  1. 替换现有规则:使用一个更加宽松的 Account Policy 来替代更加严格的 Policy ,则让自己不至于设置一个非常复杂的规则。同时也不会特别复杂。
  2. 干掉所有规则:如果你嫌弃规则的限制,也可以直接干掉所有的规则,这样就可以随心所欲设定规则。

替换现有规则

如果你需要替换现有的规则,则你需要先创建一个规则的文件,你可以只需执行如下命令来将当前的默认规则导出:

pwpolicy getaccountpolicies | awk 'NR>1' > ~/Desktop/file.plist
Code language: JavaScript (javascript)

导出成功后,可以打开编辑器,找到其中的 policyAttributePassword 字段,将其值进行修改

 policyAttributePassword matches '^$|.{1,}+'
Code language: JavaScript (javascript)

上面这个规则是使用正则表达式编写的,能通过任何字符串。

清除所有规则

如果你觉得设定规则还是麻烦, 那不妨直接干掉所有的规则好了。执行如下密码,即可干掉所有的规则。

pwpolicy -clearaccountpolicies

上述命令可以帮你干掉所有的账户规则,现在你可以对你的账户做任何事情了。

设置密码

设置完成账户规则后,你就可以执行 passwd 命令,来设定你的账户的密码,设置一个更短且好用的密码。

d2b5ca33bd970f64a6301fa75ae2eb22

需要注意的是,你修改的密码是不包含 KeyChain 的,如果你需要修改 KeyChain 的密码,则需要执行 security set-keychain-password 来修改 Keychain 的密码,你可以根据自己的需要修改 KeyChain 的密码。

9vzyn

延展阅读

本文参考了如下链接

https://apple.stackexchange.com/questions/337468/how-to-set-a-short-user-password-in-macos-mojave-and-later-10-14

https://apple.stackexchange.com/questions/293820/modify-pwpolicy-in-sierra

使用 Iriun Webcam + Pixel6 作为 macOS 的摄像头

black speaker on white table

为什么要这么做?

昨天在推上看到一个视频,注意到他是使用 Sony ZV1 作为直播摄像头的。而作为一个视频制作者,我的不少视频都是以真人 + 教程的形式提供给我的观众的,我突然想起来,或许我可以使用手机来作为摄像头来完成视频的录制。

和 MBP 自带的摄像头相比,可以让我在视频中更加清晰、更加明亮,让我的视频的观众们可以更好的看到我(没错,就是这么自恋)。于是,我决定用我的备用机 — Pixel 6 来完成这个操作。

为什么是 Iriun Webcam

Iriun Webcam 的一个好处是免费版可以使用 4K,且免费版的水印也十分的不明显,对于白嫖用户十分友好。如果你需要完全去除水印或更加强大的控制能力,则可以付费获得。不过对于绝大多数场景,免费版足矣。

所需软件

  • macOS 驱动下载:https://iriun.com/
  • Android Play Store 应用:https://play.google.com/store/apps/details?id=com.jacksoftw.webcam
  • iOS App Store 应用:https://itunes.apple.com/us/app/iriun-webcam-for-pc-and-mac/id1439303579?mt=8

所需硬件

  • 与手机适配的 USB 数据线:如果本地网络速度足够快,也可以不使用数据线。不过我推荐你使用 USB 数据线,主要是理论上会更加的稳定。

操作流程

安装软件

PC 端

想要实现软件连接,需要先下载安装相应的软件。Iriun Webcam 支持 WIndows 、 macOS 和 Ubuntu ,你只需要访问其官网,并下载对应的软件,并在本地进行安装即可

d2b5ca33bd970f64a6301fa75ae2eb22 16

手机端

手机端则可以在你的手机上搜索 Irirun webcam,并进行安装。

d2b5ca33bd970f64a6301fa75ae2eb22 17

配置设备连接

安装完成后,在 macOS 上打开 Iriun Webcam 会看到如下的界面,此时说明你的 PC 已经准备好了。

未连接状态的效果

在手机上打开同样的软件,稍等片刻,二者就会自动连接到一起

已连接状态的效果

换用 USB 连接

使用 Wi-Fi 连接的最大的问题是不稳定,以及延迟高。因此,你可以选择改用 USB 数据线进行连接,从而获得一个更低的延迟和更稳定的视频效果。

你需要先将自己的手机开启开发者选项,并开启「USB 调试」,随后将手机与电脑连接(如果有授权窗口,则授权 PC 进行调试)。

授权完成后,稍等片刻软件就会自动刷新,手机后的「Wi-Fi」变为「USB」,则说明你已经成功切换为使用 USB 连接。

配置软件摄像头

当你配置完成 Iriun 的 Webcam 之后,就可以在你日常使用的软件当中切换具体使用的摄像头为 Iriun Webcam 来获得从手机取得的视频画面。

d2b5ca33bd970f64a6301fa75ae2eb22 14
腾讯会议的摄像头选择框

如果你使用 OBS 的话,还可以将音频输入修改为 Iriun Webcam audio (腾讯会议并不支持),来获取手机当中传递过来的音频信号。

d2b5ca33bd970f64a6301fa75ae2eb22 15

总结

使用手机摄像头来替代 Mac Book Pro 上自带的摄像头可以帮助我们获得一个更好的画质和视频观看体验。相比于购买一个全新的摄像头,不妨用上你的旧手机来完成你的直播诉求。而你所需要的,不过是一款免费软件 + 一根 USB 数据线。

在 macOS 下创建启动 U 盘

black and silver laptop computer

因为要重装 Mac mini ,所以研究了一下怎么配置启动 U 盘。

依赖

想要给 U 盘制作一个 macOS 的启动盘,首先,你需要有一个 macOS 的系统,并且有相应的安装软件(Install macOS Catalina 之类的)。此外,还需要有相应的容量 U 盘。

根据 macOS 的系统大小,我比较建议你使用 8G 或 16G 以上的 U 盘。

获取安装软件

由于安装软件比较大,所以一般情况下我们也不会保留这个软件,但当我们需要的时候,就要去安装对应的软件了。

你可以访问 Apple 的官网,找到相应的软件下载地址

系统下载地址:https://support.apple.com/zh-cn/HT211683

如果你已经升级了 Big Sur ,却希望制作 Catalina 的启动盘,那么你需要看看 这篇文章

选择你需要使用的系统

image

会自动打开下载界面

g645c

你只需要点击其中的获取,就可以下载相应的系统镜像。等软件自动下载并安装完成后,就可以进行安装操作了。

查看 U 盘挂载路径

想要制作启动 U 盘,自然要说明对应的路径,这个时候你需要先找到你自己的 U 盘。

你可以在终端中执行 df -h ,在其中找到你自己的 U 盘,比如我这里的是 /Volumes/install

制作启动盘

准备好软件和U盘后,剩下的比较简单,直接执行命令即可。

以 Catalina 为例,只需要执行如下命令

sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

其他版本的系统可以参考 https://support.apple.com/zh-cn/HT201372

如何从 macOS 系统中启动到恢复模式

black and silver laptop computer

macOS 可以在开机的情况下通过按 Control + R 启动到 恢复模式,那是否有不按 Control + R 就能进入到 Recovery 的方式呢?

答案是,有的

你在 macOS 的 Terminal 中输入如下命令,即可进入到恢复模式中。

sudo nvram "recovery-boot-mode=unused"
sudo reboot
Code language: JavaScript (javascript)

在操作完成后,你可以执行如下命令来移除添加的 Flag,重新进入到正常操作的系统中。

nvram -d recovery-boot-mode

来源:https://apple.stackexchange.com/questions/367336/can-i-initiate-a-macos-restart-to-recovery-mode-solely-from-the-command-line

如何隐藏 oh-my-zsh 的 Last Login?

green and black digital device

oh-my-zsh 是我目前配置新的 Mac 必然会装的。不过,oh-my-zsh 一直有一个我不喜欢的就是它会自动一个 Last Login 的 Hello Message。

jb2ia

这个 Hello Message 倒是不占位置,但是我觉得它让我的命令行不那么极简

因此,我希望将这个提醒删除掉。

删除的方法不复杂,只需要在用户的根目录创建一个空白的~/.hushlogin 文件即可

touch ~/.hushlogin

从语言到项目:看文件管理方式的改变

029a1f00793d00a4a88e458d5cdfebb0

我昨天对 macOS 进行了重装,因此,不少的文件发生了改变,借此机会,谈一下新的系统下,我是如何管理我的文件的。

从语言入手

在我的根目录下,又一个文件夹 Developer,其下以语言为基础,分了多个不同的语言和文件夹,在不同的语言文件夹下面,则是对应的项目。

 ~/Developer/ tree -d -L 1
.
├── ebook
├── frontend
├── golang
├── hexo
├── minapp
└── php
Code language: JavaScript (javascript)

这样的组织简洁明了,但遇到的问题是,当你要处理一个相对复杂的项目的时候,就会出现难以管理的问题。因为你的一个项目中的多个文件夹会分布在不同的文件夹下。

因此,在新的文件夹管理方式中,我引入了项目的概念。

转换为项目实现

在新的目录组织方式下,我在根目录放置了两个文件夹,分别是 DeveloperProjects

 ~/ tree -d -L 1
.
├── Developer
├── Projects
└── Public
Code language: PHP (php)

Developer 文件夹和之前的项目没有区别,依然是基于语言 + 基于文件夹。不同的是,我在 Projects 中,以项目为基准,建立文件夹。

 ~/Projects/ tree
.
├── project1
│   └── minapp-for-client -> /Users/bestony/Developer/minapp/project1
└── projce2
    ├── main -> /Users/bestony/Developer/golang/src/projec2
    └── ops-config -> /Users/bestony/Developer/golang/src/project3
Code language: JavaScript (javascript)

这样我就可以将一个项目的文件放置在一个文件夹下进行操作。

具体的操作是这样的:

  1. 在 Projects 下建立项目文件夹
  2. 进入到项目文件夹
  3. 使用软链接的方式,建立目标文件夹的快捷方式

这样的好处是,当我进行项目研发的时候,可以直接进入到 projects 目录,在相应目录根据需要进入到特定的文件夹。方便快捷。

总结

从语言到项目,表现出所专注的项目的复杂度不断提升,于此同时,相应的管理方案也需要跟着调整,以适应相应的变化。

制作一个 macOS 启动盘

black and silver laptop computer

我一直以来都是网络安装的 macOS ,但这次我的网络死活没有加载到恢复服务器,我就从相机中拔了一张空白的 SD 卡,来做一个启动盘。

1. 安装 macOS 镜像

安装制作 macOS 启动盘的时候,你需要这样一个 安装 macOS Catalina 的磁盘镜像。

osev1

但正常情况下,我们会把安装 OS 的软件删除掉(毕竟占地 8G),所以,如果你需要制作启动磁盘,第一步就需要安装 macOS 镜像。

你可以访问 App Store 下载:https://itunes.apple.com/cn/app/macos-catalina/id1466841314?ls=1&mt=12

2.制作启动盘

制作启动盘对于磁盘的大小和文件格式有要求,需要你的磁盘

  • 大于 12 GB
  • 磁盘格式为 macOS 拓展文件格式

安装完成 Catalina 后,就可以制作启动盘了,具体的命令如下

sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/install

这里我的磁盘的名称是  install ,如果你的不是,则需要修改为对应的名字。

m8nv3

3. 使用启动盘重启

制作好启动磁盘,就可以试着使用你刚刚制作的启动磁盘重启,并使用其恢复。

macOS 重装记

black and silver laptop computer

我隔一段时间就会重装一次系统,原因是我的系统中的环境过多,会导致系统中的 PATH 紊乱。因此,当出现系统无法正常工作的时候,我就会考虑重装一次系统。

重装系统需要备份一些东西,做一些处理,写一篇博客记录一下,也方便我自己使用。

清理无用文件

1. 清理包管理器安装的依赖文件

我经常会使用 Python、Node.js 来写一些脚本,这些脚本会依赖 npm 生态下的 package。这些 package 可以基于 npm 下载又或者是类似 python ,提供了 requirements 文件的项目,可以使用命令快速恢复环境,因此,我会推荐将这些可以快速恢复的文件,直接清理掉,以加快安装的速度。

具体包括:

  • Node.js 的 Node Modules
  • Python 的 venv
  • PHP 的 vendor

这里我会使用这样的命令来进行删除

下面这段代码执行时不会确认,因此,如果修改,请再三确认再执行,避免酿成大错。

find . -name "node_modules" -exec rm -rf '{}' +
Code language: JavaScript (javascript)

具体可以参考

https://www.ixiqin.com/2019/05/tool-command-delete-the-current-directory-node_modules-command/

清理完成后,项目目录会从 21G 瘦身至 7.6 G。

备份重要文件

备份 SSH 信息

一个很重要的需要备份的文件,就是我的 SSH 密钥/公钥,我管理服务器都需要它。因此,需要对齐进行备份

cp -R ~/.ssh /Volumes/backup/ssh
Code language: JavaScript (javascript)

这里的 backup 是我的单独的磁盘,用来备份资料的。

备份项目资料

我会把所有涉及到开发的资料都放在一个文件夹里,因此,在处理备份的时候,我只需要把大的文件夹备份即可解决项目文件的存储问题。同时,因为不删除 .git 记录,还可以保留数据的编辑记录。

tar -zcvf /Volumes/backup/project.tar.gz ~/Developer

备份 MySQL 数据库

我使用 homebrew 安装了 MySQL ,因此,也需要把 MySQL 数据备份出来,以免后续搭建开发环境成本太高。执行命令,即可将所有数据库备份。

mysqldump -uroot -p --all-databases  --result-file=dump.sql

执行完命令,数据就会备份在当前目录下的 dump.sql 文件,接下来你只需要将其移动到你的备份文件中。

备份软件列表

备份软件列表,以方便后续可以方便的进行恢复,以免遗漏。当然,你也可以选择用到什么安装什么。但对于一些比较基础的、常用的,我还是比较喜欢重装完就安装,省的用到的时候现场装。

软件列表需要备份的有三处:

  • /Applications
  • brew list
  • brew cask list

需要做的就是将这些信息打印出来,并导出到 txt 文件,方便后续恢复。

ls /Applications > applications.txt
brew list > brew.txt
brew list --cask > brew-cask.txt
Code language: PHP (php)

备份 dotfiles

我们在 ~ 目录下放置了不少常用的 dotfile,也需要将其备份,以便后续使用,因此,你也可以将这部分文件备份到你自己的磁盘中。

一些值得备份的文件

  • .gitignore
  • .zshrc
  • .gitconfig

你可以通过执行如下命令,找到隐藏的 dotfiles

ls -a | grep "^\."
Code language: JavaScript (javascript)

当然,你也可以选择将其放置在 Github 上,开放自己的 dotfiles 也是一个非常常见的行为。

其他一些没有被 iCloud 备份的文件

我默认开通了 iCloud,因此 Documents 是不需要我进行维护的,不过,还有一些地方是 iCloud 无法覆盖的,因此,需要注意自行备份。他们包括

  • ~/Downloads:如果你和我一样,比较喜欢把 downlods 作为 workspace

还有哪些值得备份的?

  • 比如 Clash X,方便重装后快速联网
  • 比如 1Password 的密码备份文件,方便重装后快速恢复

重装系统

重启 macOS,并在重启后,按下 Command + R,来进入到维护模式,在维护模式中,你可以重装系统。

其他

如果你还有在备份的时候值得注意的,可以一并告诉我。

Reference

用 HomeBrew 安装字体

我因为有一些时候需要做 PPT,需要安装一些特定的字体,但是 macOS Catalina 的 字体册应用总是 Crash ,因此,我决定使用 HomeBrew 来安装字体

配置 Tap

使用 Homebrew 安装字体,就需要配置相应的 Tap (可以理解为 Ubuntu 中的 Source 和 CentOS 中的 Repository。

brew tap homebrew/cask-fonts

安装字体

执行命令,就可以安装相应的字体。

brew cask install font-noto-sans-cjk-sc
brew cask install font-noto-serif-cjk-sc
brew cask install font-jetbrains-mono
brew cask install font-source-han-noto-cjk

如果你想要搜索一个字体怎么办?打开 Github 页面

在其中点击 Find File

yda0r

并在新的界面中输入你想要的字体的英文名,比如 Ubuntu

8d0ko去掉最后的 .rb ,就是你安装时使用的字体名,比如,安装 Ubuntu 字体,只需要执行 brew cask install font-ubuntu