命令札记
纪录一些偶尔会需要用到的工具和命令,节约一些去搜索的时间
Powershell 设置终端代理
$Env:http_proxy="http://127.0.0.1:7890";$Env:https_proxy="http://127.0.0.1:7890"
Git
| 命令 | 作用 |
|---|---|
git clean -n | 演习:看看会删什么,但不真删。 |
git clean -f | 强制删除未跟踪的文件。 |
git clean -fd | 强制删除未跟踪的文件和目录。 |
git clean -fdx | 强制删除所有未跟踪的文件和目录,包括被 .gitignore 忽略的。 |
Jq
将所有过滤结果保存成一个完整的 JSON 数组:
jq '.params.list | [.[]]' 1.json > output.json
Tmux
最简操作流程
以当前用户身份运行
# 新建会话
tmux new -s my_session
# 在 Tmux 会话中运行所需的程序
# 按下快捷键Ctrl+b d 将会话分离
# 重新连接到会话
tmux attach-session -t my_session
以特定用户身份运行
# 以 llm 用户身份新建会话
sudo -u llm tmux new-session -s llm
sudo -u llm tmux new-session -s llm -c /home/llm
# 以 llm 用户身份附加(attach)到已存在的会话
sudo -u llm tmux attach-session -t llm
# 或简写
sudo -u llm tmux attach -t llm
# 看 llm 用户的所有 tmux 会话
sudo -u llm tmux list-sessions
# 或简写
sudo -u llm tmux ls
# 终止 llm 用户的某个会话
sudo -u llm tmux kill-session -t llm
快捷键
Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b,即先按下 Ctrl+b,快捷键才会生效。
举例来说,帮助命令的快捷键是 Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下 Ctrl+b,再按下 ?,就会显示帮助信息。
Ctrl+b %:划分左右两个窗格
Ctrl+b <arrow key>:光标切换到其他窗格。`<arrow key>`是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键`↓`。
切换会话
在 tmux 中切换会话,最常用的快捷键是 Ctrl+b (前缀键) 后按 s,这会显示所有会话列表,你可以使用上下方向键选择会话,然后按回车键进入。
tmux 使用鼠标上下滚动
前缀命令
ctrl+b
全局开启鼠标
:set -g mouse on
SSH-kengen
从 SSH 的已知主机文件中移除特定主机的记录
ssh-keygen -f '/root/.ssh/known_hosts' -R '1.2.4.8'
Biome
Biome 是一个 JS 工具箱,零配置就能实现 JS 脚本的格式化和 Lint,性能出众。
# 安装
## On macOS
brew install biome
## On Windows
scoop install biome
# 格式化 js 文件
biome format index.js --files-max-size=104857600 --write
--files-max-size=NUMBER:源代码文件的最大允许大小,以字节为单位。--write:将格式化文件写入文件系统--fix:将格式化文件写入文件系统
- 出于性能原因,超过此限制的文件将被忽略。默认为 1 MiB。
- 1 MiB(Mebibyte)等于 1,048,576 字节,所以 100 MiB 等于 104,857,600 字节
Rsync
rsync -avzP --exclude='Javadoc' --exclude='target' springboot/ tx:/root/
或者
rsync -avzP --exclude={'Javadoc','target'} springboot/ tx:/root/
解释:
--exclude='Javadoc':排除Javadoc目录(注意大小写)--exclude='target':排除target目录- 在
springboot后加/表示同步目录内的内容,而不是目录本身
Curl
指定 Cookie
可以使用 --cookie "COOKIES" 选项来指定 Cookie,如果有多个 Cookie,可以使用分号进行分隔:
curl http://man.linuxde.net --cookie "user=root;pass=123456"
指定 http 协议版本
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
--proto:指定协议--tlsv1.2:指定协议版本
查看公网 IP
查看公网 IP:
curl -s cip.cc | awk '/IP/{print $NF}'
作为变量使用
echo $(curl -s cip.cc | awk '/IP/{print $NF}')
合并 Yaml 文件
合并 yaml 文件
yq eval-all '. as $item ireduce ({}; . * $item)' *.yaml
Vim
使用正则表达式结合全局删除命令,快速删除三大私有网段 IP
分别删除
" 删除 10.0.0.0/8 范围
:g/\<10\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>/d
" 删除 172.16.0.0/12 范围
:g/\<172\.\(1[6-9]\|2[0-9]\|3[0-1]\)\.\d\{1,3}\.\d\{1,3}\>/d
" 删除 192.168.0.0/16 范围
:g/\<192\\.\d\{1,3}\.\d\{1,3}\>/d
单行命令全部删除
:g/\(\<10\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>\|\<172\.\(1[6-9]\|2[0-9]\|3[0-1]\)\.\d\{1,3}\.\d\{1,3}\>\|\<192\\.\d\{1,3}\.\d\{1,3}\>\)/d
说明:
:g/pattern/d是全局删除命令\<和\>表示词边界\d{1,3}匹配 1 到 3 位数字\|表示或\(和\)用于分组
注意事项:
- 这些正则表达式会匹配符合格式的 IP 地址,但不会验证数字范围(比如是否小于 255)
- 如果需要更精确的匹配,可能需要更复杂的正则表达式
使用建议:
- 先用
:set nu显示行号 - 使用
:g/pattern/p预览匹配结果 - 确认无误后再使用删除命令
- 可以用
u撤销操作
查看 Linux 版本信息
lsb_release -a
hostnamectl
cat/etc/os-release
macOS 查看 Jdk 安装路径
/usr/libexec/java_home -V
Windows 包管理器更新软件
scoop 更新所有软件包
scoop update *
choco 更新所有软件包
sudo choco upgrade all
winget
winget upgrade --all --locale zh --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
Pip
更新 pip
pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}
requirements.txt 生成和导入
在虚拟环境中使用 Pip 生成
(venv) $ pip freeze >requirements.txt
在虚拟环境中使用 Pip 导入
(venv) $ pip install -r requirements.txt
创建离线安装包
使用 pip download 下载包
pip download -r requirements.txt -d offline_packages
- 这里
-d选项指定下载包的目录。
将下载好的包传输到目标环境。
在目标环境中创建一个新的 requirements.txt 文件,并将下载的包放在一起。
使用 pip install 命令进行安装:
pip install --no-index --find-links=offline_packages -r requirements.txt
假设你的 requirements.txt 内容如下:
requests==2.25.1
numpy>=1.19.0
pandas
并且下载的包在 D:\offline_packages 目录下,在目标环境中,你可以执行以下命令:
pip install --no-index --find-links=D:\offline_packages -r D:\offline_packages\requirements.txt
Sed
只删除纯空行
sed '/^\s*$/d' file
删除纯空行和由空格组成的空行
sed '/^[ ]*$/d' file
Awk
从 test.csv 中筛选包含 ” 神州行 ” 的行,提取第一列,去重排序,并在每行前后添加引号和逗号。
awk -F',' '/神州行/ {if (!seen[$1]++) print "\"" $1 "\","}' test.csv
7z 恢复 Scoop 归档
7z e "Scoop-00PackageManager-Python.zip" "00PackageManager.7z" -aoa -o"D:\00PackageManager" ; 7z x "D:\00PackageManager\00PackageManager.7z" -aoa -o"D:\00PackageManager\"
Screen
常用 Screen 命令参考
screen -ls- 列出所有会话screen -r <session>- 恢复会话screen -d <session>- 分离会话screen -S <name>- 创建命名的新会话
Screen 常用快捷键(在会话内部使用)
Ctrl+A, D- 分离当前会话(保持程序运行)Ctrl+A, C- 创建新窗口Ctrl+A, N- 切换到下一个窗口Ctrl+A, P- 切换到上一个窗口Ctrl+A, "- 显示窗口列表Ctrl+A, A- 重命名当前窗口
Httpx 提取 SSL 证书里的域名
信息收集之快速提取 SSL 证书里的域名
echo "https://www.vip.com" | httpx -tls-probe -json -silent | jq .tls.subject_an
Windows 查询系统启动时间
systeminfo | findstr /C:"System Boot Time" /C:"系统启动时间"
findstr支持多个搜索字符串/C:参数确保完整字符串匹配