















本文章随时可能更新
随着东西越来越多,可能不限于 Linux 了,-_-b
安装插件
yay -Syu zsh-syntax-highlighting zsh-autosuggestions zsh-autocomplete-git
zsh 相关配置项
PROMPT='%F{10}%n@%m%f:%F{12}%~%f> ' ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=blue" source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh bindkey '^I' complete-word # tab | complete bindkey '^[[Z' autosuggest-accept # shift + tab | autosuggest ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(buffer-empty bracketed-paste accept-line push-line-or-edit) ZSH_AUTOSUGGEST_STRATEGY=(history completion) ZSH_AUTOSUGGEST_USE_ASYNC=true
" 关闭 vi 兼容 set nocompatible " 历史记录步数 set history=1000 " 自动检查格式 filetype on filetype plugin on filetype indent on " 自动重载文件 set autoread " 允许使用鼠标 set mouse=a set selection=exclusive set selectmode=mouse,key " 激活折叠 set foldenable " 高亮当前行 set cursorline " 语法高亮 syntax on " 显示行号 set nu " 缩进 set tabstop=4 set shiftwidth=4 set expandtab set si " 自动对齐 set autoindent set cindent set smartindent " 显示标尺 set ruler
Host *
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p.socket
ControlPersist yes
usermod -a -G groupA user usermod -a -G docker ohyee usermod -a -G root ohyee
依赖于用户目录下的 env 环境自动识别实现
export ENV_FOLDER=$HOME/env:$HOME/env/bin for folder in $(ls -alR $ENV_FOLDER | grep "^l" | tr -s " " | cut -d " " -f 9); do export PATH=$PATH:$ENV_FOLDER/$folder/bin done
使用 ln -s 将不同版本的依赖注册到环境变量里
同时,还需要设置相关的环境变量
export JAVA_HOME=${HOME}/env/openjdk export PATH=${PATH}:${JAVA_HOME}/jre/bin
需要注意的是,全局的 Maven setting.xml 位于 $HOME/env/maven/conf/setting.xml
python3 -m pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
安装、更新
yay -S vim # 安装软件 yay -Sy vim # 更新列表并安装软件 yay -Syu vim # 更新可更新的包,并安装软件 yay -Syyu vim # 更新系统,并安装软件 yay -Su # 更新所有包 yay -Sw vim # 下载安装包不安装 yay -U xxx.pkg.tar.gz # 安装本地包
卸载
yay -R vim # 卸载软件 yay -Rs vim # 卸载软件,并卸载其可卸载依赖 yay -Rsc vim # 卸载软件,卸载其依赖,并卸载依赖其的软件 yay -Ru vim # 卸载软件,同时卸载所有不被依赖的依赖
搜索
yay -Ss vim # 搜索软件 yay -Sl archlinuxcn # 从指定仓库搜索 yay -Qs vim # 搜索已安装的软件 yay -Qu # 搜索可更新的软件 yay -Qt # 搜索任何不被依赖的软件 yay -Qi # 搜索并查看信息 yay -Ql # 搜索并查看其安装的文件路径 yay -Sg # 查找软件包 yay -Qg # 查看已安装的软件包
清理
yay -Sc # 清理未安装的包缓存 yay -Scc # 清理所有缓存
在部分场景下,可能需要为 apt 设置临时代理(如 docker 内),可以使用
apt-get -o Acquire::http::proxy="socks5h://host.docker.internal:7890" install vim -y
cut 可以对字符串进行分割,并取出特定列的内容
echo "1|2|3|45|6" | cut -d "|" -f 2
如上面的命令,则可以取出用 | 分割的第二部分内容(2)
echo "1|2|3|45|6" | cut -d "|" -f 2-4
而 -f 2-4 则可以取出 2~4 部分内容(2|3|45)
tr 可以删除或替换字符
大小写转换
使用下面的命令,可以将小写转换为大写,输出 ABCD
echo "abcd" | tr a-z A-Z
合并相邻字符
可以将字符串中多余的空格合并为一个,输出 Hello World !,通常用于和 cut 配合
echo "Hello World !" | tr -s " "
删除字符
将满足条件的字符删除,输出 Hi!
echo "Hi !" | tr -d " "
sed 是用来处理文本文件的命令
-e: 要执行的操作-n: 只显示修改的部分-i: 执行操作,并将改动写入文件操作指令
a: 在对应行数后新增一行c: 修改对应的行d: 删除对应的行i: 在对应行数前新增一行p: 打印对应的行s: 正则表达式替换命令格式 {要修改的位置}{命令}{改动后的结果}
要修改的位置可以是行数,也可以是使用 / 包裹的正则表达式。如果要修改 2~5 行,则可以使用 2,5
在第一行后新增
$ echo -e "12345\n246810" | sed -e "1aabcdefg" 12345 abcdefg 246810
删除第 2 行
$ echo -e "12345\n246810" | sed -e "2d" 12345
正则表达式替换
$ echo -e "12345\n246810" | sed -e "s/1/a/" a2345 2468a0
grep -5 'xxx' // 匹配同时输出上下 5 行
grep -C 5 'xxx' // 匹配同时输出上下 5 行
grep -A 5 'xxx' // 匹配同时输出后 5 行
grep -B 5 'xxx' // 匹配同时输出前 5 行
$ a=`for i in {1..10}; do echo "$i"; done`; echo $a | grep -C 2 "5"
3
4
5
6
7
rsync 是一个可以与替换 mv、cp、scp 的工具
-r: 递归操作(操作文件夹)-a: 同步元数据-n、--dry-run: 不实际执行,只查看可能的结果--delete: 删除目的文件夹存在,但是源文件夹不存在的文件--exclude: 排除文件不操作-c: 检查 checksum,而不是时间戳-h: 人类可读形式展示-i: 输出源文件夹和目的文件夹的差异--link-dest: 增量备份的基准目录-m: 不同步空目录-v: 展示详细信息--partial: 允许断点重传--progress: 显示进度-z: 压缩传输-P: --progress + --partial所有的参数都会作用于参数后的第一个文件
| 基本参数 | 解释 | 音频参数 | 解释 | 视频参数 | 解释 |
|---|---|---|---|---|---|
-i |
设定输入流 | -aframes |
音频帧数 | -vframes |
视频帧数 |
-f |
设定输出格式 | -b:a |
音频码率 | -b:v |
视频码率 |
-ss |
开始时间 | -ar |
采样率 | -r |
帧速率 |
-t |
持续长度 | -acodec |
声音解码器 | -vcodec |
视频解码器 |
-an |
不处理音频 | -vn |
不处理视频 | ||
-af |
音频过滤器 | -vf |
视频过滤器 | ||
-ac |
声音频道数 | -s |
画面大小 | ||
-aspect |
横纵比 |
将flv转换为mp4: ffmpeg -i input.flv output.flv
裁剪视频:
ffmpeg -ss 00:00:00 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy output.mp4ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:30 -vcodec copy -acodec copy output.mp4帧内编码: ffmpeg -i input.mp4 -strict -2 -qscale 0 -intra output.mp4
视频拼接: ffmpeg -f concat -i list.txt -c copy output.mp4
其中,list.txt的内容应该是如下格式
file ./split.mp4 file ./split1.mp4
截图:
ffmpeg -ss 00:1:05 -i input.mp4 -frames:v 1 output.jpgffmpeg -i input.mp4 -ss 00:1:05 -frames:v 1 output.jpg视频静音: ffmpeg -i input.mp4 -an output.mp4
只要音频:
ffmpeg -i input.mp4 -an output.mp3ffmpeg -i input.mp4 output.mp3视频转换为图片: ffmpeg -i input.mp4 -t 5 -s 640x360 -r 15 frame%03d.jpg
音频调整音量: ffmpeg -i input.mp3 -filter "volume=20dB" output.mp3
screen -ls # 列举所有 screen 会话 screen -d # 后台运行会话 screen -r # 恢复会话 screen -S <name> # 预设会话名称 screen -wipe # 清除宕机的会话 screen -s <shell> # 设定 shell
<C-a> d # 后台运行会话 # 窗口相关 <C-a> w # 显示窗口列表 <C-a> c # 启动一个新的 shell 并切换到该窗口 <C-a> <0~9> # 快速切换到指定窗口 <C-a> ' # 交互式切换至指定窗口 <C-a> <C-a> # 上一个使用的窗口 <C-a> p # 前一个窗口 <C-a> n # 后一个窗口 <C-a> Space # 顺序切换窗口 # 分屏相关 <C-a> | # 左右分屏 <C-a> S # 上下分屏 <C-a> X # 关闭当前分屏 <C-a> Tab # 分屏间切换
如果希望使用鼠标切换分屏,可以在~/.screenrc中修改
mousetrack ondefmousetrack on
添加如下配置,则可以允许鼠标滚轮滚动
termcapinfo xterm* ti@:te@
tmux 本身包含会话(session)、窗口(window)、窗格(panel)三层概念,其中会话和窗口实际上并没有特别明显的界限(可以使用快捷键直接在不同会话内切换),因此通常根据任务进行逻辑上划分
所有的快捷键都需要使用 ctrl + b 作为前缀(后续省略)
同时,也可以直接在 tmux 内部的终端内执行相应的命令来实现快捷键同样的效果
# 新建会话 tmux new [-s {会话名}] [-n {窗口名}] # 列出会话 tmux ls # 进入会话 tmux attach [-t {会话名}] tmux at [-t {会话名}] tmux a [-t {会话名}] # 退出会话 tmux detach tmux det # 结束会话 tmux kill-session # 关闭其他会话 tmux kill-session -t {会话名} # 切换会话 tmux switch -t {会话名} # 重命名会话 tmux rename-session -t 0 {会话名}
:new: 启动新会话# 创建窗口 tmux new-window # 切换窗口 tmux select-window -t {窗口编号} # 重命名窗口 tmux rename-window {窗口名}
# 上下拆分窗格 tmux split-window # 左右拆分窗格 tmux split-window -h # 移动光标 tmux select-pane [-U] [-D] [-L] [-R] # 交换窗格位置 tmux swap-pane [-U] [-D] [-L] [-R]
# 查看快捷键 tmux list-keys # 查看命令 tmux list-commands # 查看会话信息 tmux info # 重新加载 tmux 配置 tmux source-file ~/.tmux.conf
删除所有启动中的容器
docker ps | cut -d " " -f 1 | grep -v CONTAINER | xargs docker stop
获取特定 Container IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' $ContainerID
删除 none 镜像
docker images | grep none | tr -s " " | cut -f 3 -d " " | xargs docker rmi
启动一个挂后台的容器,可用于独立开发环境
docker run --name=dev --net=host -it -d -v $(pwd):/data ubuntu tail -f /dev/null
轻量级命令行多线程下载
axel xxx.tar -n 16
Optimize-VHD -Path $Env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx -Mode Full Optimize-VHD -Path $Env:LOCALAPPDATA\Packages\yuk7.archwsl_35zwpb4sx6e50\LocalState\ext4.vhdx -Mode Full
虽然不应该写在这,但是没地方放了
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。