标签归档:macOS

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

我最近在用 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 开发效率

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 连接?

在 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 如何跳过默认密码规则,设定短密码

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 的摄像头

为什么要这么做?

昨天在推上看到一个视频,注意到他是使用 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 盘

因为要重装 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 系统中启动到恢复模式

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?

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

jb2ia

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

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

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

touch ~/.hushlogin

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

我昨天对 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 启动盘

我一直以来都是网络安装的 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. 使用启动盘重启

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