quick note
编码
- 所有参数都应该在接收处就需要处理好默认值(针对每个模块而言,因为单个模块可能随时被拆开来用)
- 所有 golang 中的结构体只要有可能处理成 json 都需要 注意
json:"page"
避免首字母大写
Docker Command
docker rm $(docker ps -q -f status=exited) # 移除所有退出的容器
docker rmi -f $(docker images | grep "^<none>" | awk '{print $3}') # 移除所有 <none> 的镜像
docker rmi -f $(docker images | grep 'search_term_here' | awk '{print $1}') # 比如 `2 days ago`
docker volume rm $(docker volume ls -qf dangling=true)
docker network rm $(docker network ls -q)
docker save -o nginx.tar nginx:latest # 导出镜像 会保存该镜像的所有历史记录(commit)
docker save > nginx.tar nginx:latest # 导出镜像 会保存该镜像的所有历史记录(commit)
docker load -i nginx.tar # 导入镜像,包含元数据,tag等
docker load < nginx.tar # 导入镜像,包含元数据,tag等
docker export -o nginx-test.tar nginx-test # 导出容器,不会包含历史记录(commit)
docker import nginx-test.tar nginx:imp # 导入为镜像, 可以指定新镜像名
cat nginx-test.tar | docker import - nginx:imp # 导入为镜像,可以指定新镜像名
lzc-docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}" | (read -r; printf "%s\n" "$REPLY"; sort -k 2 ) # 根据容器name排序,用于检查所有容器存在,所有容器状态
根目录磁盘空间太满了,清理磁盘空间
sudo journalctl --vacuum-time=3d # 清理3天前的日志(您可以根据实际情况调整时间)
sudo pacman -Sc # 清理已安装包的冗余包文件
sudo ncdu / --exclude /home # 交互式查找并删除大体积文件
Discuz 打印出 mysql 查询语句
在 discuz_database
类中的 public static function query
方法
self::checkquery($sql);
在这后面加上 writelog("sqllog",$sql);
即可看到所有 SQL
Docker 的 alpine 快速安装 sqlite
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && apk update && apk add sqlite
快速 sqlite 查询
sqlite3 /usr/src/app/config/database.db
.databases // 查询出所有数据库
.show // 列出所有数据库信息
.tables // 列出所有表
select * from user;
.exit
# 导入导出
# 获取脚本所在目录
script_dir=$(dirname "$0")
now_time=$(date +%Y%m%d%H%M%S)
# SQLite数据库文件路径
database_file="$script_dir/gorm.db"
# 导出的SQL文件路径
sql_file="$script_dir/export.$now_time.sql"
# 导出SQLite数据库为SQL文件
sqlite3 "$database_file" ".dump" > "$sql_file"
# 还原SQL文件为SQLite数据库
sqlite3 "$database_file" < "$sql_file"
下载在线文档到本地
wget -r -p -k -nc -o www.shouce.ren.log www.shouce.ren
递归查找包含指定字符(忽略大小写)的所有 markdown 文件并显示行号
grep -in "searchWord" *.md
grep -rin "searchWord" --include "*.md" .
grep --color -rni XGetWindowAttributes
pdf 体积太大裁剪
pdftk ./linux内核编程.pdf cat 1-70 output linux内核编程.上.pdf
指定目录下的字符串批量替换
sed -i "s/oldstring/newstring/g" grep oldstring -rl path
sed -i "s/要查找的文本/替换后的文本/g" `grep -rl "要查找的文本" /任意目录`
显示当前目录下所有文件夹大小,从小到大排序
du -sh * | sort -n
新增用户及快速配置
sudo useradd -s /bin/bash -m lianghong -G sudo,docker,netdev,users
-u 1500
-s /bin/bash /usr/bin/zsh
sudo password lianghong
# sudo usermod -aG sudo,docker,netdev,users lianghong
sudo userdel -r lianghong
临时 x11vnc 服务
https://wiki.archlinux.org/title/X11vnc_(简体中文)
x11vnc -display :0
x11vnc -auth /var/lib/lightdm/.Xauthority -display :0 -forever
x11vnc -display :0 -autho /home/USER/.Xauthority
x11vnc -display :0 -auth /var/lib/gdm/:0.Xauth
x11vnc -wait 50 -noxdamage -passwd PASSWORD -display :0 -forever -o /var/log/x11vnc.log -bg
x11vnc -usepw # 设置密码
x11vnc -find
❯ ps -aux | grep auth # 留意 Xvfb
root 251969 0.0 0.4 843784 68392 tty7 Ssl+ 3月14 3:49 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{7f719f8e-fea0-4375-9e08-f62c4f00b5d9} -background none -noreset -displayfd 18 -seat seat0 vt7
root 251984 0.0 0.0 61868 15236 ? S 3月14 0:00 /usr/lib/x86_64-linux-gnu/sddm/sddm-helper --socket /tmp/sddm-auth94af223c-bed9-4d33-bf86-4da3b2e94382 --id 8 --start /usr/bin/sddm-greeter --socket /tmp/sddm-:0-hQxQPR --theme /usr/share/sddm/themes/debian-theme --user sddm --greeter
chenlia+ 337277 0.8 1.6 1380336 266304 ? Sl 14:46 0:28 Xvfb :20 -auth /home/chenlianghong/.Xauthority -nolisten tcp -noreset -screen 0 3840x2560x24
chenlia+ 337306 0.0 0.4 17231584 77216 ? Sl 14:46 0:00 /opt/google/chrome-remote-desktop/chrome-remote-desktop-host --host-config=- --audio-pipe-name=/home/chenlianghong/.config/chrome-remote-desktop/pulseaudio#b60643d23f/fifo_output --server-supports-exact-resize --ssh-auth-sockname=/tmp/chromoting.chenlianghong.ssh_auth_sock --signal-parent
chenlia+ 337693 0.0 0.1 192556 16944 ? Sl 14:54 0:00 /usr/lib/x86_64-linux-gnu/polkit-mate/polkit-mate-authentication-agent-1
chenlia+ 339403 0.8 0.2 56452 34264 pts/5 S+ 15:08 0:16 x11vnc -auth /home/chenlianghong/.Xauthority -display :20 -forever
chenlia+ 340041 0.0 0.0 9392 728 pts/0 S+ 15:41 0:00 grep --color=auto auth
日志输出
./test.sh > log.txt 2>&1 # 将 ./test.sh 的输出重定向到 log.txt 中,同事将标准错误也重定向到 log.txt 文件中
# 类型 文件描述符 默认情况 对应文件句柄位置
# 标准输入(standard input) 0 从键盘获得输入 /proc/self/fd/0
# 标准输出(standard output) 1 输出到屏幕(即控制台) /proc/self/fd/1
# 错误输出(error output) 2 输出到屏幕(即控制台) /proc/self/fd/2
# 命令 介绍
# command <filename 以filename文件作为标准输入
# command 0<filename 同上
# command <<delimiter 从标准输入中读入,直到遇到delimiter分隔符
nohup java -jar xxxx.jar >/dev/null 2>&1 & # >/dev/null 2>&1命令来丢弃所有的输出
./test.sh &> log.txt
# &> file 和 >& file 意思是把标准输出和标准错误输出都重定向到文件file中
ssh临时跳转使用
scp -J user@host.com:2222 1.js user@192.168.1.68:~ # 临时拷贝文件
ssh -J user@host.com:2222 -X user@192.168.1.68 # 临时连接(withX11)
ssh临时授权
# 解决部分网络下需要对虚拟机(无桌面)进行网络扫码授权的问题
ssh -D 1080 user@192.168.1.68
# 然后在浏览器中使用插件连接上本地 socks5 的 1080 端口,即可进行网络访问扫码授权的操作了。
How to push all?
case 1:
git remote add gitee git@gitee.com:clh21/vim.git
git remote remove gitee
git remote add all git@gitee.com:clh21/vim.git
git remote set-url --add all git@github.com:clh021/vim.git
git push all --all
git fetch --all
# Tip: To no need typing all whenever you send a commit, just use "origin" instead of "all":
git remote set-url --add origin nodester-host:path/proj.git
case 2:
# To push all branches to all remotes:
git remote | xargs -L1 git push --all
# To push a specific branch to all remotes
git remote | xargs -L1 -I R git push R master
# To make a git alias for the command
git config --global alias.pushall '!git remote | xargs -L1 git push --all'
Md5sum
$ md5sum file1 file2 file3 > mysum
$ md5sum --check mysum
file1: OK
file2: OK
file3: OK
study
pkg-config --cflags --libs gtk+-3.0
pkg-config --cflags --libs wayland-protocols
cmake --build build
cd /usr/include/aarch64-linux-gnu/
cd /usr/lib/aarch64-linux-gnu/pkgconfig/
ls |grep wayland
dpkg -L wayland-protocols
cd /usr/share/pkgconfig/
cd /usr
find -name wayland-protocols.pc
vim ./local/share/pkgconfig/wayland-protocols.pc
cd local/share
ls
cd pkgconfig/
ls
sudo rm wayland-protocols.pc
dpkg -l |grep gtk
dpkg -L libgtk-3-dev
vim /usr/lib/aarch64-linux-gnu/pkgconfig/gtk+-3.0.pc
pkg-config --cflags --libs gtk+-3.0
dpkg -l |grep
aptitude search wayland-protocols
dpkg -l |grep wayland-protocols
apt-cache search wayland-protocols
apt-cache policy wayland-protocols
pkg-config --cflags --libs wayland-protocols
pkg-config --cflags --libs wayland-client
cmake -B build .
ls
cmake -G Ninja -B build
ls build
ninja -C build
cmake -G Ninja -B build
ls
cd build
ls
cmake --build .
查看一个正在运行的命令细节
pgrep -fa lithium
查看文件名或路径中包含了 download 的
fdfind download | grep idl
命令行界面如何获取二次开发浏览器(qax)的内核版本号
echo -e "HTTP/1.0 200 OK\r\n\r\n" | nc -l 8080 -q 1 | grep User-Agent # 得到一次请求时就输出 200状态 并截取 User-Agent 内容
DISPLAY=:0 qaxbrowser-safe http://127.0.0.1:8080
npm resolve alias @
import { resolve } from 'node:path'
export default defineConfig({
plugins: [
],
resolve: {
alias: {
"@": resolve(__dirname, 'src'), // 路径别名
}
},
})
操作系统语言统一(针对中英文混合)
# 当前系统 locale 支持的语言
# 如果不具备你需要的语言,可以通过 `sudo vim /etc/locale.gen` 开启 对应语言
# 今天因此解决了微信发送文件时,识别中文文件文件名的问题。
$ sudo locale-gen
Generating locales...
en_US.UTF-8... done
zh_CN.UTF-8... done
Generation complete.
WPS365 在英文系统下使用中文语言
# 每次升级该软件时都会被覆盖
sudo nvim /usr/bin/wps
sudo nvim /usr/bin/wpp
sudo nvim /usr/bin/et
sudo nvim /usr/bin/wpspdf
export LANG=zh_CN.UTF-8
包管理常用命令
#查询 lib 被谁依赖
pacman -Qi libname | grep "Required By"
#查询包依赖谁
pacman -Qi packagename | grep "Depends On"
#列出孤立的包(-t不再被依赖的"作为依赖项安装的包")
pacman -Qqdt #通常这些是可以妥妥的删除的
sudo pacman -Qqdt | sudo pacman -Rs -
#列出包所拥有的文件
sudo pacman -Ql packagename
音频和蓝牙
sudo pacman -S easyeffects pipewire-pulse
sudo pacman -S pavucontrol
sudo pacman -S bluez bluez-utils bluedevil
pactl load-module module-bluetooth-discover
sudo vim /etc/bluetooth/main.conf
FastConnectable=true
AutoEnable=true
录屏没声音
录屏软件内录没有声音(pulseaudio)
#(注意:录屏过程中插拔耳机会导致录屏无声)
pactl list | grep "Monitor Source" | awk '{print $3}' | xargs -I {} pacmd set-source-mute {} 0
#快捷键开启/关闭麦克风(pulseaudio):
pactl list sources | grep Name | grep input | awk '{print $2}' | xargs -I {} pactl set-source-mute {} toggle
#音频捕获还是不动弹的话重启下obs就可以了
#麦克风降噪(pulseaudio换pipewire):
sudo pacman -S pipewire pipewire-pulse pipewire-jack pipewire-alsa
sudo pacman -S easyeffects calf
sudo pacman -S lsp-plugins zam-plugins # 慎重, 会生成很多图标
#https://blog.ryey.icu/zhs/replace-pulseaudio-with-pipewire.html
#https://zhuanlan.zhihu.com/p/439611615
#https://wiki.archlinuxcn.org/wiki/PipeWire
修复引导
启动 live cd, 打开终端
# passwd # sudo 要密码时执行
# 列出磁盘和分区, 我的系统所在硬盘是 `nvme0n1`,
# 根分区是 `nvme0n1p2`, efi(esp) 分区是 `nvme0n1p1`
sudo lsblk
sudo mount /dev/nvme0n1p2 /mnt # 挂载根分区
sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 挂载 efi 分区
sudo arch-chroot /mnt # 切换根目录
sudo grub-install --recheck /dev/nvme0n1 # 安装 grub
sudo grub-mkconfig -o /boot/grub/grub.cfg # 生成配置
exit # 退出 chroot 环境并关机
shutdown now
u盘权限
sudo groupadd usbfs
sudo usermod -a -G usbfs $USER
#sudo reboot now
远程UOS时总是显示Your system is not activated. Please activate as soon as possible for normal use提示
//查询license.service是否启动
lsystemctl lgrep license
//关闭license.service
lsystemctl stop license.service
//关闭开机启动license.service
1systemctl disable license.service