macOS 真香与一个创建日记的脚本

macOS 真香

刚用 macOS 时各种不适应,用了两个星期后渐渐适应了

macos 的一大优势就是他是类 linux 系统,可以方便的使用命令行,而命令行则是码农的最爱。

记日记的脚本

利用 note 命令自动创建一个日记文件,用 typora 打开,并根据当前的日期(年月日)自动将文件存放的路径下面。

设计到的知识点:

  1. macOS 可以用 open -a xxxopen -a xxx.app 来启动 xxx.app。

    可以打开 finder -> 应用程序 ,右击指定的 app -> 名称与拓展名字,得到 app 的全名。例如 typora 的全名就是

    Typora.app

  2. typora 支持在执行时加参数

    open -a Typora.app fileName	// 用 typora 打开某个文件
    open -a Typora.app path			// 用 typora 打开某个路径
    

    除了 typora,vscode 和 goland 也支持这种用法

  3. [shell 脚本的上下文](#shell 脚本的上下文)

  4. 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
    
    
  5. 为 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 脚本的路径?
  1. dirname

    这是 linux 下的工具,可以从字符串中裁剪出路径,例如对于一个

    p1/p2/p3/p4.txt
    

    用 dirname 执行后,将得到 p1/p2/p3

  2. $0

    在执行脚本时,可以用 $0 得到执行命令的第一个参数

    /hello/arg.sh
    echo $0
    
    bash /hello/arg.sh
    /hello/arg.sh
    

结合以上两者,就可以得到 shell 脚本的路径了。需要注意的地方是,bash 后面的参数必须时脚本的绝对路径

posted @ 2021-07-24 19:22  机智的小小帅  阅读(160)  评论(0编辑  收藏  举报