macOS 真香与一个创建日记的脚本
macOS 真香
刚用 macOS 时各种不适应,用了两个星期后渐渐适应了
macos 的一大优势就是他是类 linux 系统,可以方便的使用命令行,而命令行则是码农的最爱。
记日记的脚本
利用 note 命令自动创建一个日记文件,用 typora 打开,并根据当前的日期(年月日)自动将文件存放的路径下面。
设计到的知识点:
-
macOS 可以用
open -a xxx
或open -a xxx.app
来启动 xxx.app。可以打开 finder -> 应用程序 ,右击指定的 app -> 名称与拓展名字,得到 app 的全名。例如 typora 的全名就是
Typora.app
-
typora 支持在执行时加参数
open -a Typora.app fileName // 用 typora 打开某个文件 open -a Typora.app path // 用 typora 打开某个路径
除了 typora,vscode 和 goland 也支持这种用法
-
[shell 脚本的上下文](#shell 脚本的上下文)
-
shell 脚本
# create_or_open_diary.sh cd `dirname $0` pwd year=$(date "+%Y") mouth=$(date "+%m") day=$(date "+%d") file_path="./$year/$mouth" complete_file_path="$file_path/$day.md echo $year $mouth $day echo $file_path echo $complete_file_path if [ ! -d "$file_path" ] then mkdir -p $file_path fi touch $complete_file_path open -a typora $complete_file_path
-
为 note alias 别名
vim ~/.zshrc
alias note="bash ~/workspace/diaries/create_or_open_diary.sh"
source ~/.zshrc
我用的 zsh ,如果用的其他类型的 bash ,自动替换对应的 rc 文件即可
shell 脚本的上下文
在 /Users 路径下面建立一个 pwd.sh ,里面就一个指令,利用 pwd 来输出当前路径
# pwd.sh
pwd
➜ /Users bash pwd.sh
/Users
➜ /Users cd /
➜ / bash /Users/pwd.sh
/
当在 /Users 下面执行 pwd 时,得到的结果是 /Users
当在 / 下面执行 pwd 是,得到的结果是 /
pwd 得到的并不是 shell 脚本所在的路径
我希望每次执行 note 操作时,日记文件都会被记录到一个固定的路径(和 shell 脚本处于相同路径)下面,而不是随着我在执行 note 是所在的路径不同,日记文件也在飘忽不定。
如何得到 shell 脚本的路径?
-
dirname
这是 linux 下的工具,可以从字符串中裁剪出路径,例如对于一个
p1/p2/p3/p4.txt
用 dirname 执行后,将得到
p1/p2/p3
-
$0
在执行脚本时,可以用 $0 得到执行命令的第一个参数
/hello/arg.sh echo $0
bash /hello/arg.sh /hello/arg.sh
结合以上两者,就可以得到 shell 脚本的路径了。需要注意的地方是,bash 后面的参数必须时脚本的绝对路径。