Bash 语法详细总结
Bash 语法详细总结
Bash(Bourne-Again Shell)是 Linux/Unix 系统默认的命令行解释器,也是 Shell 脚本开发的核心标准。本文从基础到进阶,全面覆盖 Bash 核心语法、特性、最佳实践与避坑指南。
Bash(Bourne-Again Shell)是 Linux/Unix 系统默认的命令行解释器,也是 Shell 脚本开发的核心标准。本文从基础到进阶,全面覆盖 Bash 核心语法、特性、最佳实践与避坑指南。
C++11 首次引入了标准跨平台多线程库,彻底替代了此前 Windows、Linux 等平台各自的原生线程API(如CreateThread、pthread),后续 C++14/17/20 持续补充完善,形成了完整的现代C++多线程体系。本文从基础概念到高级特性、从核心用法到避坑指南,进行全面系统的总结。
模板是C++泛型编程的核心基石,本质是编译期代码生成机制:编译器根据传入的类型/常量参数,在编译期自动生成类型安全、零运行时开销的具体代码,实现“一次编写,任意类型复用”,同时支撑编译期计算、类型元编程等高级特性。
该实现完全基于C++17标准特性,核心采用单调时钟steady_clock(避免系统时间修改导致的计时偏差)、优先队列管理任务(按触发时间排序,效率最优),支持线程安全的任务添加、取消、定时器启停,同时处理了任务异常、计时累积误差等常见问题。
C++17 标准没有内置协程语法与标准库,协程是 C++20 才正式标准化的特性。C++17 实现协程,主流方案是用户态有栈协程(Stackful Coroutine),基于平台上下文切换 API 实现执行流的用户态切换,完全避开内核态调度,切换开销远小于线程。
C++ 本身没有原生反射机制,但可以通过 C++17 的 constexpr、if constexpr、折叠表达式、std::tuple、std::string_view 等核心特性,实现一套类型安全、零运行时开销的静态反射系统,同时兼顾运行期的访问能力。
本文基于C++17标准特性,实现了固定大小内存池(最常用、性能最优的内存池类型),包含单线程基础版、类型化对象池、线程安全版,同时讲解核心原理、C++17特性的应用,以及标准库内置方案。
该实现基于C++17标准特性,支持任意可调用对象、带返回值任务、线程安全的任务调度与优雅退出,兼容主流编译器(GCC/Clang/MSVC)。
C++23 是 ISO C++ 标准在 C++20 之后的正式版本,核心定位是对 C++20 特性的补全与优化,同时引入大量提升开发效率、代码安全性、运行时性能的能力,整体分为核心语言特性和标准库特性两大模块,同时包含部分特性的移除与废弃。
C++20(ISO/IEC 14882:2020)是继C++11之后最具革命性的C++标准版本,于2020年12月正式发布。它通过四大核心支柱特性彻底革新了C++的编程范式,同时引入了数十项语言与标准库增强,大幅提升了代码的类型安全、编译效率、表达力、可维护性与性能,解决了传统C++长期存在的诸多历史痛点。
C++17(ISO/IEC 14882:2017)是继C++11之后的又一重大标准版本,于2017年12月正式发布。它延续了C++“零开销抽象”的核心哲学,在语法层面大幅简化编码复杂度,深化编译期计算能力,完善类型安全;在标准库层面补齐了并行计算、文件系统、类型安全容器等核心能力,让C++更易用、更高效、更安全。
C++14(ISO/IEC 14882:2014)是C++11标准的增量更新版本,核心定位是补全C++11的设计缺陷、简化语法、增强泛型编程能力与编译期计算能力,无颠覆性的语法革新,整体让现代C++的开发体验更流畅、安全、简洁。整体分为核心语言新特性和标准库新特性两大模块,以下是完整详细总结。
用户需详细了解C++11新特性,我会先梳理C++11核心模块,避免内容零散,按类别清晰总结,讲清各特性核心作用、用法及关键点。
一个简单、轻量级的发行版,试图保持简单。
Windows Subsystem for Linux(简称 WSL)是一个在 Windows 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。
sshfs 是连接到 SSH 服务器的网络文件系统客户端,方便本地操作远程文件。
bash 脚本是一种常用的脚本。当 bash 脚本执行出现错误的时候,我们可以通过调试的方式来定位问题所在。
| 选项 | 说明 |
|---|---|
| -v | 打印执行命令 |
| -x | 类似 -v,并扩展了命令 |
| -e | 发生错误终止执行 |
| -n | 只检查语法,不执行脚本 |
| -o pipefail | 返回管道的错误状态 |
正常情况下,通过 bash test.sh 或 ./test.sh 执行脚本,利用 echo 或者 printf 命令可以输出一些信息,但是不能输出命令的具体执行情况。
Shell 的启动方式有以下四种:
其中交互式是指需要使用者手动输入的方式,而非交互式指的是脚本方式运行,不需要使用者手动输入。登录指的是使用者需要输入用户名和密码的方式,需要特定用户才能执行,而非登录不需要输入用户名和密码,任何用户都能执行。
为了提高软件安装和更新速度,需要配置成国内源!
apt-get install gitgit 配置文件有三个:
/etc/gitconfig 是系统级配置文件,使用 git config --system 命令进行修改。~/.gitconfig 或 ~/.config/git/config 是用户级配置文件,使用 git config --global 命令进行修改。local_dir/.git/config 是仓库级配置文件,使用 git config --local 命令进行修改。$ git config --global user.name "username"
$ git config --global user.email username@example.comgit config --global core.editor emacs