shell
介绍
shell:是一个命令行解释器,负责接收用户输入的命令,并将其转换为操作系统能够理解的指令,然后执行这些指令并返回结果。它是用户与操作系统内核(Kernel)之间的接口。
常见的shell类型:
Bash(Bourne-Again Shell):
Linux 和 macOS 的默认 Shell,功能强大,兼容性好。
Zsh(Z Shell):
增强版的 Bash,支持更丰富的插件和主题(如 Oh My Zsh)。
sh(Bourne Shell):
早期的 Unix Shell,许多脚本仍以 #!/bin/sh 开头保证兼容性。
PowerShell:
Windows 的现代 Shell,支持对象管道(而不仅是文本),与 .NET 集成。
Linux常用指令
学习网址
1、官方文档 & 权威指南
- GNU Bash 官方手册:www.gnu.org/software/ba…
- Linux man-pages(命令手册)
// 在终端直接查看任何命令的详细说明:
man ls # 查看 ls 命令的完整手册
man grep # 查看 grep 的用法
// 在线版:https://man7.org/linux/man-pages/
- The Linux Documentation Project (TLDP):tldp.org/
2、免费中文教程
- 《Linux 命令行大全》- 阮一峰:wangdoc.com/bash/
- 《鸟哥的 Linux 私房菜》- 基础篇:linux.vbird.org/linux_basic…
- Linux 中国开源社区:linux.cn/docs/
3、交互式学习平台
- OverTheWire(游戏化学习):overthewire.org/wargames/ba…
- ExplainShell(命令解析工具):explainshell.com/
- Linux Journey(交互式教程):linuxjourney.com/
常用指令
1、文件与目录操作
- ls:列出目录内容。如:ls -l(详细列表)
- cd:切换目录。如:cd /var/log
- pwd:显示当前目录路径。如:pwd
- mkdir:创建目录。如:mkdir new_dir
- touch:创建空文件。如:touch file.txt
- cp:复制文件/目录。如:cp file.txt backup/
- mv:移动/重命名文件。如:mv old.txt new.txt
- rm:删除文件。如:rm -r dir/(递归删除目录)
- find:查找文件。如:find /home -name "*.log"
- tar:打包/解压文件。如:tar -czvf archive.tar.gz dir/
2、文本处理
- cat:查看文件内容。如:cat file.txt
- grep:搜索文本。如:grep "error" log.txt
- sed:流编辑器(替换/删除文本)。如:sed 's/foo/bar/g' file.txt
- awk:文本分析工具。如:awk '{print $1}' data.txt
- head:显示文件开头几行。如:head -n 5 file.txt
- tail:显示文件末尾几行。如:tail -f log.txt(实时追踪)
- wc:统计行数/单词数。如:wc -l file.txt
3、系统管理
- ps:查看进程。
- top:实时监控进程(类似任务管理器)。如:top
- kill:终止进程。如:kill -9 1234
- df:查看磁盘空间。如:df -h
- free:查看内存使用。如:free -m
- uname:查看系统信息。如:uname -a
- shutdown:关机/重启。如:shutdown -r now
4、网络工具
- ping:测试网络连通性。如:ping google.com
- ifconfig:查看网络接口(旧版)。如:ifconfig eth0
- ip:新版网络配置工具。如:ip a
- netstat:查看网络连接。如:netstat -tulnp
- curl:下载/测试 HTTP 请求。如:curl -O example.com/file
- wget:下载文件。如:wget example.com/file.tar.gz
- ssh:远程登录。如:ssh user@192.168.1.100
5、权限管理
- chmod:修改文件权限。如:chmod 755 script.sh
- chown:修改文件所有者。如:chown user:group file.txt
- sudo:以管理员权限执行命令。如:sudo apt update
- passwd:修改用户密码。如:passwd username
6、压缩与解压
- tar:打包/解压 .tar.gz。如:tar -xzvf file.tar.gz
- gzip:压缩文件(生成 .gz)。如:gzip file.txt
- zip:创建 ZIP 压缩包。如:zip archive.zip file1 file2
7、其他实用命令
- history:查看命令历史。如:history | grep "apt"
- alias:创建命令别名。如:alias ll='ls -alF'
- crontab:定时任务管理。如:crontab -e
- which:查找命令路径。如:which python
- du:查看目录占用空间。如:du -sh /home/
正则
学习网址
1、交互式学习平台
- RegexOne:regexone.com/
- RegexLearn:regexlearn.com/
2、正则表达式测试工具
- Regex101:regex101.com/
- RegExr:regexr.com/
3、进阶教程与文档
- MDN 正则表达式指南:developer.mozilla.org/zh-CN/docs/…
- Regular-Expressions.info:www.regular-expressions.info/
4、实战练习与挑战
- Regex Crossword:regexcrossword.com/
- HackerRank 正则挑战:www.hackerrank.com/domains/reg…
5、中文资源推荐
- 《正则表达式30分钟入门教程》:deerchao.cn/tutorials/r…
- 菜鸟教程 - 正则表达式:www.runoob.com/regexp/rege…
常用
1、速查表
\d:匹配数字(0-9)。(如:\d{3} 匹配 "123")\w:匹配字母、数字、下划线。(如:\w+ 匹配 "hello_123")\s:匹配空白字符(空格、制表符)。(如:\s+ 匹配 " ").:匹配任意字符(除换行符)。(如:a.c 匹配 "abc"、"a c")*:匹配前一个字符 0 次或多次。(如:a*b 匹配 "b"、"aaab")+:匹配前一个字符 1 次或多次。(如:a+b 匹配 "ab"、"aaab")?:匹配前一个字符 0 次或 1 次。(如:a?b 匹配 "b"、"ab"){n,m}:匹配前一个字符 n 到 m 次。(如:a{2,4} 匹配 "aa"、"aaa")^:匹配行首。(如:^Hello 匹配行首的 "Hello")$:匹配行尾。(如:end$ 匹配行尾的 "end")[abc]:匹配括号内的任意字符。(如:[aeiou] 匹配元音字母)(a|b):匹配 a 或 b。(如:(cat|dog) 匹配 "cat" 或 "dog")
2、字符类
.:匹配除换行符外的任何单个字符\d:匹配数字(等价于[0-9])\D:匹配非数字(等价于[^0-9])\w:匹配单词字符(字母、数字、下划线)\W:匹配非单词字符\s:匹配空白字符(空格、制表符、换行符等)\S:匹配非空白字符\t:匹配制表符\n:匹配换行符\r:匹配回车符
3、量词
*:匹配前一个表达式0次或多次+:匹配前一个表达式1次或多次?:匹配前一个表达式0次或1次{n}:匹配前一个表达式恰好n次{n,}:匹配前一个表达式至少n次{n,m}:匹配前一个表达式n到m次
4、边界匹配
^:匹配输入的开始$:匹配输入的结束\b:匹配单词边界\B:匹配非单词边界
5、分组与捕获
(x):捕获分组(?:x):非捕获分组x(?=y):正向肯定查找x(?!y):正向否定查找(?<=y)x:反向肯定查找(ES2018)(?<!y)x:反向否定查找(ES2018)
js中正则使用
1、创建正则表达式
// 1、字面量语法
const regex = /pattern/flags;
// 2、构造函数语法
const regex = new RegExp('pattern', 'flags');
常用修饰符(flags):
| 修饰符 | 描述 |
|---|---|
i | 不区分大小写 |
g | 全局匹配(查找所有匹配而非在第一个匹配后停止) |
m | 多行模式 |
s | 允许.匹配换行符(ES2018新增) |
u | 使用Unicode模式 |
y | 粘性模式(从lastIndex位置开始匹配) |
2、正则表达式方法
2.1 RegExp对象方法
- test() - 测试是否匹配
const regex = /hello/;
console.log(regex.test('hello world')); // true
- exec() - 执行匹配搜索
const regex = /lo/g;
const str = 'hello world hello';
let result;
while ((result = regex.exec(str)) !== null) {
console.log(`找到 ${result[0]} 在位置 ${result.index}`);
}
2.2 String对象方法
- match() - 检索匹配项
const result = str.match(/ain/gi);
console.log(result); // ["ain", "AIN", "ain", "ain"]
- matchAll() (ES2020) - 返回所有匹配的迭代器
const regex = /t(e)(st(\d?))/g;
const str = 'test1test2';
const array = [...str.matchAll(regex)];
console.log(array[0]); // ["test1", "e", "st1", "1"]
- search() - 测试匹配位置
const str = 'hello world';
console.log(str.search(/world/)); // 6
- replace() - 替换匹配文本
const str = 'Visit Microsoft';
const result = str.replace(/microsoft/i, 'Google');
console.log(result); // "Visit Google"
- replaceAll() (ES2021) - 替换所有匹配项
const str = 'aabbcc';
const result = str.replaceAll('b', 'x');
console.log(result); // "aaxxcc"
- split() - 使用正则分割字符串
const str = 'hello world';
const result = str.split(/\s/);
console.log(result); // ["hello", "world"]
Git
介绍
1、版本控制
- 记录文件的所有修改历史,可回溯到任意版本。
- 解决多人协作时的代码冲突问题。
2、分布式架构
- 每个开发者本地都有完整的代码仓库(包括全部历史),不依赖中央服务器。
3、三大区域
- 工作区:本地直接编辑的文件。
- 暂存区(Stage):临时保存待提交的变更。
- 仓库(Repository):存储所有提交的历史记录。
安装
1、官网下载
2、验证安装
- 打开命令提示符(CMD)或 Git Bash,输入:
git --version
3、配置Git
- 安装完成后,需配置用户名和邮箱(提交代码时显示身份):
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
- 查看配置列表
git config --list
4、图形化工具(可选)
- GitHub Desktop:desktop.github.com/
- Sourcetree:www.sourcetreeapp.com/
- VS Code Git 插件(内置支持)
常用命令
1、基础配置
git config --global user.name "Your Name"设置全局用户名git config --global user.email "email@example.com"设置全局邮箱git config --list查看所有配置项
2、仓库操作
git init初始化本地仓库git clone <远程仓库地址>克隆远程仓库到本地git status查看工作区状态(变更文件)
3、代码提交
git add <文件名>将文件添加到暂存区git add .添加所有修改的文件到暂存区git commit -m "提交说明"提交暂存区的变更到本地仓库git commit --amend修改最后一次提交(可修正提交信息或内容)
4、分支管理
git branch查看本地分支(* 标记当前分支)git branch <分支名>创建新分支git checkout <分支名>切换到指定分支git checkout -b <新分支名>创建并切换到新分支git merge <分支名>将指定分支合并到当前分支git branch -d <分支名>删除本地分支(安全删除)git branch -D <分支名>强制删除本地分支(未合并时使用)
5、远程协作
git remote -v查看远程仓库地址git remote add origin <远程仓库地址>关联远程仓库(首次推送时需执行)git push origin <分支名>推送本地分支到远程仓库git push -u origin main推送并设置上游分支(首次推送推荐)git pull拉取远程分支最新代码(自动合并)git fetch仅下载远程变更(不自动合并)git push --force强制推送(谨慎使用,会覆盖远程历史)
6、版本回退与撤销
git log查看提交历史(按 q 退出)git log --oneline简洁版提交历史git reset --hard <commit-id>回退到指定提交(丢弃之后的所有变更)git reset --soft <commit-id>回退提交但保留变更到暂存区git checkout -- <文件名>撤销工作区的文件修改(未 git add 时)git restore <文件名>撤销工作区修改(Git 2.23+ 新命令)git revert <commit-id>创建一个新提交来撤销指定提交的更改
7、标签管理
git tag查看所有标签git tag v1.0.0创建轻量标签git tag -a v1.0.0 -m "版本说明"创建带注释的标签git push origin v1.0.0推送标签到远程仓库git push origin --tags推送所有本地标签
8、实用技巧
- 忽略文件:在项目根目录创建
.gitignore文件,列出需忽略的文件/目录(如 node_modules/、.env)。 - 查看文件修改差异
git diff # 查看工作区与暂存区的差异
git diff --cached # 查看暂存区与最新提交的差异
- 暂存临时修改
git stash # 临时保存工作区修改
git stash pop # 恢复最近一次暂存的修改
9、命令速查表
| 场景 | 命令组合 |
|---|---|
| 首次推送本地项目到远程 | git init → git add . → git commit -m "init" → git remote add origin <URL> → git push -u origin main |
| 拉取远程分支并切换 | git fetch → git checkout -b <本地分支名> origin/<远程分支名> |
| 合并分支后解决冲突 | 手动修改冲突文件 → git add <文件> → git commit |
10、查看文档
git help <命令>
练习网站
1、交互式学习平台
- Learn Git Branching:learngitbranching.js.org/
- GitHub Learning Lab:lab.github.com/
- Codecademy Git 课程:www.codecademy.com/learn/learn…
2、挑战与实战
- Git Immersion:gitimmersion.com/
- Oh My Git! (开源游戏):ohmygit.org/
- Gitexercises:gitexercises.fracz.com/
3、高级练习
- GitKatas:github.com/eficode-aca…
- Advanced Git Exercises:github.com/git-school/…
4、中文资源
- Git 闯关游戏(by 廖雪峰):www.liaoxuefeng.com/wiki/896043…
- Gitee 练习仓库:gitee.com/explore