电脑配置环境记录

Author Avatar
Tr0y 10月 04, 2018 20:02:53 本文共 3.3k 字
  • 文为知己者书
  • 在其它设备中阅读本文章

磨刀不误砍柴工

很多配置属于技巧,收录在这里
https://www.tr0y.wang/2018/10/08/LUinux/

通用

vim

vimrc

" -------------- vim 原生配置 --------------

set nocompatible "不兼容 vi 模式
filetype off     " 不自动检测文件类型
" 让光标停留在上一次打开的行
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

set backspace=2     " 设置 backspace 可以删除任意字符

" Configuration file for vim
set modelines=0     " CVE-2007-2438

" 执行 "crontab -e" 的时候不备份
au BufWrite /private/tmp/crontab.* set nowritebackup nobackup

" 执行 "chpass" 的时候不备份
au BufWrite /private/etc/pw.* set nowritebackup nobackup

set autoindent " 自动缩进

set tabstop=4 " 设置 TAB 宽 4 个空格

set expandtab  " 将 tab 转成 space

set number " 显示行号

set nowrap " 不自动换行

set encoding=utf-8 " 文件默认编码

let skip_defaults_vim=1 " 完全禁用 defaults.vim

syntax on " 开启语法高亮

set hlsearch " 高亮显示搜索结果

" 折叠代码
set foldmethod=indent " 用缩进来判断
set foldlevel=99 " 默认不折叠

set ignorecase  " 搜索模式里忽略大小写

set smartcase   " 如果搜索模式包含大写字符,不使用 ignorecase 选项

set nopaste " 

" -------------- end --------------





" -------------- Vundle 相关 --------------
" 载入 Vundle
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'    " 安装插件的插件 :D
Plugin 'Yggdroot/indentLine'     " 对齐缩进线
Plugin 'scrooloose/nerdtree'     " 树形目录
Plugin 'tell-k/vim-autopep8'     " 自动以 PEP8 标准格式化代码
Plugin 'jiangmiao/auto-pairs'    " 自动补充括号、引号
Plugin 'maralla/completor.vim'   " 自动补全
" Plugin 'vim-syntastic/syntastic' " 静态语法检查
Plugin 'majutsushi/tagbar'       " 分析代码的变量、函数等等信息
Plugin 'python-mode/python-mode'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

" -------------- end --------------





" -------------- Python 相关 --------------

"按 F5 运行 py 脚本
let g:pymode_run_bind = '<F5>'

" 按 F4 用 PEP8 格式化代码
autocmd FileType python noremap <buffer> <F4> :call Autopep8()<CR>
let g:autopep8_disable_show_diff=1 " PEP8 格式化的时候不显示 diff 窗口
let g:autopep8_max_line_length=120 " PEP8 格式化标准中的最长行(默认的 79 个字符太少了)

" 按 F3 分析代码的变量、函数、类等信息
nmap <F3> :TagbarToggle<CR>
let g:tagbar_autofocus = 1  " tagbar 打开后,光标即在 tagbar 页面内

" 对齐缩进线的颜色
let g:indentLine_color_term = 255 " 线的颜色
let g:indentLine_bgcolor_gui = "#3a495b" " 线的背景色,改为与终端颜色一致

" 配置静态语法检查
" set statusline+=%#warningmsg#
" set statusline+=%{SyntasticStatuslineFlag()}
" set statusline+=%*
" let g:syntastic_check_on_open = 0 " 打开文件的时候不进行静态语法检查
" let g:syntastic_check_on_wq = 0   " wq 的时候也不检查
" let g:syntastic_quiet_messages = { 'regex': ['trailing-newlines', 'invalid-name',
"    \'too-many-lines', 'too-many-instance-attributes', 'too-many-public-methods',
"    \'too-many-locals', 'too-many-branches', 'missing-docstring', 'redefined-outer-name',
"    \'too-few-public-methods', 'broad-except', 'line-too-long' ]} " 忽略这些


" 新建 .py 文件的时候自动加上以下内容
function HeaderPython()
call setline(1, "#-*- coding:utf8 -*-")
call append(1, "# Power by")
call append(2, "#  _____      ___")
call append(3, "# |_   _| __ / _ \\ _   _")
call append(4, "#   | || '__| | | | | | |")
call append(5, "#   | || |  | |_| | |_| |")
call append(6, "#   |_||_|   \\___/ \\__, |")
call append(7, "#                  |___/")
call append(8, "#")
call append(9, "# in ".strftime('%Y-%m-%d %T', localtime()))
call append(10, "# ------------------------------------")
normal G
normal o
normal o
endf
autocmd bufnewfile *.py call HeaderPython()

let python_highlight_all=1 " 不规范的 Python 语法的警告提示

" -------------- End --------------





" 按 F1 打开树形目录
map <F1> :NERDTreeToggle<CR>



let g:pymode_python = 'python3'
let g:pymode_lint_ignore = ["E722"]
let g:pymode_options_max_line_length = 120

zsh

插件

  • autojump
  • zsh-autosuggestions(修改它配置后需要再 make。参考一下 readme)
  • zsh-syntax-highlighting

alias

alias p="python"
alias v="vim"
alias ipy="ipython"
alias p2="pyenv global 2.7.15; pyenv version" # 切换到 python2
alias p3="pyenv global 3.6.5; pyenv version"  # 切换到 python3
alias gitpush="git add .;git commit -m 'upload latest code';git push -u origin master" # git 快速 push。当然,commit 一直都是 'upload latest code' 不是好习惯。
alias vzsh="vim $HOME/.zshrc" # 编辑 zsh
alias rzsh="source $HOME/.zshrc && echo '>> ZSH configurations are reloaded!'" # 重新载入 zsh
alias czsh="cat $HOME/.zshrc" # cat zsh 配置文件
alias e="exit"
alias pinstall="pip install"
alias ainstall="sudo apt install -y"
alias proxy="proxychains4 -q" # 终端走 ss
alias pv="fzf --preview 'bat --color \"always\" {}'" # 在终端下查找/预览文件
alias pping="prettyping --nolegend -c 10" # ping 的替代
alias pcurl="prettycurl" # curl 的替代
alias pcat="bat" # cat 的替代
alias ptop="htop" # top 的替代
alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules" # 显示硬盘的使用情况(有些版本可能支持 --color 选项)
alias pman="tldr" # man 的替代
alias empty="echo '' > " # 清空文件

函数

# 生成多种形式的字符画
function ascii() {
    if  [ -n "$1" ] ;then
        figlet -l |awk -F "\n" '{printf "%s\n", $1}' | sed 's| |\\ |g'|sed "s|'|\\\'|g"| xargs -n 1 -E "\n" figlet $1 -f;
    else
        figlet -h
    fi
}

# 全局搜索
function pfind(){
    cd /;
    fd $@;
    -;
}

# 只需要输入 x 即可解压任意类型的压缩包
function x {
 if [ -z "$1" ]; then
    # display usage if no parameters given
    echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
    echo "       extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
 else
    for n in "$@"
    do
      if [ -f "$n" ] ; then
          case "${n%,}" in
            *.cbt|*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar)
                         tar xvf "$n"       ;;
            *.lzma)      unlzma ./"$n"      ;;
            *.bz2)       bunzip2 ./"$n"     ;;
            *.cbr|*.rar)       unrar x -ad ./"$n" ;;
            *.gz)        gunzip ./"$n"      ;;
            *.cbz|*.epub|*.zip)       unzip ./"$n"       ;;
            *.z)         uncompress ./"$n"  ;;
            *.7z|*.arj|*.cab|*.cb7|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.pkg|*.rpm|*.udf|*.wim|*.xar)
                         7z x ./"$n"        ;;
            *.xz)        unxz ./"$n"        ;;
            *.exe)       cabextract ./"$n"  ;;
            *.cpio)      cpio -id < ./"$n"  ;;
            *.cba|*.ace)      unace x ./"$n"      ;;
            *)
                         echo "extract: '$n' - unknown archive method"
                         return 1
                         ;;
          esac
      else
          echo "'$n' - file does not exist"
          return 1
      fi
    done
fi
}

舒服地切换 py 版本

安装 pyenv

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.zshrc
echo 'export PYENV_ROOT=~/.pyenv' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

人类使用的 REPL

安装 ipython

CTF/安全类工具集

科学上网

  • 安装 ssr(GUI/CLI)
  • 安装 proxychains
    git clone https://github.com/rofl0r/proxychains-ng.git
    cd proxychains/
    ./configure
    make && make install
    
    然后配置 proxychains 的配置文件(没有新建即可,或者将 git clone 下来的 proxychains 中的配置文件移动到 /etc 下:mv ./proxychains/src/proxychains.conf /etc/
    [ProxyList]
    # add proxy here ...
    # meanwile
    # defaults set to "tor"
    socks5  127.0.0.1 1080
    
  • 测试效果
    ➜  ~ proxychains4 curl google.com
    [proxychains] config file found: /etc/proxychains.conf
    [proxychains] preloading /usr/local/lib/libproxychains4.so
    [proxychains] DLL init
    [proxychains] Strict chain  ...  127.0.0.1:1080  ...  google.com:80  ...  OK
    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>301 Moved</TITLE></HEAD><BODY>
    <H1>301 Moved</H1>
    The document has moved
    <A HREF="http://www.google.com/">here</A>.
    </BODY></HTML>
    

ubuntu 虚拟机

一般来说只用于渗透测试
一周更新快照一次

系统优化

  • 关闭系统更新
  • 删除奇奇怪怪的软件
  • 免密码使用 sudo 命令
    更改为 vim
    sudo update-alternatives –config editor
    sudo visudo
    文件最后为用户 macr0phag3 添加,macr0phag3 改成你的用户名即可。
    macr0phag3 ALL=(ALL) NOPASSWD:ALL
  • 关闭 ubuntu 关机等待

    ubuntu 关机的时候卡住,无法关机,一查看发现是“ a stop job is running。。。” 然后后面接着一串等待时间。
    sudo vim /etc/systemd/system.conf

    DefaultTimeoutStartSec=1s
    DefaultTimeoutStopSec=1s

    取消注释并修改为以上

  • 虚拟机如果不能联网,则在 vm fusion 中设置为 vmnet4。(在偏好设置中配置一下 vmnet4)

  • 替换一套更好看的图标

    sudo apt-add-repository ppa:numix/ppa
    sudo apt-get update
    sudo apt-get install numix-icon-theme-circle

  • 显示网速

    sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
    sudo apt-get install indicator-sysmonitor
    然后运行
    indicator-sysmonitor &
    勾选开机自启动,替换 output 为 {net}

  • 分辨率与 mac 兼容的问题:xrandr --size 1920x1200 > /dev/null。把这个加入开机启动或者 zsh 的 zshrc 里。

zsh

  • 配置 alias
    alias c="echo '\033c'" # 彻底清空终端
    alias ainstall="sudo apt install -y"
    

科学上网

  • 安装 shadowsocks:sudo pip install shadowsocks
  • 安装 ssr:wget https://github.com/erguotou520/electron-ssr/releases/download/v0.2.4/electron-ssr_0.2.4_amd64.deb
  • 若失效,需要用命令行启动一下 sslocal -c <ss 配置文件>。GUI 会掩盖报错,命令行才看得到报错。
  • 实在不行的时候记得去看 ssr 的日志。

Mac

系统优化

  • 关闭 Spotlight 索引:sudo mdutil -a -i off # 注意,关了之后 Alfred 等等无法索引到最新的文件,省电的时候关,不需要省电的时候就开着

APP

免费

  • 1Checker:检查英文文章的拼写、句式、结构
  • 奇妙清单:多人协作的 TODO
  • 石墨文档:多人协作的文档 app
  • 印象笔记:知识收集的最佳 app
  • Amphetamine:防止 mac 休眠
  • cosbrowser:腾讯 cos 管理
  • ControlPlane:根据发生的事件自动执行命令/脚本
  • Firefox
  • Flux:拯救眼睛
  • Google Chrome
  • HexoEditor:hexo 博客写作的最佳 app
  • IINA:观看本地视频的最佳 app
  • iPic:非敏感图片上传的最佳 app
  • iTerm:mac 最强终端
  • JustFocus:番茄工作法,提醒休息
  • KCNScrew:正版 app 的序列号收集器
  • LICEcap:屏幕录像的最佳 app
  • pap.er:换壁纸的解决方案
  • ShadowsocksX-NG-R8:科学上网
  • SpechtLite: Mac 科学上网的最佳免费 App
  • ShowyEdge:提示当前输入法
  • Snipaste:最佳截图 app
  • TeamViewer:最佳远程控制 app
  • The Unarchiver:最佳解压 app
  • Wireshark:流量捕获的地表最强
  • Xnip:滚动截图、步骤标记的最佳 App

一次性付费

  • 叶子登录器:付费来共享付费的 app
  • Alfred 3:买 mac 的 1/3 个原因
  • Bartender 3:隐藏多余的菜单栏图标
  • Charles:抓包的解决方案
  • Contexts:窗口切换的解决方案
  • Dash:编程的手册以及代码扩展板
  • iStat Menus:mac 状态信息
  • Keyboard Pilot:根据不同的 app 切换输入法
  • Magnet:窗口管理的最佳 app
  • Mate Translate:快速翻译的最佳 app
  • MWeb:文档写作的最佳 app
  • Parallels Desktop:win 虚拟机的最佳 app
  • Paste:剪贴板管理
  • PDF Expert:地表最强 pdf app
  • PopClip:文字选中快速操作
  • Sublime Text:主力 IDE
  • VMware Fusion:最佳 Linux 虚拟机 app

订阅式付费

  • 1Password 7:保护密码的最佳 app
  • Office 套装:地表最强文档套装

zsh

  • alias
    alias c="printf '\e]50;ClearScrollback\a'" # iterm2 的彻底清空终端
    alias h="hexo"
    alias hexod="cd $HOME/Tr0y/GitHub/Blog; gulp build; hexo d;" # 更新博客
    alias vimss="vim /Users/macr0phag3/.ShadowsocksX-NG/gfwlist.js" # 修改 ss 的 pac 配置
    alias binstall="brew install" 
    
  • 函数
    # mac 下的命令完成通知
    function notify(){
      start_time=`date +%s`;
      cmd=`echo $@`;
      eval $@;
      end_time=`date +%s`
      timer_time=$((end_time-start_time))
      unit="s"
      if [[ $timer_time -gt 60 ]]; then
          unit="m"
          timer_time=`echo $(($timer_time/60.0))|awk '{printf("%.2f", $1)}'`
      fi
      terminal-notifier -title 'Notifier' -message 'command was finished in '${timer_time}${unit}'
    '${cmd} -sound default -execute "open /Applications/iTerm.app";
    }
    #
    #
    # 终端走代理的妥协方式
    # 由于 mac 限制,配置使用 proxychains 太麻烦了
    function proxy(){
      export http_proxy=http://127.0.0.1:1087/;
      export https_proxy=http://127.0.0.1:1087/;
      $@;
      unset http_proxy
      unset https_proxy
    }
    #
    #
    # 防止手残 :)
    function rm(){
      mv $@ ~/.Trash;
    }
    

服务器配置

渗透测试与脚本托管

系统优化

  • 修改默认的 ssh 端口
  • 只能用公钥登录

zsh

  • 函数

    # 命令完成后通过 pushover 通知
    function notify(){
      start_time=`date +%s`;
      cmd=`echo $@`;
      eval $@;
      end_time=`date +%s`
    
      timer_time=$((end_time-start_time))
      unit="s"
    
      if [[ $timer_time -gt 60 ]]; then
          unit="m"
          timer_time=`echo $(($timer_time/60.0))|awk '{printf("%.2f", $1)}'`
      fi
    
      #  这里的 key 记得替换
      pushover --user-key xxxxxxxxxxxxxxxx --api-token xxxxxxxxxxxxxxxx --title "Tencent's job" 'command was finished in '${timer_time}${unit}'
    '${cmd}
    }
    

科学上网

  • 安装 ss
    pip install shadowsocks
    mkdir /etc/shadowsocks
    vim /etc/shadowsocks/shadowsocks.json
    
  • 配置如下
    {
      "server":"服务器 ip",
      "server_port":服务器端口,
      "local_address": "127.0.0.1",
      "local_port":1080,
      "password":"密码",
      "timeout":300,
      "method":"加密方式",
      "fast_open": false,
      "workers": 1
    }
    
  • 新建启动脚本文件
    vim /etc/systemd/system/shadowsocks.service,内容如下:
    [Unit]
    Description=Shadowsocks
    [Service]
    TimeoutStartSec=0
    ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json
    [Install]
    WantedBy=multi-user.target
    
    注意,如果你是和我一样用了 pyenv 安装的 python,记得把 ExecStart 改为对应的版本。如: /root/.pyenv/versions/2.7.15/bin/sslocal
  • 启动Shadowsocks服务
    systemctl enable shadowsocks.service
    systemctl start shadowsocks.service
    systemctl status shadowsocks.service
    
  • 验证 Shadowsocks 客户端是否正常**
    curl --socks5 127.0.0.1:1080 http://httpbin.org/ip
    如果返回
    {
      "origin": "x.x.x.x"       #你的Shadowsock服务器IP
    }
    
    说明正常。

End

What do you think?

本文标题: 电脑配置环境记录
原始链接: http://www.tr0y.wang/2018/10/04/initenv/
发布时间: 2018.10.04-20:02
最后更新: 2019.01.16-13:46
版权声明: 本站文章均采用CC BY-NC-SA 4.0协议进行许可。转载请注明出处!