Mac ssh key

Mac 下创建了 ssh 密钥,但可能会发现不生效,原因是没有添加到列表中,可以用 ssh-add the_private_key_path 来添加,然后用 ssh-add -l 来列出列表确认已经添加。

但是可能会发现 mac 下重启后丢失所有 key, 需要重新用 ssh-add 添加,可以把密钥添加仅 keyChain 中来保存。

1
ssh-add -K the_private_key_path

Git 文件名大小写问题

由于 Mac 下文件名大小写不敏感,造成 git 下如果改了名字,譬如小写改大些,推送到 linux 服务器的时候会没有效果,Github 上的也是小写。
所以,如果在 Mac 上改文件名,需要用下面的命令

1
$ git mv --force myfile MyFile

ZSH历史命令自动补全

oh-my-zsh 的默认配置在碰到历史命令替换时需要先替换出来确认一遍才会执行,不会默认执行。

如原本下面的命令会直接进入新建的目录

1
2
3
$ mkdir dir
$ cd !$
$

但在 zsh(oh-my-zsh 默认配置) 中,会变成

1
2
3
$ mkdir dir
$ cd !$
$ cd dir

移除这个的默认配置,只需在配置文件终稿添加 unsetopt hist_verify 即可。

终端进入目录自动运行 shell 脚本

利用 prompt 钩子,可以在终端进入目录时执行特定的 shell 代码。如:

1
2
3
4
5
6
7
Call function 'foo'
PROMPT_COMMAND=foo

# The function
foo() {
    pwd
}

对于使用 oh-my-zsh 的情况,可以直接做成插件形式,如:

1
2
3
4
5
6
7
8
9
10
11
12
# ~/.oh-my-zsh/plugins/puglin-xx

setopt PROMPT_SUBST

typeset -ga chpwd_functions

chpwd_functions+='foo'

function foo() {
    # whatever code
    pwd
}

利用这个特性可以做一些特殊的需求,比如检测 git 仓库的用户名是否是合适的(使用多家 git 托管服务且用户名不一致的情况下有用),分支是否 ok 等。