命令 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. :1,10s/from/to 替换1到10行内容;
  2. :10s/from/to 替换第10行内容;
  3. :%s/from/to 替换全文内容;
  4. :1,%s/from/to 替换全文内容。
  • flags
  1. c confirm,替换前询问;
  2. e error,不显示错误;
  3. g globle,整行替换;
  4. 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
作者
Guoguo
发布于
2020年12月20日
许可协议