命令 Primer Plus
man
有问题,问男人 —— man,查阅命令的命令
*nix
解压缩
tar
-z(gzip) 用gzip来压缩/解压缩文件
-j(bzip2) 用bzip2来压缩/解压缩文件
-v(verbose) 详细报告tar处理的文件信息
-c(create) 创建新的档案文件
-x(extract) 解压缩文件或目录
-f(file) 使用档案文件或设备,这个选项通常是必选的。
#压缩
[root@localhost tmp]# tar -zvcf file.tar.gz file
[root@localhost tmp]# tar -jvcf file.tar.bz2 file
#解压
[root@localhost tmp]# tar -zvxf file.tar.gz
[root@localhost tmp]# tar -jvxf file.tar.bz2
zip
#压缩和解压文件
[root@localhost tmp]# zip file.zip file
[root@localhost tmp]# unzip file.zip
#压缩和解压目录
[root@localhost tmp]# zip -r file.zip file
[root@localhost tmp]# unzip file.zip
pigz
pigz -k file # 压缩文件
tar -cvf - a b | pigz > output.tar.gz # 压缩目录
pigz -d output.tar.gz # 解压
管道 |
echo
echo 作为将参数打印到标准输出的命令,除了可以打印信息,还可以将其打印到文件中。
echo $SHELL # 打印当前shell
echo 'hello world' > hello.txt # 将字符串写入文件
echo "hello world" >> hello.txt # 将字符串追加到文件
# -e 打印时转义
chmod
语法 chmod abc file
其中 a,b,c 各为一个数字,分别表示 User、Group、及 Other 的权限。
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所有用户, 相当于 ugo |
八进制语法
权限 | 权限数值 | 作用 |
---|---|---|
r | 4 | read,读取。 |
w | 2 | write,写入。 |
x | 1 | execute,执行。 |
chmod 754 file
# 赋予User读取、写入、执行权限(4+2+1);赋予Group读取、执行权限(4+1);赋予Other读取权限(4)。
用户
useradd -m <用户名> # -m 创建用户名目录
passwd <用户名> # 设置用户密码
userdel -r <用户名> # -r 删除用户名目录
查看空间
df -h # 显示所有文件系统的空间使用情况 -h 人性化输出数据单位
du -h -d 1 # 查询文件或目录占用空间 -d 1 扫描一层
查看系统信息
uname -a # 查看系统信息
uname -r # 查看系统版本
uname -s # 查看系统名称
uname -m # 查看系统架构
uname -p # 查看系统内核版本
neofetch #
ps
ps aux # 查看所有进程
# -a 显示所有用户的所有进程,不包括没有控制终端的进程,除非加上 -x
# -u 显示指定用户名下的进程
ps -ef
# -e 显示所有进程,包括没有控制终端的进程
# -f 显示 uid、pid、父 pid、最近 CPU 使用率、进程开始时间、控制 tty、已耗 CPU 使用率以及相关命令。
mv
mv folder1/* folder2/ # 将移动文件夹 "folder1" 中的所有内容(包括子文件夹)到文件夹 "folder2" 中。注意,在这个过程中,如果 "folder2" 中存在与 "folder1" 中相同的文件或文件夹,那么 "mv" 命令将覆盖这些文件或文件夹。
mv folder1 folder2/ # 将 "folder1" 文件夹移动到 "folder2" 文件夹中,并将其中所有的内容合并到 "folder2" 文件夹中。
查看端口占用
lsof -i :<port> # 查看占用指定端口的进程
rsync
rsync -r source destination # -r 递归
rsync -a source destination # -a 深拷贝 可替代 -r
rsync -anv source destination # 模拟执行的结果,并不真的执行
rsync -av --delete source destination # 确保两个目录相同,删除目标目录中不同与源目录中相同的文件
rsync -av source/ user@host:destination # ssh远程同步
zerotier
curl -s https://install.zerotier.com | sudo bash # 安装
zerotier-cli info
zerotier-cli join <zerotier-id>
zerotier-cli leave <zerotier-id>
zerotier-cli listnetworks # 查看 zerotier 网络
Git
添加远程仓库
git remote add <仓库名> <url>
修改文件名/移动文件
git mv [<options>] <source> <destination>
# -v,显示详细信息
# -f,目标文件存在,强制执行重命名或移动
创建分支
git branch <branch-name> # 创建分支
git checkout -b <branch-name> # 创建并切换到分支
本地分支/远程分支
git checkout -b <本地分支> <仓库名>/<远程分支> # 检出远程的分支到本地
git push <仓库名> <本地分支>:<远程分支> # 推送本地的分支到远程仓库的分支(没有在会自动创建)
git branch -u <仓库名>/<远程分支> <本地分支> # 让本地分支跟踪远程分支
删除远程仓库最后一次提交
git reset --soft HEAD~ # HEAD 回到上一次 commit, 最后一次 commit 回到暂存区
git push -f # 删除远程最后一次提交
拉取远程时,使用贮藏忽略工作区的变更
git stash
git pull
git stash pop
追加提交
git commit --amend
误删commit后撤销操作
# 可能需要先贮藏未跟踪文件
git rebase --abort
commit后需要撤销
git reset HEAD^ # 等同于 git reset --mixed HEAD^ 重置暂存区,不更改工作区
git reset --soft HEAD^ # 不更改暂存区和工作区 (commit 消失,暂存区和工作区保持不变)
git reset --hard HEAD^ # 重置暂存区和工作区 (commit 消失,暂存区和工作区文件也消失,回到 commit 之前)
Vim
替换
简单替换表达式 :[range]s/from/to/[flags]
range
搜索范围,如果没有指定范围,则作用于当前行。
:1,10s/from/to
替换1到10行内容;:10s/from/to
替换第10行内容;:%s/from/to
替换全文内容;:1,%s/from/to
替换全文内容。
flags
c
confirm,替换前询问;e
error,不显示错误;g
globle,整行替换;i
ignore,忽略大小写。
Vim 替换支持正则表达式,正则表达式语法可参考 👉 links
使用 \(
\)
包围正则表达式,可以在后面将其作为变量使用,变量名为 \1
、\2
、……。
tmux
# 查看快捷键
tmux list-keys
# 查看命令
tmux list-commands
会话
# 查看所有会话
tmux ls # 快捷键:Ctrl-b + s
# 分离会话
tmux detach # 快捷键:Ctrl-b + d
# 连接会话
tmux attach(a) -t <session_id> # 快捷键:Ctrl-b + z
# 创建新会话
tmux new-session
# 删除会话
tmux kill-session(kill-ses) -t <session_id>
# 切换会话
tmux switch -t <session_id>
窗口
# 创建新窗口
tmux new-window # 快捷键:Ctrl-b + c
# 删除当前窗口
tmux kill-window(killw) # 快捷键:Ctrl-b + &
面板
# 划分面板
tmux split-window # 快捷键:Ctrl-b + "
tmux split-window -h # 快捷键:Ctrl-b + %
# 删除面板
tmux kill-pane(killp) # 快捷键:Ctrl-b + x
sftp
sftp username@ip //连接
put <local上的文件> <remote上的路径> //将文件上传至 remote
get <remote上的文件> <local上的路径> //将文件下载至 local
help
!command //执行命令
ffmpeg
ffmpeg -i input.mp4 # 查看视频信息
ffmpeg -i input.mp4 -vf scale=640:360 output.mp4 # 调整视频分辨率
ffmpeg -i input.mp4 -b:v 512k output.mp4 # 调整视频码率
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 # 调整视频编码格式
批量操作
# Windows
for %%i in (*.mp4) do (
ffmpeg -y -i "%%i" << TODO >> "%%~ni_shrink.mp4"
)
# Linux
for i in *.mp4;
do
ffmpeg -y -i "$i" << TODO >> "${i%.mp4}_shrink.mp4";
done
nginx
nginx -t # 检测配置文件
nginx -s reload # 重载配置
nginx -s stop # 关闭
SQL
导入 sql 文件
mysql> CREATE DATABASE demo
mysql> source D:\demo.sql
修改密码
# mysql -u root -p '原密码'
mysql> use mysql;
mysql> ALTER USER '用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
mysql> flush privileges; # 刷新系统权限相关表
mysql> exit;
Nvidia
nvcc -V # Cuda 编译器
nvidia-smi # NVIDIA System Management Interface 用于管理和监控设备
watch -n 2 -d nvidia-smi # 每两秒刷新一次
fuser -v /dev/nvidia* # 查看当前工作的进程,及占用显存的进程 PID
fuser -k /dev/nvidia* # 关闭所有占据 cuda 显存的进程
virtualenv
📄 https://virtualenv.pypa.io/en/latest/user_guide.html
# 创建环境
virtualenv env_name
# 激活环境
source env_name/bin/activate # *nix
.\env_name\Scripts\activate # windows
# 退出环境
source env_name/bin/deactivate # *nix
.\env_name\Scripts\deactivate # windows
macOS
java_home
https://medium.com/notes-for-geeks/java-home-and-java-home-on-macos-f246cab643bd
JDK 路径在 macOS 上位于 /Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
# 查看默认的 jdk
/usr/libexec/java_home
# 查找所有已安装 jdk
/usr/libexec/java_home -V
# 查找指定版本 jdk
/usr/libexec/java_home -v <Version>
# 指定版本 jdk 执行命令
/usr/libexec/java_home -v <Version> -exec java
使用 java_home
设置环境变量
alias setJDK6='export JAVA_HOME=`/usr/libexec/java_home -v 1.6`'
alias setJDK7='export JAVA_HOME=`/usr/libexec/java_home -v 1.7`'
alias setJDK8='export JAVA_HOME=`/usr/libexec/java_home -v 1.8`'
export JAVA_HOME=`/usr/libexec/java_home`
Arch | Manjaro
pacman | yay
pacman -Sy # 更新软件列表到本地 官方建议不要使用
pacman -Syu # 更新软件列表并更新软件
pacman -Ss <正则表达式> # 在远端软件列表中搜索
pacman -Qo <path> # 查看文件被哪个软件包拥有
pacman-mirrors
pacman-mirrors -c China -m rank
nmcli
# 显示连接名
nmcli con show
# 编辑连接名
nmcli con edit <连接名>
# 关闭/开启 连接
nmcli con down/up <连接名>
# 重载配置文件
nmcli con reload
Slackware
# 解压缩
explodepkg /path/to/pkg
# 安装软件包
installpkg /path/to/pkg
# 删除软件包
removepkg
# 更新软件包
upgradepk
# 使用 rpm 包
rpm2tgz
SwareT
HEXO
初始化站点
hexo init [folder]
- folder,文件夹路径
如果指定了 folder
参数,则会在指定路径下初始化站点,否则在当前路径下初始化站点。
该命令会克隆 hexo-starter 至本地,再用包管理器进行安装。因此请提前安装好以下包管理器中的一个:Yarn 或者 npm。
创建博文
hexo new [layout] <title>
layout:
- post,创建一篇公开博文
- draft,创建一篇草稿博文
title 为博文名,同时也为 md 文件名。
其他命令
# 生成静态文件
hexo generate [options] # -d,成静态文件后部署网站
# 公开草稿
hexo publish <filename>
# 启动本地服务器
hexo server
# 部署网站
hexo deploy
# 显示草稿博文
hexo --draft
命令 Primer Plus
http://guoguo.host/blog/p/105c16a4.html