通用能力

69 阅读6分钟

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、官方文档 & 权威指南

// 在终端直接查看任何命令的详细说明:
man ls      # 查看 ls 命令的完整手册
man grep    # 查看 grep 的用法

// 在线版:https://man7.org/linux/man-pages/
  • The Linux Documentation Project (TLDP):tldp.org/

2、免费中文教程

3、交互式学习平台

常用指令

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、交互式学习平台

2、正则表达式测试工具

3、进阶教程与文档

4、实战练习与挑战

5、中文资源推荐

常用

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、图形化工具(可选)

常用命令

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、交互式学习平台

2、挑战与实战

3、高级练习

4、中文资源