Linux Shell

本文章随时可能更新

bash

.bashrc

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

PS1='[\u@\h \W]\$ '
alias ls='ls --color=auto'
alias ll="ls -l"
alias vim="nvim"
export PATH=$PATH:/home/ohyee/.local/bin
export PATH=$PATH:/home/ohyee/.cargo/bin
export PATH=$PATH:/home/ohyee/go/bin

export PS1='$(if [ $? -eq 0 ]; then echo -ne "\[\e[1;32m\]$\[\e[0m\]"; else echo -ne "\[\e[1;31m\]$\[\e[0m\]"; fi) \[\e[95m\]\t\[\e[0m\] \[\e[33m\]\u\[\e[0m\]@\[\e[96m\]\H\[\e[0m\]:\[\e[36m\]\w\[\e[0m\]$(bra    nch=$(git status 2>/dev/null | head -n 1 | cut -d " " -f 3 2>/dev/null);if [[ -n ${branch} ]]; then echo -ne "@\[\e[1;91m\]${branch}\[\e[0m\]";fi) \n\[\e[1;37m\]>\[\e[0m\] '

export ENVPATH=~/env
for dir in $(ls -lhaF ${ENVPATH} | grep "^l" | tr -s " " | cut -d " " -f 9 | xargs | tr -d "@"); do PATH="$(cd ${ENVPATH}; cd $dir; pwd)/bin":${PATH}; done

export PATH=$PATH:/home/ohyee/.yarn/bin
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
export CHROME_PATH=/home/ohyee/chrome
export PUPPETEER_EXECUTABLE_PATH=$CHROME_PATH
export PATH=$PATH:$CHROME_PATH
export NODE_PATH=/home/ohyee/.config/yarn/global/node_modules:/usr/lib/node_modules
. "/home/ohyee/.acme.sh/acme.sh.env"
export LIBGL_ALWAYS_INDIRECT=1 #GWSL
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0 #GWSL
export PULSE_SERVER=tcp:$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}') #GWSL

快捷键

  • Ctrl + A: 移到命令行首
  • Ctrl + E: 移到命令行尾
  • Ctrl + F: 按字符前移(右向)
  • Ctrl + B: 按字符后移(左向)
  • Alt + B: 按单词前移(右向)
  • Alt + B: 按单词后移(左向)
  • Ctrl + XX: 在命令行首和光标之间移动
  • Ctrl + U: 从光标处删除至命令行首
  • Ctrl + K: 从光标处删除至命令行尾
  • Ctrl + W: 从光标处删除至字首
  • Alt + D: 从光标处删除至字尾
  • Ctrl + D: 删除光标处的字符
  • Ctrl + H: 删除光标前的字符
  • Ctrl + Y: 粘贴至光标后
  • Alt + C: 从光标处更改为首字母大写的单词
  • Alt + U: 从光标处更改为全部大写的单词
  • Alt + L: 从光标处更改为全部小写的单词
  • Ctrl + T: 交换光标处和之前的字符
  • Alt + T: 交换光标处和之前的单词
  • Alt + Backspace: 与 Ctrl + w 相同类似,分隔符有些差别
  • Ctrl + R: 逆向搜索命令历史
  • Ctrl + G: 从历史搜索模式退出
  • Ctrl + P: 历史中的上一条命令
  • Ctrl + N: 历史中的下一条命令
  • Alt + .: 使用上一条命令的最后一个参数
  • Ctrl + L: 清屏
  • Ctrl + O: 执行当前命令,并选择上一条命令
  • Ctrl + S: 阻止屏幕输出
  • Ctrl + Q: 允许屏幕输出
  • Ctrl + C: 终止命令
  • Ctrl + Z: 挂起命令
  • !!: 执行上一条命令

zsh

安装插件

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

用户组

usermod -a -G groupA user
usermod -a -G docker ohyee
usermod -a -G root ohyee

yay 命令

安装、更新

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 # 清理所有缓存

screen 命令

参数

screen -ls          # 列举所有 screen 会话screen -d           # 后台运行会话screen -r           # 恢复会话screen -S <name>    # 预设会话名称screen -wipe        # 清除宕机的会话 screen -s <shell>   # 设定 shell

screen 会话内部

<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

tmux

cut 命令

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 命令

tr 可以删除或替换字符

大小写转换

使用下面的命令,可以将小写转换为大写,输出 ABCD

echo "abcd" | tr a-z A-Z

合并相邻字符

可以将字符串中多余的空格合并为一个,输出 Hello World !,通常用于和 cut 配合

echo "Hello  World    !" | tr -s " "

删除字符

将满足条件的字符删除,输出 Hi!

echo "Hi   !" | tr -d " "

docker 命令

删除所有启动中的容器

docker ps | cut -d " " -f 1 | grep -v CONTAINER | xargs docker stop

获取特定 Container IP

 docker inspect --format='{{.NetworkSettings.IPAddress}}' $ContainerID

axel

轻量级命令行多线程下载

axel xxx.tar -n 16