Linux 学习自用工具

发布于 2024-04-27  158 次阅读


Linux 个人学习常用工具集


个人网站域名备案过啦,欢迎来留言!
🐶 https://blog.setekh.fun/
该文章对应Gitee仓库链接 -> https://gitee.com/setekh/linux-tools

makefile-set --> Makefile合集

常用makefile语法整合自网络信息,可能有误
其他makefile已经进行简单测试,如有错误请告知我

Makefile 分类说明

  • Makefile-all
    包含几乎全部常用makefile语法, 可供查阅, 日常使用没有必要使用这么复杂的语法
  • Makefile-separate
    每个源文件都会生成一个单独的可执行文件
  • Makefile-single
    将所有源文件整合生成单个可执行文件
  • Makefile-project
    针对使用 src/ include/ obj/ 多文件夹管理源码的小型项目的makefile

一个血的教训😭
Makefile变量定义有四种语法, 其中常用的两种: =是递归展开, :=是简单展开
此时如果随意的在变量定义后加注释可能导致空格被视为变量定义的一部分, 导致常见的目录路径错误
所以没事不要随意的在Makefile中写注释

DIR := ./src    # 此处有4个空格

TODO

  • 测试makefile
  • 添加详细注释(真记不住这么多语法😶‍🌫️)
  • 添加测试用例(就一个)

Makefile 学习手册

👍 https://seisman.github.io/how-to-write-makefile/index.html

custom-bash --> bash终端界面美化

效果展示

为什么不让我用自己的图床啊❓
自己的图床崩了

快速使用说明

如果你还不熟悉vim操作请务必先备份配置文件!
请不要直接复制文件替换, 我还改了其他设置
设置效果基于VSCode测试, 其他软件可能有一定差别

  1. 使用vim打开个人家目录下的.bashrc文件
  2. 复制下面的代码
export PS1="\[\e[32;1m\]\u\[\e[0m\]:\[\e[0m\]\[\e[36;1m\]\w\[\e[33;1m\]\n\$\[\e[0m\]"
  1. 将上面的代码添加到文件最后一行并保存
  2. 重启终端以显示效果

我不喜欢这个颜色!

\[\e[F;Bm\] 表示颜色标记的开始
\[\e[0m\] 表示颜色标记的结束
其中F表示字体颜色, B表示背景颜色
具体颜色代码如下表所示

字体代码 背景代码 颜色
30 40 黑色 #000000
31 41 红色 #FF0000
32 42 绿色 #00FF00
33 43 黄色 #FFFF00
34 44 蓝色 #0000FF
35 45 紫色 #FF00FF
36 46 青色 #00FFFF
37 47 白色 #FFFFFF

我不想要$符号换行!

Q: 为什么我要在这里加个换行呢?
A: 因为当你的工作目录过长时, 你需要输入的指令也比较长时整体的视觉效果会看起来非常逼死强迫症👿

删除export代码中的\n即可
此时如果经常遇到工作目录过长可以考虑将\w改为\W, 此时只显示一级当前工作目录

my-header --> 头文件铸币包(bushi)

复制头文件并放置到/usr/include/目录下即可

个人小建议:
使用ln -s 源文件 目标文件指令建立软连接到你常用的目录便于未来快速修改头文件内容
例如使用如下指令在当前目录创建一个软连接

ln -s /usr/include/my_header.h link_my_header

git-config --> 个人git懒人设置

使用方法

  1. 使用打开个人家目录下的 .gitconfig 文件
  2. 复制以下代码
    [alias]
    co = checkout
    ci = commit
    br = branch
    st = status
    last = log -1
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
  3. 放到 .gitconfig 文件末尾
  4. 此时你就可以快乐的使用简短的命令了

推荐一个刚发现的git图形界面学习网站

可以用图形化效果直观展示每个git指令实际作用, 便于大家快速上手, 为即将开始的小组项目的源码管理做好准备
👍 https://learngitbranching.js.org/?locale=zh_CN
建议配合廖雪峰老师的详细教程食用
🤩 https://www.liaoxuefeng.com/wiki/896043488029600

Markdown 速查手册

👍 https://markdown.com.cn/cheat-sheet.html
下面是 gitee markdown 语法渲染定制化修改
https://gitee.com/help/articles/4130#article-header0

🥲关于配置VSCode时遇到的一个折磨我两个晚上的问题

📍找到真正的解决方案了

👍 https://stackoverflow.com/questions/71043304/vscode-report-undefined-symbol-which-has-been-actually-included

The problem here is that sigset_t is only defined if _POSIX_C_SOURCE is defined.
With the C standard that gcc uses by default, _POSIX_C_SOURCE is already defined. So compiling your program with gcc doesn't produce an error.
To solve this you can add "cStandard": "gnu11" to you config file, or add "defines": ["_POSIX_C_SOURCE=199309L"].

优先选择修改C标准为gnu11,一劳永逸。
gcc的默认C标准是gnu11,不需要_POSIX_C_SOURCE定义

以下解法不靠谱,但暂时留着备用

当使用VSCode连接远程Linux服务器进行编程时, Itellisense有时候会无法识别部分标准库函数的标识符, 出现一种明明我包含了对应头文件, 甚至GCC编译正常通过, 但是VSCode就是会报错提示未定义的函数或者宏定义, 因为这个bug我找遍内外全网都没找到解决方案, 折腾了两晚上才搞懂必须强制指定Itellisense递归检索头文件
具体代码如下, 复制下面两行放到当前工作区的settings.json文件中并重启即可

"C_Cpp.intelliSenseEngineFallback": "disabled",
"C_Cpp.intelliSenseEngine": "Tag Parser",

对不起, 这个仍旧不是真正解决办法, 使用后无法联想自己定义的变量乐
微软! 我chaos🫵の🐎

常用正则表达式及快速测试工具

👍 https://tool.oschina.net/regex/#

Linux编程参考书目

Richard Stevens

  • 《UNIX网络编程》
  • 《UNIX环境高级编程》
  • 《TCP/IP详解 卷1:协议》