2024 年 9 月事记

#zsh 逻辑表达式写法

zsh: 17 Shell Builtin Commands (sourceforge.io)

Like the system version of test. Added for compatibility; use conditional expressions instead (see Conditional Expressions). The main differences between the conditional expression syntax and the test and [ builtins are: these commands are not handled syntactically, so for example an empty variable expansion may cause an argument to be omitted; syntax errors cause status 2 to be returned instead of a shell error; and arithmetic operators expect integer arguments rather than arithmetic expressions.

  • zsh 中尽量使用[[]]避免潜在的问题。
  • 字符串比较一般用==
  • 数字比较一般用-eq
  • 文件/文件夹一般用-e file这种写法。
1
2
3
4
current_hour=$(date +%H)
if [[ $current_hour -eq 23 ]]; then
cd "$(device_backup_home_dir)" && auto_git_commit "$(device_backup_home_dir)"
fi

#sed 使用

在 macOS 中,sed 的 -i 选项需要一个备份后缀参数。

1
2
3
4
# linux
sed -E -i 's/xxx/yyy/g' ${file}
# macos
sed -E -i '' 's/xxx/yyy/g' ${file}

#cron 踩坑

cron 的变量不支持嵌套

1
2
3
4
# 支持
a="aa"
# 不支持
b="${a}bb"

#tmux 插件不加载问题

macOS 下无异常的配置和版本,到 Linux 下会出现插件下载后又自行清除的问题,定位后和 TMUX_PLUGIN_MANAGER_PATH 变量有关。
如果不手动指定,TMUX_PLUGIN_MANAGER_PATH 会被设置为$HOME/.tmux/plugins/,多了一个结尾的/,拼接会产生异常。

解决:

1
export TMUX_PLUGIN_MANAGER_PATH="$HOME/.tmux/plugins"