安装OnMyZsh

首先你得装zsh。

# Ubuntu:
sudo apt install zsh
# Archlinux:
sudo pacman -S zsh

然后就可以装ohmyzsh这个优化整合包了,官方提供的一键脚本:

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

设置常用插件

plugins=(
  git
  archlinux
  autojump
  go
  python
  systemd
  torrent
  vi-mode
  extract  #解压缩文件, x filename即可。
  zsh-proxy # git clone https://github.com/sukkaw/zsh-proxy.git ~/.oh-my-zsh/custom/plugins/zsh-proxy
  zsh-autosuggestions  # 类Fish的自动提示插件,需要自行安装。
)

安装插件 zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

安装设置插件 oh-my-zsh-proxy-plugin

git clone https://github.com/escalate/oh-my-zsh-proxy-plugin.git "$HOME/.oh-my-zsh/custom/plugins/proxy"
mkdir $HOME/.proxy 
echo "http://127.0.0.1:10800" > $HOME/.proxy/http_proxy
echo "http://127.0.0.1:10800" > $HOME/.proxy/https_proxy
echo "http://127.0.0.1:10800" > $HOME/.proxy/ftp_proxy
echo "http://127.0.0.1:10800" > $HOME/.proxy/rsync_proxy
echo "" > $HOME/.proxy/no_proxy

让设置文件支持多个类Unix系统

case `uname` in
  Darwin)
    # commands for OS X go here
  ;;
  Linux)
    # commands for Linux go here
  ;;
  FreeBSD)
    # commands for FreeBSD go here
  ;;
esac

选择国内源

# 生成可用中国镜像站列表:
sudo pacman-mirrors --country China
# 或者
sudo pacman-mirrors --c China

升级系统

sudo pacman -Syyu

清华加速源

## 在 /etc/pacman.conf 文件末尾添加以下两行:
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
#之后安装 archlinuxcn-keyring 包导入 GPG key。
sudo pacman -Syyu && sudo pacman -S  archlinuxcn-keyring

常用命令行软件

sudo pacman -S htop zsh git vim curl unzip neofetch python lsof psmisc bmon net-tools sudo
## 需要ArchlinuxCN源
sudo pacman -S byobu cockpit aurman cockpit
## Aur软件
aurman -S google-chrome

更改系统编码

具体参考 Archlinux维基

# 查看系统编码
locale 
# 更改系统编码,取消相关行注释
sudo nano /etc/locale.gen
sudo locale-gen
sudo nano /etc/default/locale
# 添加一行
LANG="en_US.UTF-8"
# 使其生效
source /etc/default/locale
#或者
localectl set-locale LANG=en_US.UTF-8

设置terminal代理

export all_proxy=http://127.0.0.1:10800;
export https_proxy=http://127.0.0.1:10800;
export http_proxy=http://127.0.0.1:10800;
# socks5代理:
export https_proxy=socks5://127.0.0.1:10801;
export http_proxy=socks5://127.0.0.1:10801;

浏览器、 软件输入法、字体等

#浏览器、网盘、通讯软件
sudo pacman -S firefox firefox-i18n-zh-cn  telegram-desktop  dropbox chromium
#常用拼音、日语输入法
sudo pacman -S  fcitx fcitx-googlepinyin fcitx-mozc fcitx-cloudpinyin fcitx-configtool fcitx-gtk3 fcitx-gtk2
#输入法需要的环境变量,重新登入后生效
nano  ~/.pam_environment 
## 这里不是 shell,不写 export
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# 常用字体
sudo pacman -S noto-fonts-emoji  adobe-source-han-sans-otc-fonts  adobe-source-code-pro-fonts noto-fonts-cjk ttf-dejavu

SSH更改默认端口、允许Root登陆

sudo nano /etc/ssh/sshd_config
##修改以下两句
#PermitRootLogin yes
#Port 22345
## 重启SSH服务
sudo systemctl restart sshd
sudo systemctl status sshd

设置时间、时间同步服务

# 设置时区
sudo timedatectl set-timezone  Asia/Shanghai
# 让 Linux 使用本地时间
sudo timedatectl set-local-rtc true
# ubuntu删除可能冲突的ntp:
sudo apt remove ntp
#编辑设置文件:
sudo nano /etc/systemd/timesyncd.conf
#添加时间服务器如下
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org 
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org time.google.com 
# 设置时间同步服务:
sudo systemctl enable systemd-timesyncd
sudo systemctl restart systemd-timesyncd
#查看时间同步服务状态
sudo systemctl status systemd-timesyncd

修复系统

Manjaro部分指令,名称和Archlinux不一样,但是用法大致相同。

mkmanjaroroot --> mkchroot
manjarobuild --> buildpkg
mkset --> buildset
pacstrap --> basestrap
genfstab --> fstabgen
arch-chroot --> manjaro-chroot

修复系统的命令也跟着替换改变即可。

比如

pacstrap /mnt base base-devel
arch-chroot /mnt

调整为:

pacstrap /mnt base base-devel
arch-chroot /mnt

参考文档:
以官方Wiki的方式安装ArchLinux
记一次修复 Arch Linux 引导

系统环境Windows10 2019 LTS

开启WSL功能

首先,你需要在系统设定当中开启WSL功能。

1、进入系统设置

点击左下角Windows图标,打开开始菜单、点击系统设置按钮。

2、启用开发人员模式

在windows设置菜单里,选择“更新与安全”。

选择开发者选项

启用开发人员模式

3、启用Windows子系统

依次选择 开始菜单、Windows系统、控制面板

在控制面板里面,找到“程序与功能”

启用“适用于Linux的Windows子系统”。

安装微软商店

网上有整合包,参考这篇文章即可:
https://www.coolapp.wang/share/4291.html
如果只是需要Ubuntu,打开应用商店搜索Linux就能找到并安装。

安装Archlinux子系统

再次感谢助人为乐的朋友:
https://github.com/yuk7/ArchWSL/
下载releases的zip包,并解压到一个有写权限的地方,在右键管理员权限运行Arch.exe。

再次打开Arch.exe,初始化pacman,运行这两句:

pacman-key --init
pacman-key --populate

然后系统就转备好了,so easy!

Windows10和Linux子系统共享文件

Arch WSL 的文件系统在 Arch\rootfs 中。
Linux访问Windows 10也非常简单,新版的WSL,Windows盘符会自动挂载文件到/mnt目录下。

参考文章

配置指北:打造 Windows 最强命令行
Linux详细设置:

Linux命令与设置备忘

Linux

网络与时间

手动设置terminal代理

export all_proxy=http://127.0.0.1:10800;
export https_proxy=http://127.0.0.1:10800;
export http_proxy=http://127.0.0.1:10800;
# socks5代理:
export https_proxy=socks5://127.0.0.1:10801;
export http_proxy=socks5://127.0.0.1:10801;

浏览器、 软件输入法、字体等(Manjaro)

#浏览器、网盘、通讯软件
sudo pacman -S firefox firefox-i18n-zh-cn  telegram-desktop  dropbox chromium
#常用拼音、日语输入法
sudo pacman -S  fcitx fcitx-googlepinyin fcitx-mozc fcitx-cloudpinyin fcitx-configtool fcitx-gtk3 fcitx-gtk2
#输入法需要的环境变量,重新登入后生效
nano  ~/.pam_environment 
## 这里不是 shell,不写 export
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# 常用字体
sudo pacman -S noto-fonts-emoji  adobe-source-han-sans-otc-fonts  adobe-source-code-pro-fonts noto-fonts-cjk ttf-dejavu

Docker相关

Docker设置

刷新DNS缓存

sudo systemctl restart nscd
# windows:
ipconfig /flushdns

查看已监听端口

sudo apt-get install lsof
lsof -i -P
#或者
netstat -tulnp

zerotier内网穿透

# 安装zerotier
curl -s https://install.zerotier.com/ | sudo bash
# zerotier加入某个网络
sudo -H zerotier-cli join 你的网络ID

ohmyzsh,zsh时钟

#ohmyzsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
#zsh时钟
nano .zshrc
nano .zshrc.local
# 添加如下内容
setopt PROMPT_SUBST
PROMPT='%B%F{red}%n@%m%f%F{yellow}[%D{%L:%M:%S}]%f:%F{blue}${${(%):-%~}}%f$ %b'
TMOUT=1
TRAPALRM() {
    zle reset-prompt
}

设置时间、时间同步服务

# 设置时区
sudo timedatectl set-timezone  Asia/Shanghai
# 让 Linux 使用本地时间
sudo timedatectl set-local-rtc true
# ubuntu删除可能冲突的ntp:
sudo apt remove ntp
#编辑设置文件:
sudo nano /etc/systemd/timesyncd.conf
#添加时间服务器如下
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org  0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org 
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org time.google.com 
# 设置时间同步服务:
sudo systemctl enable systemd-timesyncd
sudo systemctl restart systemd-timesyncd
#查看时间同步服务状态
sudo systemctl status systemd-timesyncd

开启Linux内核BBR

# 开机后 uname -r 看看是不是内核 >= 4.9
# 执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行
modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf
# 修改系统相关设置
echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf
# 让相关设置生效
sudo sysctl -p
# 检测1,如果结果都有 bbr, 则证明你的内核已开启 bbr
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
# 检测2,执行 lsmod | grep bbr, 看到有 tcp_bbr 模块即说明 bbr 已启动
lsmod | grep bbr

禁用 IPv6

# 1、临时禁用IPv6
#  将一个特定的网络接口禁用IPv6,使用以下命令:
sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/<interface-name>/disable_ipv6'
#  重新启用eth0接口的IPv6:
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6'
#  想要将整个系统所有接口包括回环接口禁用IPv6,使用以下命令:
sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'

# 2、永久禁用IPv6
#  通过 /etc/sysctl.conf 文件对 /proc 进行永久修改
#  用文本编辑器打开 /etc/sysctl.conf 然后添加以下内容:
#  禁用整个系统所有接口的IPv6
net.ipv6.conf.all.disable_ipv6 = 1
#  禁用某一个指定接口的IPv6(例如:eth0, lo)
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
#  在 /etc/sysctl.conf 使这些更改生效,运行以下命令,或直接重启:
sudo sysctl -p /etc/sysctl.conf

安装caddy与常用插件

CADDY_TELEMETRY=on curl https://getcaddy.com | bash -s personal http.forwardproxy,http.git,http.webdav,tls.dns.cloudflare

安装Syncthing(Ubuntu)

# Add the release PGP keys:
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# Add the "stable" channel to your APT sources:
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

# Update and install syncthing:
sudo apt-get update
sudo apt-get install syncthing

aria2 下载器设置

#创建aria2的配置文件,我这里将配置文件放在了/etc/aria2目录下
#文件保存目录自行修改
dir=/var/www/html/download
disable-ipv6=true
#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
max-concurrent-downloads=3
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# BT Peer客户端识别代码
peer-id-prefix=-qB334-
# BT Peer客户端描述信息
peer-agent=qBittorrent/3.3.4
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=2.0
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
# bt-save-metadata=true
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.opentrackr.org:1337/announce,udp://exodus.desync.com:6969/announceBT,http://nyaa.tracker.wf:7777/announce,udp://open.stealth.si:80/announce,udp://tracker.coppersurfer.tk:6969/announce,udp://exodus.desync.com:6969/announce
#保存退出,用配置文件启动:
sudo aria2c --conf-path=/etc/aria2/aria2.conf
#如果没有提示任何错误信息,那就按ctrl+c停止上面的语句,运行
sudo aria2c --conf-path=/etc/aria2/aria2.conf -D

系统优化

将VPS重装为Archlinux

vps2arch项目地址:
https://github.com/drizzt/vps2arch

wget http://tinyurl.com/vps2arch
chmod +x vps2arch
./vps2arch
# 设置镜像服务器
./vps2arch -m http://mirrors.163.com/archlinux/
# 如果需要syslinux
./vps2arch -m http://mirrors.163.com/archlinux/ -b syslinux

常用命令行软件

pacman -S htop  zsh git vim curl unzip neofetch python lsof psmisc bmon  net-tools sudo ranger

SSH更改默认端口、允许Root登陆

sudo nano /etc/ssh/sshd_config
##修改以下两句
#PermitRootLogin yes
#Port 22345
## 重启SSH服务
sudo systemctl restart sshd
sudo systemctl status sshd

更改系统编码

具体参考 Archlinux维基

# 查看系统编码
locale 
# 更改系统编码,取消相关行注释
sudo nano /etc/locale.gen
sudo locale-gen
sudo nano /etc/default/locale
# 添加一行
LANG="en_US.UTF-8"
# 使其生效
source /etc/default/locale
#或者
localectl set-locale LANG=en_US.UTF-8

alias 命令别名

echo "alias  check='python3 /root/check.py'">>.bashrc
source /root/.bashrc
# 注意 >是覆盖,>>是追加。
alias cls='clear'
alias ll='ls -l'
alias la='ls -a'
alias vi='vim'
alias javac="javac -J-Dfile.encoding=utf8"
alias grep="grep --color=auto"
alias -s html=mate # 在命令行直接输入后缀为 html 的文件名,会在 TextMate 中打开
alias -s rb=mate # 在命令行直接输入 ruby 文件,会在 TextMate 中打开
alias -s py=vi # 在命令行直接输入 python 文件,会用 vim 中打开,以下类似
alias -s js=vi alias -s c=vi
alias -s java=vi
alias -s txt=vi
alias -s gz='tar -xzvf'
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'

byobu

F2创建窗口
shift+F2生成水平分隔
ctrl+F2生成垂直分隔
ctrl+shift+F2生成新会话
F3 回到先前窗口
F4:跳到下一个窗口
shift+F3在一个窗口的分隔中回到上一个子窗口,可循环
shift+F4在一个窗口的分隔中回到下一个子窗口,可循环
F5 重新加载文件
F6 释放该次对话并退出Byobu环境,回到当前终端窗口,并且当你下次登录时,它会记住你上回的设置,非常智能
F7 进入 复制/回滚模式
F8 重新命名一个窗口
F9 启动配置窗口,从这里可以了解byobu的热键设置,并且也可以自己修改设置一些选项,建议每次多看看。

k-vim

sudo apt-get remove vim
#支持python的vim
sudo apt-get install vim-nox 
# https://github.com/wklken/k-vim
# ubuntu
sudo apt-get install ctags
sudo apt-get install build-essential cmake python-dev  #编译YCM自动补全插件依赖
sudo apt-get install silversearcher-ag

sudo pip install flake8 yapf
cd k-vim/
sh -x install.sh
# 移除k-vim
cd ~ && rm -rf .vim .vimrc .vimrc.bundles && cd -

后台运行

#將前台任务丟到后台中暂停:
[ctrl]+z
#查看后台的工作状态:
jobs
#将后台的任务拿到前台来处理:
fg $1
#或
fg caddy
#将任务放到后台中去处理:
bg $1
#或
bg caddy
#管理后台的任务
kill -9 name
#后台运行,关掉终端会停止运行
caddy &
#后台运行,关掉终端也会继续运行
nohup caddy &

定时执行

#列出当前任务:
crontab -l
#设置默认编辑器:
export EDITOR=nano
#编辑:
crontab -e
#编辑加入,每10分钟执行一次:
*/10 * * * * /usr/bin/python3  /root/check.py
#重启定时任务
service cron restart
#查看日志看某个job有没有执行/报错:
tail -f /var/log/cron
service cron status
### 通过命令获取MariaDB用变量PUID PGID
```bash
id username

磁盘管理

参考:
https://wiki.archlinux.org/index.php/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

# 手动卸载、加载
sudo umount /dev/sda1   && sudo mount /dev/sda /home/bai/usb/
# 格式化磁盘
sudo  mkfs  -t  ext3  /dev/mmcblk1
# 自动挂载
sudo nano /etc/fstab
# 允许任意用户挂载 不干扰开机 dump工具不备份 所有人都有读、写、运行权限 文件系统检查顺序:其他
/dev/sda1  /home/qiao/aria2 auto defaults,users,nofail,noatime,exec  0 2
# 重新加载/etc/fstab
mount -a

小技巧

多命令连续执行

#用;可以让多个命令连续知行,中间出现错误并不会中断后面命令,如:
mkdir test; mkdir test; rmdir test;
#用&&分割的命令,如果没有错误会一直执行下去,出现错误立即中止,如:
mkdir test && mkdir test && rmdir test
#用||分割的命令,如果有错误就一直执行下去,直到一次正确立即中止,如:
mkdir test || mkdir test || rmdir testmkdir test || mkdir test || rmdir test || mkdir test

文件搜索

# 按文件名搜索:
find -name  caddy
# 按文件名搜索(用数据库):
sudo apt-get install mlocate
sudo  updatedb
locate fstab
#按大小搜索(查看大于100M的文件):
sudo du -ht 200M /

查看命令信息

which  ls
whatis ls
apropos time
man ls

查看Systemctl日志

journalctl --disk-usage
journalctl

apt-get 指定版本(Debian、Ubuntu)

apt-cache madison shadowsocks-libev
apt-get install shadowsocks-libev=3.1.2

查看、更改文件内容

#输出文件内容:
cat test.txt
more test.txt
# less better than more (^——^)
less test.txt
#管道符:
history | less
#重定向,重写,如果文件里面有内容会覆盖:
la -alh / > lsout.txt
#重定向,追加,如果文件里面有内容会把新内容追加到文件尾:
la -alh / >> lsout.txt

查看、转换文本文件编码

sudo apt install enca
# 查看
enca  -L zh_CN  file.txt
# 转换
enca -L zh_CN -x UTF-8 file

其他简单命令

#删除“不以backup开头的文件”
rm -rf !(backup*)
#清空当前目录下log文件:
for i in find . -name "*.log"; do cat /dev/null >$i; done
#网络查看工具:
sudo pacman -S bmon
#在目录之间来回跳转:
pushd
popd
#查看文件类型:
file sample.txt
#日历:
cal
#命令记录:
history
#切换到管理员
sudo -s
#加运行权限:
chmod +x
#清屏:
ctrl+l
#查看磁盘挂载 :
df -h