软件安装

 $ sudo dpkg -i/-r <name>.deb
 $ sudo apt-get install/remove <name>
 $ sudo apt-get -f install
 $ sudo apt-get autoremove

常用

 显示路径 Ctrl+L
 粘贴板 Ctrl+;
 显示隐藏文件 Ctrl+H
 Pycharm格式化 Ctrl+Alt+L
 透明度 Alt+鼠标滚轮
 Python关闭多线程 Ctrl+\

 # 文件夹打不开
 $ killall nautilus

 # 重启输入法
 $ killall fcitx
 $ killall sogou-qinpanel
 $ fcitx

 # 终端后台
 $ <命令>&
 $ jobs
 $ fg %n #前台
 $ bg %n
 $ exec bash #切换终端
 $ chsh -s /bin/zsh #要重启
 $ ls -a
 $ top # https://www.cnblogs.com/me115/p/3842081.html

 # 下载上传文件
 $ scp root@111.111.111.11:/root/project/django.tar.gz /home/wcg/
 $ scp /home/wcg/django.tar.gz root@111.11.111.111:/root/

 # 压缩解压
 $ tar -czvf /tmp/etc.tar.gz /etc  <==打包后,以 gzip 压缩
 $ tar -xzvf /tmp/etc.tar.gz

 $ ls -lR 递归列出文件的所有文件和详细资料
 $ ls -l t* 列出t开头的文件

 $ cd ... 返回上上级目录
 $ mkdir -p /Todo/todo 创建多级目录
 $ mkdir -vp scf/{lib/,bin/,doc/{info, product}, service/deploy/{info, product}} 创建项目结构
 $ tree scf/ 查看项目结构

 $ rm -f a.log 删除不提示
 $ rm -i *.log 删除log结尾,逐一提示
 $ rm -r test 递归删除目录
 $ rm -rf test 不提示

 $ cp -R 复制目录及目录所有项目
 $ tail -f test.log 循环查看文件内容

 $ which 查看可执行文件的位置
 $ whereis 查看文件的位置
 $ locate 配合数据库查文件位置,会定期更新,可设置
 $ find 查找文件名称
 $ find -atime -2 找出48小时内修改过的文件
 $ find . -name "*.log" 关键字查找
 $ find . -type f -exec ls -l {} \;  找到普通文件并列出详细
 $ find . -type f -mtime +14 -exec rm {} \; 找出更改时间在n日以前的文件并删除它们
 $ find . -name "*.log" -exec mv {} .. \; 查找文件移动到指定目录
 $ find . -type f -print | xargs file 它是取出一部分文件而不是全部,不像-exec那样
 $ chmod a+x a.log 给所有用户组增加可执行权限 r=4, w=2, x=1
 $ chmod 777 a.log
 $ chgrp -v bin a.log 更改文件的群组属性
 $ chown wcg:wcg a.log 改变拥有者和群组

 $ df -h 显示磁盘使用情况
 $ du -h 显示目录和大小
 $ free 显示内存使用情况
 $ lsof 查看进程打开的文件
 $ lsof -i tcp:80 查看tcp端口
 $ ps -ef | grep nginx 查看nginx进程
 $ ifconfig 查看网络配置
 $ route 显示当前路由
 $ ping -c 10 ip ping指定次数
 $ traceroute blog.itswcg.com * 表示可能防火墙封掉了icmp,没有返回信息
 $ netstat -ap | grep ssh 找出程序运行的端口
 $ netstat -anpt | grep ':80' 找出运行指定端口的进程
 $ ss 更高级更快的netstat

 $ ln -s 软链接 没有s的是硬链接,软链接生成一个文件的镜像,硬链接生成一个和源文件大小一样的文件,都保持同步变化,删除后,软链接提示源文件不存在,硬链接不受影响
 $ wc a.log 统计文件字数,行数等
 $ ps -aux | grep nginx 显示详细的信息包含使用者的
 $ watch -n 1 'cat /proc/loadavg' 1秒输出一次平均负载
 $ at 5pm+3 days 三天后下午5点执行
 at> /bin/ls
 at> <EOT>
 $ cat /etc/crontab
 $ crontab -l
 $ crontab -e

死机

# Ctrl+Alt+F1
$ top
$ kill <id>
# Ctrl+Alt+F7

Sublime

 Ctrl+左键 批量改
 选中 Alt+F3 改选中所有
 Ctrl+Shift+U 侧边栏
 Ctrl+Alt+L 格式化python
 Ctrl+Shift+L 格式化html

Vim

 命令行 Esc Shift+; wq
 Normal模式
 i 插入
 a 下一个位置
 o 下一行
 dd 删除当前行
 yy 拷贝当前行
 0yw 复制第一个单词
 p 粘贴剪贴板
 P 粘贴到光标上方


 0 移到行头
 $ 移到行尾

Ctrl+F 下一Page
Ctrl+B 上一Page

 u undo
 ctrl+r redo

 gg 到第一行
 NG 到N行
 G 到最后一行

# 日志成一行
 :set wrap!

 # 粘贴混乱
 :set paste
 :set nopaste

 # 显示行标
 :set nu
 :set nu!

 vim 搜索
/wcg 正序搜索
?wcg 倒序搜索
n 下一个
N 上一个

# https://github.com/wsdjeg/vim-galore-zh_cn
:e file2 打开另个文件
:ls 列出缓冲区
:e scp://root@123.456.891/.vimrc 打开远程文件
ctrl+v j选择 A或I 插入写 esc退出效果 多行编辑
vimdiff 比较两个文件

vim -O a.py b.py 垂直分屏, o水平分屏
:new a.py 水平分屏
: vs b.py 垂直分屏
: close 关闭当前窗口
ctrl+w q 关闭窗口
ctrl+w h j k l w 切换窗口

git

$ git init
$ git add .
$ git commit -m ''
$ git remote add origin <地址>
$ git push/pull orign master #更新/同步
$ git push -u origin +master #强制更新
$ git push orign master:<名称> #提交分支

$ git branch -a #查看所有分支
$ git branch #查看当前分支
$ git branch <name> #创建分支
$ git branch -d <name> #删除分支
$ git checkout -b <name> #创建一个分支并切换到
$ git checkout <name> #切换分支

$ git rm -r --cached . #.gitignore不生效
$ git reset --hard #撤销未push的
$ git revert <SHA> #撤销push的

$ git fetch #远程服务器有更新,更新到本地
$ git merge <name> #把分支合并到当前分支

$ git tag #查看标签
$ git tag <name> #新建标签
$ git tag -a <name> -m 'commit' #新建含注释的标签

# git flow
$ git flow init
# 开发新特性
$ git flow feature start MYFEATURE #增加新特性
$ git flow feature publish MYFEATURE #发布新特性
$ git flow feature finish MYFEATURE #合并特性到develop,同时删除
$ git flow feature pull origin MYFEATURE #提取分支
# release版本
$ git flow release start RELEASE [BASE]
$ git flow release publish RELEASE
# git flow release finish RELEASE
# 紧急修复
$ git flow hotfix start VERSION [BASENAME]
$ git flow hotfix finish VERSION