Mr. Kin's Blog

计算机知识分享/软件应用讲解

1   Bash 的简介

Shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。通过命令行提示符$,它允许用户输入文本命令,然后解释命令,并在内核中执行。

Bash是GNU项目的shell,即Bourne Again SHell。这是一个由Bourne shell(sh)发展而来的shell,并且兼容sh,包含不少korn shell(ksh)和c shell(csh)的优点。大部分Linux发行版都预装了bash,并且大多数sh脚本(由多个shell命令组成的文件)无需修改即可通过bash运行。

2   shell提示符

shell命令行界面(CLI)

3   bash的配置

source ~/.bashrc
source ~/.profile
echo 'export APP=/opt/tinyos-2.x/apps' >> ~/.bashrc

3.1   删除Git Bash历史记录

%USERPROFILE%(用户配置路径)下找到.bash_history删除即可。

4   参数表达式

4.1   前缀和后缀的获取

${file%.*}:移除最后一个点之后的内容
${file%%.*}:移除第一个点之后的内容
${file#*.}:移除第一个点之前的内容
${file##*.}:移除最后一个点之前的内容

5   test

test可以与&&组成一个条件判断,无需用if命令。

6   case

case命令,无法使用test命令。
case不能用正则表达,只用样式匹配

7   删除特定目录下所有文件,但排除部分文件

find /path/to/directory -type f ! -name 'file_prefix*' | xargs rm -rf

8   Bash脚本加密解密

https://www.jb51.net/article/216095.htm
https://www.qcgzxw.cn/575.html

9   参考文献

[1] BLUM R, BRESNAHAN C. Linux 命令行与 shell 脚本编程大全[M]. 门佳, 武海峰, 译. 3 版. 北京: 人民邮电出版社, 2016.
[2] GNU Bash[EB/OL]. https://www.gnu.org/software/bash/.
[3] Test variable in a bash case statement[EB/OL]. https://unix.stackexchange.com/questions/205084/test‑variable‑in‑a‑bash‑case‑statement.
[4] Regular expressions in a Bash case statement[EB/OL]. https://stackoverflow.com/questions/9631335/regular‑expressions‑in‑a‑bash‑case‑statement.
[5] Adding suffix to filename during for loop in bash[EB/OL]. https://unix.stackexchange.com/questions/600051/adding‑suffix‑to‑filename‑during‑for‑loop‑in‑bash.

1   Latex环境的安装与配置

1.1   Texlive发行版的下载

1.2   Texlive的安装

  1. 加载镜像,双击执行install-tl-windows.bat
  2. 安装路径保持默认的C:/texlive/2024
  3. 点击Advanced
    • N. of collections->Languages(全勾选无,然后只勾选下面三个,然后确认)
      • Chinese
      • Chinese/Japanese/Korean (base)
      • US and UK English
    • 取消勾选安装 Texworks 前端
  4. 其他选项保持默认,然后点击开始安装。
  5. 测试Tex安装情况。打开控制台(CMD或Powershell),输入命令测试tex -vlatex -vxelatex -v
    • P.S. 如果命令控制台显示找不到命令,在系统环境变量Path中添加texlive bin的路径:C:\texlive\2024\bin\windows
  6. Tex更新:控制台输入tlmgr update --all

1.3   VS Code的相应配置

关于在VSC中建立latex的snippets 用户代码片段时,若需要输出 \ 换行命令,需要在 json 里输入六个 \\\ 才能真正输出\的,个人想法是VSC传递机制非标准化,不符合 标准的转义字符输出。

2   文档元素

2.1   图片

2.1.1   自适应缩放大小

使用width参数缩放到0.5倍的文本宽度,scale参数就是图片相对于原尺寸缩放,比较难以控制。

1
2
3
4
5
6
7
8
9
10
11
12
13
% 此处用textwidth文本宽度,或者也可以用linewidth线宽
\begin{figure}[h!]
\includegraphics[width=0.5\linewidth]{figure}
\caption{锚点文字}
\label{图片注解}
\end{figure}

% 在minipage环境中,可以直接使用整倍线宽,就是minipage的宽度
\begin{minipage}[t]{0.48\linewidth}
\includegraphics[width=\linewidth]{developer_hint}
\caption{UI提示方案菜单:开发者模式}
\label{开发者提示方案}
\end{minipage}

3   宏包

3.1   moderncv

moderncv的宏包是分文件编写的,具体语法参照texmf-dist\tex\latex\moderncv中的各个模块。

4   常见问题

4.1   reference.bib中参考文献中的title中写法

和LaTeX语法一样,如果有特殊符号,一样要使用反斜杠标注,例如_要写成_,不然编译会导致所有参考文献没有输出。

4.2   大型LaTeX文档中的input命令

编写大型的LaTeX文档,在子文件中的input命令的路径应输入完整,即从项目顶层路径。input命令仅仅是插入该文档,不会做其他工作。

例如项目文件夹为main,下设sub/subsub/两层文件夹,sub中的tex文件要想插入subsub中的tex文件,应为\input{sub/subsub/xxx.tex},而非\input{subsub/xxx.tex}。原因就是input仅仅是做插入,当main中的tex文件插入sub中xxx.tex,如果仅仅输入\input{subsub/xxx.tex},编译时main根本就找不到文件,路径缺失了sub。

5   参考文献

[1] 【latex】LaTeX调整图片大小的方法;自动调整合适的大小[EB/OL]. https://blog.csdn.net/weixin_39589455/article/details/128533896.

1   标题

  • 一级标题:# 标题
  • 二级标题:## 标题
  • 三级标题:### 标题
  • 四级标题:#### 标题
  • 五级标题:##### 标题
  • 六级标题:###### 标题

2   链接

链接中添加空格的方法

  • 使用\&\#32
  • 使用-替代空格

3   代码块

3.1   行内代码

反引号(位于tab键之上)包裹住代码内容:`代码内容`

3.2   多行代码(围栏代码块)

在代码内容前后使用三个反引号包裹住。

1
2
3
```语言关键字
代码内容
```

代码块支持语法高亮的语言关键字:

languagekey
1C1c
ActionScriptactionscript
Apacheapache
AppleScriptapplescript
AsciiDocasciidoc
AspectJasciidoc
AutoHotkeyautohotkey
AVR Assembleravrasm
Axaptaaxapta
Bashbash
BrainFuckbrainfuck
Cap’n Protocapnproto
Clojure REPLclojure
Clojureclojure
CMakecmake
CoffeeScriptcoffeescript
C++cpp
C#cs
CSScss
Dd
Dartd
Delphidelphi
Diffdiff
Djangodjango
DOS.batdos
Dustdust
Elixirelixir
ERB(Embedded Ruby)erb
Erlang REPLerlang-repl
Erlangerlang
FIXfix
F#fsharp
G-code(ISO 6983)gcode
Gherkingherkin
GLSLglsl
Gogo
Gradlegradle
Groovygroovy
Hamlhaml
Handlebarshandlebars
Haskellhaskell
Haxehaxe
HTMLhtml
HTTPhttp
Ini fileini
Javajava
JavaScriptjavascript
JSONjson
Lassolasso
Lessless
Lisplisp
LiveCodelivecodeserver
LiveScriptlivescript
Lualua
Makefilemakefile
Markdownmarkdown
Mathematicamathematica
Matlabmatlab
MEL (Maya Embedded Language)mel
Mercurymercury
Mizarmizar
Monkeymonkey
Nginxnginx
Nimrodnimrod
Nixnix
NSISnsis
Objective Cobjectivec
OCamlocaml
Oxygeneoxygene
Parser 3parser3
Perlperl
PHPphp
PowerShellpowershell
Processingprocessing
Python’s profiler outputprofile
Protocol Buffersprotobuf
Puppetpuppet
Pythonpython
Qq
Rr
RenderMan RIBrib
Roboconfroboconf
RenderMan RSLrsl
Rubyruby
Oracle Rules Languageruleslanguage
Rustrust
Scalascala
Schemescheme
Scilabscilab
SCSSscss
Smalismali
SmallTalksmalltalk
SMLsml
SQLsql
Statastata
STEP Part21(ISO 10303-21)step21
Stylusstylus
Swiftswift
Tcltcl
Textex
texttext/plain
Thriftthrift
Twigtwig
TypeScripttypescript
Valavala
VB.NETvbnet
VBScript in HTMLvbscript-html
VBScriptvbscript
Verilogverilog
VHDLvhdl
Vim Scriptvim
Intel x86 Assemblyx86asm
XLxl
XMLxml
YAMLyml

4   参考资料

[1] Markdown 官方教程[EB/OL]. https://markdown.com.cn/.
[2] MarkDown 支持高亮的语言[EB/OL]. https://blog.csdn.net/u012102104/article/details/78950290.

练习代码文件的仓库链接:点击跳转

习题的录入主要基于Cpp_Primer_Answers(中文版)Cpp-Primer(英文版)仓库。

R.I.P