如何使用github+hugo搭建静态个人网站

1、github建仓

  1. 新建一个 GitHub 库
    注册一个 GitHub 账号。如果你已有账号,直接登录。如果你没有账号,注册并登录。
  2. 打开 GitHub Pages 官网,浏览并了解 User or organization site 部分对应的操作步骤。 GitHub Pages
  3. 新建一个 GitHub repository,库名为 username.github.io,username 即你的 GitHub 账号 username,新建 repository

2、hugo下载

  1. 下载安装命令
    Mac下使用命令:
    brew install hugo
    注意:需要提前安装 homebrew
  2. 检查安装状态:
    查看 Hugo 是否安装成功,可通过下列命令检查版本号
    hugo version

3、hugo建站

  1. 创建新的网站
    新建一个工作目录,执行下列命令:
    mkdir website; cd website
    hugo new site my_blog_web
  2. 克隆网站主题
    git clone https://github.com/xianmin/hugo-theme-jane.git theme # 将 jane 主题克隆至 "theme" 目录。
    也可以到该网页选择自己喜欢的主题
    Hugo Themes
  3. 编辑网站配置文件
    在上述新建文件夹 website 下,拷贝 theme/jane 默认配置文件
    cp theme/jane/dev-config.toml config.toml
    具体配置参考文件描述
  4. 本地预览网页效果
    执行下列命令,根据命令后提示打开网页,默认网址http://localhost:1313,即可预览网页
    hugo server
  5. 构建网页
    使用 hugo 命令可以构建网页,默认输出到 public 文件夹中

4、部署到github

  1. 进入 public 目录,初始化 Git 库。
    cd public # 生成的 HTML 文件保存在 "public" 目录中
    git init
  2. 将 Git 本地库关联至远程库。
    git remote add origin git@github.com:username/username.github.io.git
  3. 提交你的修改至本地库。
    git status # 查看当前修改状态。
    git add . # 添加所有修改过的文件。你也可以只添加某个文件。
    git commit -m "Add a new post" # "Add a new post" 是 commit message.
  4. 将你的修改推至远程库。
    在 public 目录下,将修改推至远程库。
    git push -u origin main
    恭喜!现在你已经拥有了一个自己构建的博客网站。网址地址是: https://username.github.io

常见问题

  1. git push fail 确认远程仓库名称是否和命令一致;
  2. ssh 认证失败 本地使用命令生成key;然后将 id_rsa.pub 的内容填充到 github->Settings->SSH and GPG Keys->Add New
    ssh-keygen
  3. 上传成功后访问网址无法显示
    注意选择github仓库下的配置:“root” or “docs”

MAC 升级 bash 并配置为默认程序

背景

  在 MAC 环境下,默认的 bash 为 3.x 版本,有时候一些 shell 命令需要在高版本上才支持,所以需要对 bash 环境进行升级。
  下列为 MAC 下升级及配置操作,备忘。

bash 升级

  • 检查 bash 版本
    bash --version
  • 使用 homebrew 安装新版本
    brew install bash
  • 查看已安装版本
    which -a bash
    /usr/local/bin/bash 为新安装的版本
    /bin/bash 为 MAC 自带版本
  • 验证新版本
    /usr/local/bin/bash --version

配置默认 bash 版本

  • 编辑配置文件
    sudo vim /etc/shells
    /usr/local/bin/bash 添加到最后一行,再执行下列命令把 bash 切到最新版本
    chsh -s /usr/local/bin/bash
  • 验证最新版本
    bash --version

其它

  • bash 新旧切换
    chsh -s /usr/local/bin/bash
    chsh -s /bin/bash
  • bash 配置文件
    ~/.bash_profile

[shell] 批量修改文件夹、文件名和文件内容

背景

  在日常工作当中,偶尔会遇到需要修改文件夹名字,修改文件名字以及修改文件内容的情况;当修改的关键字为固定内容的时候,且数量很多时,如果用人工手动修改,会非常耗时且乏味无趣。
  下列脚本为了解决这个问题提供了思路和实践。个人经验所学,实际使用可能会有一些问题,欢迎指教;脚本请按需采用。

  例如:

  • 将文件内容 cont 修改为 content
  • 将文件名 file_xxx.c 修改为 files_xxx.c
  • 将文件夹 dir1 修改为 direct1

脚本说明

修改文件内容

grep -rl ${key} --include="*.c" --exclude="*.bin" --exclude-dir=“tool” | xargs sed -i "s/${key}/${value}/g"

grep -rl ${key} --include="*.c" --exclude="*.bin" --exclude-dir=“tool”
提取关键字为 ${key} 的文件相对路径名,该文件路径的后缀为 .c,但是后缀不为 .bin,该文件的路径不能为 tool。

xargs sed -i "s/${key}/${value}/g"
替换文件中 ${key} 关键字为 ${value},文件为前一条命令中的内容。MAC 系统下 sed -i 后面要接空格 “”,具体说明可搜索一下。

修改文件名

find . -name "*${key}*" -type f | sed -e "p;s/${key}/${value}/g" | xargs -n2 mv

find . -name "*${key}" -type f
找到一个文件,该文件名包含关键字 ${key}

修改文件夹名

find . -name "*${key}*" -type d | sed -e "p;s/${key}/${value}/g" | xargs -n2 mv
找到一个文件夹,该文件夹名包含关键字 ${key}

脚本示例

#/bin/bash
# define array
dirs=(
"demo"
"demo2"
)

# define a associate array,must in bash version 4
declare -A dic
dic=(
    [cont]="replace"
    [cont2]="replace2"
)

for dir in "${dirs[@]}"; do
    if [ -d "${dir}/" ]; then
        echo "${dir}"
        cd ${dir}
        for key in $(echo ${!dic[*]}); do
            value=${dic[${key}]}
            echo "${key} ==> ${value}"
            # 1.修改文件内容
            grep -rl ${key} --exclude="*.bin" --exclude-dir="tool" | xargs sed -i "" "s/${key}/${value}/g"
            # 3.修改文件夹名
            find . -name "*${key}*" -type d | sed -e "p;s/${key}/${value}/g" | xargs -n2 mv
            # 2.修改文件名
            find . -name "*${key}*" -type f | sed -e "p;s/${key}/${value}/g" | xargs -n2 mv
        done
        cd -
    else
        echo "dir not exist!"
    fi
done

问题

  当替换的关键字内容有重复时,比如用 cont 替换 content,此时会由于内容重叠导致出现一些重复替换或无法替换的问题,请注意。