Jiahong 的个人博客

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

Mac——查看文件占用情况


整体说明

  • 快速查看非隐藏第一层目录大小:du -sh */
  • 包含隐藏目录:find . -maxdepth 1 -type d ! -name "." -exec du -sh {} \;
  • 按大小排序:在上述命令后加 | sort -hr
  • 查看逻辑大小(对应稀疏文件):du -shL */

最常用:显示第一层目录大小(人类可读格式,如 M/G)

  • 命令详情:

    1
    du -sh */
  • 命令解释:

    • du:统计目录/文件的磁盘占用;
    • -s(--summarize):只显示总大小(不列出子文件/子目录的详细大小);
    • -h(--human-readable):用人类易读的单位(K/M/G)显示;
    • */:通配符,只匹配当前目录下的「第一层子目录」(结尾的 / 是关键,排除文件,只选目录);
  • 简单直接,默认显示「实际磁盘占用」(和 Linux du -sh */ 逻辑一致),适合快速查看


精准筛选第一层目录(避免通配符遗漏,如隐藏目录)

  • */ 会匹配所有非隐藏的第一层目录,但如果有「隐藏目录」(如 .hidden_dir),会被遗漏

  • 如果需要包含隐藏目录,用 find 筛选第一层目录,再传递给 du:

    1
    2
    # 包含隐藏目录的第一层目录大小(人类可读)
    find . -maxdepth 1 -type d ! -name "." -exec du -sh {} \;
  • 命令解释:

    • find .:从当前目录(.)开始查找;
    • -maxdepth 1:只查找「第一层」(不递归子目录);
    • -type d:只匹配目录(排除文件);
    • ! -name ".":排除当前目录本身(只保留子目录);
    • -exec du -sh {} \;:对找到的每个目录,执行 du -sh 统计总大小;

按大小排序(方便找出最大目录)

  • 如果想按目录大小「从大到小排序」,结合 sort 命令(Mac 自带 BSD sort,参数和 Linux 略有差异):

    1
    2
    3
    4
    5
    # 第一层目录大小(非隐藏),按大小降序排序
    du -sh */ | sort -hr

    # 包含隐藏目录,按大小降序排序
    find . -maxdepth 1 -type d ! -name "." -exec du -sh {} \; | sort -hr
  • 命令解释:

    • sort -hr:-h 识别人类可读单位(如 M/G),-r 反向排序(从大到小);

显示「逻辑大小」(而非磁盘占用,对应稀疏文件场景)

  • 如果想查看目录的「逻辑总大小」(而非磁盘占用,和 ls 统计逻辑一致),用 du -shL */:

    1
    2
    # 第一层目录的逻辑总大小(人类可读)
    du -shL */
  • 命令解释:

    • -L(--dereference):跟随符号链接,并统计链接指向文件的「逻辑大小」(而非磁盘占用);
    • 适合用于确认目录的逻辑总数据量(比如对比 Linux 上的逻辑大小)

关键补充:Mac 和 Linux 的 du 差异

  • 单位一致性:-h 参数在 Mac 和 Linux 上行为一致(K/M/G 单位);
  • 隐藏目录:Mac 上 */ 不匹配隐藏目录,需用 find 命令包含;
  • 稀疏文件:Mac 上 du 默认统计「实际磁盘占用」,如果目录内有稀疏文件(未展开),du -sh 显示实际占用,du -shL 显示逻辑大小

统计一个文件夹下所有数据逻辑大小

  • 递归列出所有数据,加起来,并以 MB(兆字节)为单位输出(Mac 和 Linux 通用):

    1
    ls -lR ./ | awk '{sum += $5} END {print sum/1024/1024 "M"}'
  • 命令解释

    • ls -lR ./:递归输出当前目录下所有文件/目录的详细信息(作为数据源)
      • -R(recursive,递归):不仅列出当前目录的文件/目录,还会递归列出所有子目录下的文件/目录
      • 注意:不包括隐藏文件和文件夹,可以通过改为下面的指令来显示隐藏文件
        • ls -laR ./,包含 . 和 ..(ls -l 中目录的第5列是“目录元数据大小”(不是目录内文件总大小),数值极小,可以忽略)
        • ls -lAR ./,不包含 . 和 ..
    • awk '{sum += $5} END {print sum/1024/1024 "M"}':计算所有文件的逻辑大小总和,并转换为 MB 单位
      • awk 是文本处理工具,这里用于“提取第5列的字节数,求和后转换为 MB”:
      • 循环累加({sum += $5}):
        • $5:表示取每一行的「第5个字段」(awk 中用 $n 表示第n个字段,字段默认用空格分隔)
        • sum += $5:定义一个变量 sum,把每一行第5列的数值(文件逻辑大小,字节)累加到 sum 中
        • 注意:目录的第5列(几十字节)也会被累加,但因为数值极小,对总结果几乎无影响(比如100个目录的元数据总和可能只有几 KB,相对于几百 MB 的文件总和可忽略)
      • 最终输出(END {print sum/1024/1024 "M"}):
        • END:表示“所有行都处理完后,执行以下操作”(仅执行一次)
        • sum/1024/1024:单位转换:字节 -> KB(除以1024)-> MB(再除以1024)
        • "M":拼接字符串,让输出结果带单位(比如 600M 而非纯数字)
        • print:输出最终结果

注意统计的是「逻辑大小」,不是「磁盘实际占用」

  • 逻辑大小:文件本身的“理论大小”(比如稀疏文件的预留空间、普通文件的实际数据大小),和 ls -lh 显示的大小一致;
  • 磁盘实际占用:文件在磁盘上真正占用的空间(比如稀疏文件的实际写入数据大小),需用 du 统计;
  • ls -l 中目录的第5列是“目录元数据大小”(不是目录内文件总大小),但因为数值极小(通常几十字节),累加后对总结果(几百 MB)几乎无影响,无需刻意排除

Ubuntu——添加自定义的软件到启动器

日常使用Ubuntu时,某些自己编写的脚本(程序)或者下载的程序不能从启动器搜索到


问题描述

  • 自己编写的脚本
  • 自己编写的程序
  • 网上自己下载的程序(不是通过apt-get或者APPStore安装)

解决问题

编写程序启动脚本

如果需要运行的就是脚本这一步可以不用

  • 编写shell脚本,脚本内容为启动运行程序
    • 涉及到程序的名称这里应该用绝对路径
  • 脚本可以放到任意地方,一般和当前程序在一个文件夹下即可

添加脚本执行权限

1
chmod +x exmaple.sh

新建启动

  • 新建文件到指定文件夹

    1
    2
    cd /usr/share/applications
    sudo gedit example.desktop
  • 编辑文件如下格式

    • Name是程序搜索时会出现的名字
    • Exec是执行脚本路径,必须有执行权限,否则在启动器中仍然搜索不到该程序
    • Icon是软件的图标,这里可以任意自定义图标,从网上下载或者自己生成均可
      1
      2
      3
      4
      5
      6
      7
      8
      [Desktop Entry]
      Version=1.0
      Name=Example
      Exec=/home/username/example.sh
      Terminal=false
      Icon=/home/username/example.png
      Type=Application
      Categories=Development

测试

  • 按键: Win键
  • 输入Example
  • 如果出现图标和名字对应的程序,说明成功
  • 如果不成功,复查以下问题
    • 启动脚本路径是否正确且为绝对路径
    • 执行权限是否已经成功设置
    • Name是否设置正确

Markdown——基本语法

Markdown基本语法


上下标

<sup>上标</sup>

文字上标

<sub>下标</sub>

文字下标


删除线

~~删除线~~

删除线


引用

> 一级引用
>> 二级引用
>>> 三级引用

一级引用

二级引用

三级引用


列表

* 一级列表
    * 二级列表
    - 二级列表
    + 二级列表
* 一级列表
- 一级列表
+ 一级列表
  • 一级列表
    • 二级列表
    • 二级列表
    • 二级列表
  • 一级列表
  • 一级列表
  • 一级列表

    1. 有序列表
      • 无序列表
      • 无序列表
    2. 有序列表
  1. 有序列表
    • 无序列表
    • 无序列表
  2. 有序列表

分割线

分割线
***
---

分割线




链接

[链接](https://joezjh.github.io/ "鼠标放到链接上显示此提示")

链接


图片

![图片标题](图片链接 "鼠标放到图片上显示此提示")

图片标题


可设置大小的图片

<img src="/Notes/xxx/xxx/xxx.png" title="" height="80%" width="80%">

表格

| 左对齐标题 | 右对齐标题 | 居中对齐标题 |
| :------| ------: | :------: |
| 短文本 | 中等文本 | 稍微长一点的文本 |
| 稍微长一点的文本 | 短文本 | 中等文本 |
左对齐标题 右对齐标题 居中对齐标题
短文本 中等文本 稍微长一点的文本
稍微长一点的文本 短文本 中等文本

折叠

<details>
    <summary><span style="color:blue">>>>点击展开折叠内容...<span></summary>
    这里是折叠内容
</details>
>>>点击展开折叠内容...

Hexo——不显示post时间


方案

  • 不同主题不同

next主题

  • 去除正文页面的post时间:

    • 在./themes/next/layout/_macro/post.swig中找到”post-time”相关的tag,然后注释掉该tag的所有内容(注释方式为``)
  • 去除归档中每个文档的时间

    • 在./themes/next/layout/_macro/post-collapse.swig中找到”post-time”相关的tag,然后修改该tag中的内容
      1
      2
      {# {{ date(post.date, 'MM-DD') }} #}
      {{ date(post.date, ' ') }}
  • 去除归档中的年份

    • 在./themes/next/layout/archive.swig中找到”archive-year”相关的tag,然后修改该tag中的内容,把关键信息注释掉
      1
      2


Hexo——相关问题汇总

本文记录Hexo使用过程中可能遇到的问题


Hexo生成的html文件是空的

  • 表现为部署到云端后,显示为空白页面

问题起因

  • 由于node版本问题导致的,可能是node版本太新了

  • 重新安装node为旧版本即可,本文使用的暂时是node 12版本

  • 安装命令(注意:直接使用brew install node@12可能无法安装成功,会出现找不到指定版本的错误,12版本太老了,过期了):

    1
    2
    3
    brew install nvm ## 安装nvm后按照提示将相应启动脚本配置到~/.zshrc中
    nvm install 12.14.0
    nvm use 12.14.0
  • nvm use 只是临时切换 node 版本,只适用于当前 terminal,如果打开新的 terminal,node 可能还是之前的旧版本。如果想要永久切换的话,可使用如下命令(实际上,本地切换到12.14.0后重启terminal也是该版本,未发现其他问题):

    1
    nvm alias default 12.14.0

符号有问题导致编译错误

  • 问题现象:编译 .md 文档时出现错误 Unhandled rejection Nunjucks Error: [Line xx, Column xx] expected variable end

  • 问题起因:Nunjucks 模板引擎可能会将 LaTeX 表达式中的某些符号(如 {, }, _, \ 等)误认为是模板语法的一部分,从而导致解析错误

  • 修复方式:

    • 方式一:不要写容易冲突的字符,一般来说常见的是 这两个,可以在中间加上空格(这不会改变latex内容),切换为 { {和} }

    • 方式二:使用

      1
      	

      $$
      rgt_{i \cdot }(\boldsymbol{v}) = \mathbb{E}_{v \sim F}\left[\max_{{v’}_{i \cdot } \in V_{i \cdot }} u_{i \cdot }(v_{i \cdot }; ({v’}_{i \cdot }, \boldsymbol{v}_{-i \cdot })) - u_{i \cdot }(v_{i \cdot }; \boldsymbol{v})\right].
      $$

      ```

      • 注:这种方式下,错误会消失,但是latex公式无法被渲染
  • 注:在使用 jinja2 模板代码时,常常会出现问题,建议统一使用类似 {% set a=10 %} 的方式解决

Ubuntu-Jupyter——Python2与Python3共存

在Jupyter中同时配置Python 2和Python 3环境


准备工作

  • 检查对应的虚拟环境(Python2和Python3)是否都已经安装成功,如没有的话请安装相应版本号,下面是管理包时常用的一些命令

    • 检查版本号

      1
      conda env list # check all python versions
    • 创建虚拟环境

      1
      conda create -n Python3 Python=3.6 # Python3可以是自己自定义的名字
    • 激活虚拟环境

      1
      source activate Python3 # Windows中不需要`source`
    • 停止虚拟环境

      1
      deactivate Python3
    • 从硬盘删除虚拟环境

      1
      conda remove -n Python3 --all

Jupyter on Python 3

还需要配置Python2

  • 检查Python2对应的pip版本大于等于9.0

    1
    python2 -m pip --version
    • 注意,如果python2指的是我们想设置的版本,如果电脑上对应多个版本的Python2,请选择对应的那个,后面的pip会根据Python2版本自动被确定下来,比如可使用/home/jiahong/anaconda2/envs/Python3.6/python绝对路径来指定确定的Python版本
    • 这里的python2 -m是用于指定pip版本的修饰,用于指明pip的版本,所以上一步中的路径指定也可以直接直接pip的绝对路径
  • 安装方法1

    1
    2
    python2 -m pip install ipykernel
    python2 -m ipykernel install --user
    • 这种安装方法是可以随意重复的,不会造成重复安装,所以可以直接将Python 2和Python 3两个版本都安装一遍
  • 安装方法2

    1
    2
    3
    conda create -n ipykernel_py2 python=2 ipykernel
    source activate ipykernel_py2 # On Windows, remove the word 'source'
    python -m ipykernel install --user

Jupyter on Python 2

  • 将上面的Python2全都指定为Python3即可
    • 比如
      1
      2
      python3 -m pip install ipykernel
      python3 -m ipykernel install --user

Hexo——使用总结

Hexo 使用总结


在博客中引用自己的博客

  • 在 _config.yml 中设置属性

    1
    permalink: :title.html
  • 引用方式

    1
    2
    3
    # 引用文档,以引用论文为例
    # 引用的应该是生成时使用的文件路径或者title,后面跟上.html,但是还要根据不同设置来修改,总之就是访问时的链接
    [引用示例](/Notes/Hexo/Hexo——使用总结.html "/Notes/Hexo/Hexo——使用总结.html")

引用示例


导入图片

  • 在同目录下新建与Markdown文档文件名相同的文件夹,将图片存入文件夹中
  • 在Markdown文档中使用特殊语法导入
    1
    {% asset_img picture.png descreption %}

插入LaTex公式

LaTex公式

  • 在线公式编辑地址
  • LaTex公式用法参见LaTex——笔记

借助工具插入公式

MathJax引擎(推荐)
  • 这种方式只需要在是实现时首先添加引擎代码,后面就可以完全像是Latex一样写公式
头部添加
  • 添加头部如下

    1
    2
    <!-- <script src="//cdn.bootcss.com/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"  type="text/javascript"></script> -->
    <script src="https://cdn.jsdelivr.net/npm/mathjax@2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>
    1
    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>
    • 说明:
      • 第一个头部可用,在各种浏览器均能正确加载
      • 第二个涉及到https的安全性问题,在部署到GitHub时,某些浏览器上不能正确加载
  • 测试说明:

    • yilla主题下Chrome和Firefox浏览器中不添加上面的头部当前文档也能识别出公式, 其他浏览器未测试
    • next主题下必须加上这个头部才行
写公式
  • 行内公式
    1
    公式如下: \\(\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\\) 所示

公式如下: \(\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\) 所示

  • 行间公式
    1
    公式如下:$$\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$所示

公式如下:$$\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$所示

  • 公式等号对齐

    • 公式如下:

      1
      2
      3
      4
      5
      6
      7
      8
      $$
      \begin{align}
      Q(\theta, \theta^{i}) &= \mathbb{E}\_{Z}[logP(Y,Z|\theta)|Y,\theta^{i}] \\\\
      &= \mathbb{E}\_{Z\sim P(Z|Y,\theta^{i})}[logP(Y,Z|\theta)] \\\\
      &= \sum_{Z} P(Z|Y,\theta^{i})logP(Y,Z|\theta) \\\\
      &= \sum_{Z} logP(Y,Z|\theta)P(Z|Y,\theta^{i})
      \end{align}
      $$

      $$
      \begin{align}
      Q(\theta, \theta^{i}) &= \mathbb{E}_{Z}[logP(Y,Z|\theta)|Y,\theta^{i}] \\
      &= \mathbb{E}_{Z\sim P(Z|Y,\theta^{i})}[logP(Y,Z|\theta)] \\
      &= \sum_{Z} P(Z|Y,\theta^{i})logP(Y,Z|\theta) \\
      &= \sum_{Z} logP(Y,Z|\theta)P(Z|Y,\theta^{i})
      \end{align}
      $$

Google Chart服务器
  • 引用方式
    1
    2
    # <img src="http://chart.googleapis.com/chart?cht=tx&chl=Latex公式" style="border:none;">
    <img src="http://chart.googleapis.com/chart?cht=tx&chl=\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}" style="border:none;">
forkosh服务器
  • 引用方式
    1
    2
    <img src="http://www.forkosh.com/mathtex.cgi? Latex公式">
    <img src="http://www.forkosh.com/mathtex.cgi?\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}">

给文字加颜色

  • 给文字添加颜色示例

    1
    <span style="color:red">红色文字</span>

    红色文字

LaTex——省略号

省略号在LaTeX中的使用

  • 参考链接:LaTeX入门(6)
  • 常见的省略号有:“\ldots”,“\cdots”,“\vdots”,“\ddots”等
  • 对于常规的“\ldots”(下),“\cdots”(中),一般来说,使用“\dots”更好些,能够自动适配选择位置
  • “\vdots”,“\ddots”则用在特殊情况下,比如矩阵等

LaTex——笔记

LaTex使用笔记


LaTex公式等号对齐示例

  • LaTex公式等号对齐

    1
    2
    3
    4
    5
    6
    7
    $$
    \begin{align}
    L(x)&=U(x) \\\\
    &=N(x) \\\\
    &=M(x)
    \end{align}
    $$
    • 其中\\表示换行&表示每一行的对齐点
    • 在Markdown文档中要注意\\\\才对应\\,因为\在Markdown文档中是转义字符

      $$
      \begin{align}
      L(x)&=U(x) \\
      &=N(x) \\
      &=M(x)
      \end{align}
      $$


LaTex特殊公式总结

  • LaTex特殊公式总结
    LaTex 符号
    \partial \(\partial\)
    \nabla \(\nabla\)
    \infty \(\infty\)
    \int \(\int\)
    \iint \(\iint\)
    \iiint \(\iiint\)
    \oint \(\oint\)
    \triangle \(\triangle\)
    \bigtriangledown \(\bigtriangledown\)
    \triangleleft \(\triangleleft\)
    \triangleright \(\triangleright\)
    \circ \(\circ\)
    \odot \(\odot\)
    \otimes \(\otimes\)

LaTex公式空格类型总结

  • 公式空格总结表
    LaTex 空格效果
    a\qquad b \(a\qquad b\)
    a\quad b \(a\quad b\)
    a\ b \(a\ b\)
    a; b \(a; b\)
    a, b \(a, b\)
    ab \(ab\)
    a!b \(a!b\)

LaTex公式后面加上序号

  • 公式后面加上序号示例

    1
    $$y(x) = x^{2} \tag{1}$$

    $$y(x) = x^{2} \tag{1}$$


LaTex公式中分段函数的使用

  • 大括号实现分段函数示例

    1
    2
    3
    4
    5
    $$f(x)=
    \begin{cases}
    0& \text{x=0}\\\\
    1& \text{x!=0}
    \end{cases}$$

    $$f(x)=
    \begin{cases}
    0& \text{x=0}\\
    1& \text{x!=0}
    \end{cases}$$


LaTex公式argmax的使用

目标:实现下标在整个argmax下面居中

  • argmax使用(1)

    1
    $$j^{\star}=\mathop{\arg \max}_{j}f(j)$$

    $$j^{\star}=\mathop{\arg \max}_{j}f(j)$$

  • argmax使用(2)

    1
    $$j^{\star}=\underset{j}{\arg \max}f(j)$$

    $$j^{\star}=\underset{j}{\arg \max}f(j)$$

LaTex——编译问题

VSCode环境中引用出错问题排查

  • 参考链接:latex报错:Citation ‘×××ב on page x undefined.与众不同的解决方案

  • 除了排查自身代码问题 && 修改配置文件外,还可以使用命令行重新编译PDF文件,具体流程如下

    • 切换到xxx.tex文件所在目录下

      1
      2
      3
      4
      xelatex xxx
      bibtex xxx
      xelatex xxx
      xelatex xxx
    • 执行以上语句后PDF引用恢复正常

1…58596061
Joe Zhou

Joe Zhou

Stay Hungry. Stay Foolish.

608 posts
49 tags
GitHub E-Mail
© 2026 Joe Zhou
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4