Skip to content

wenerme/dotfiles

Repository files navigation

dotfiles

Relax dotfiles for Linux, Cygwin & Mac OSX

可检测的配置/Features

  • Homebrew
  • Linuxbrew
  • Java
  • Go
  • npm
  • nvm
  • bash_completion

要求/Requirement

  • bash 4+

安装/Install

cd ~
git init
git remote add origin https://github.com/wenerme/dotfiles
git fetch --depth=1
# Warning: this will replace exists files.
git checkout -t origin/master -f

# Replace my name and email to yours
vim ~/.gitconfig

加载顺序/Load order

.bashrc -> .bash_profile -> utils.sh -> log4bash.sh ->
func,exports,prompt,alias,extra,after -> rc_my_*

扩展和自定义/Customize

可在 .bashrc.d 下添加自己的扩展配置,文件名格式为 rc_my_*.会在 after 后加载

目录说明

.font
	包含了一些我喜欢的字体文件
.bashrc.d
	所有 bashrc 的文件都在这里
.completion.d
	包含了一部分补全脚本

配置文件说明

/bin/bash
	The bash executable
/etc/profile
	The systemwide initialization file, executed for login shells
/etc/bash.bash_logout
	The systemwide login shell cleanup file, executed when a login shell exits
~/.bash_profile
	The personal initialization file, executed for login shells
~/.bashrc
	The individual per-interactive-shell startup file
~/.bash_logout
	The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
	Individual readline initialization file

From man bash.

Misc

  • 因为针对的是 bash 4+,所以使用bash-completion时要求使用bash-completion2 brew 默认是 bash-completion,因为 OS 默认的 Bash 是3+的

Reference

Document

This document is generated by BASH_DOC_CAT=1 lrc

# This will show you how to update bellow docs
# You can see a document example here
# https://github.com/wenerme/dotfiles/blob/master/.bashrc.d/utils.sh#L104

BASH_DOC_GEN=en lrc > /tmp/BASH_DOC_CAT
sed -e '/^<!--\s*BEGIN-BASH-DOC/,/END-BASH-DOC/c\<!-- BEGIN-BASH-DOC -->\nHERE-BASH-DOC\n<!-- END-BASH-DOC -->' README.md -i
sed -e '/^HERE-BASH-DOC/{
	s/^HERE-BASH-DOC//g
	r /tmp/BASH_DOC_CAT
}' README.md -i

utils.sh

Utils used for whole configs.

Docs

# Generate doc for en
BASH_DOC_GEN=en lrc > doc_en.md
# You can write doc in scripts like this, if no locale, this doc will used for all locale
bashdoc en <<'DOC-HERE'
# Header
Content
DOC-HERE

Commands

Command Arguments Description e.g.
bashdoc Used to accept docs bashdoc <<<'#Title Here'
osis -n OS check osis cygwin, osis -n linux
termis -n $TERM typ check termis xterm
iscmd -n Command chech iscmd git,iscmd -n brew
iscontains -n Check element in array
isbrewed Check formula is installed isbrewed go
try_prepend_path Ensure prepend givend path to $PATH try_prepend_path ~/bin
try_prepend_manpath Ensure prepend givend path to $MANPATH try_prepend_path ~/man
try_source 尝试 source 文件 try_source ~/my-bash
  • -n for negative

Examples

iscmd cls || alias cls="echo -en '\ec'"
iscmd -n clear &&  alias clear="cls"

osis Cygwin && {
	# Cygwin stuff
}
osis Linux && {
	# Linux stuff
}
osis Darwin && {
	# Mac OS X stuff
}

	bashdoc <<'DOC-HERE'
	# Markdown title

	What dose `this` mean.
	DOC-HERE

# Generate docs
BASH_DOC_CAT=1 lrc

log4bash.sh

log for shell.

Based on fredpalmer/log4bash.

log4bash - Makes logging in Bash scripting suck less
Copyright (c) Fred Palmer
Licensed under the MIT license
http://github.com/fredpalmer/log4bash

Changelog

  • Add log level
  • use tput colors to test the term

Commands

Command Arguments Description
log message level color Basic log command
log_speak msg speak out
log_debug msg DEBUG level
log_info msg INFO level
log_warn msg WARN level
log_error msg ERROR level
log_success msg SUCCESS level
log_captains msg
log_campfire msg
log_level [level] set/get log level

Log level

Use level like this

log_level WARN # Only show WARN ERROR
log_level DEBUG # Only show DEBUG
log_level NONE # no log
log_level # display log level

rc_func

  • o [dir]
    • Open director
    • Support cmd,cygwin,Centos(nautilus),Mint(nemo),OS X
  • mkd
    • mkdir && cd
  • colorname
    • Echo manual for color and name
  • 256colors
    • for 256 color
  • 16colors
    • for 16 color
  • server [port:-8000]
    • stary a simple http server
    • will try python, npm server, php

rc_after

  • Detech Homebrew
    • Add bin
    • Add coreutils without g prefix
    • Add bash_completion
    • Setup relate PATH or HOME
    • Init command-not-found-init
  • nvm
    • nvm use node
  • npm
    • Add bin
    • Setup npm-exec
  • direnv
    • eval "$(direnv hook bash)"
  • sshrc
    • After sshrc
    • Add sym link for ~/.inputrc,~/.gitconfig

rc_alias

  • cd

    • ..,...,....,.....,~,-
    • cd-,cd..,cd...
  • ls

    • -h by default
    • l,la,ll,lsd,lst
  • cls <-> clear

  • ifconfig <-> ipconfig

  • pushcd

    • push current director
  • lrc

    • reload bashrc
  • ports

    • show used ports
  • utf82gbk,gbk2utf8

  • please

    • use sudo to run last command
  • tolower,toupper

  • random-string

  • Darwin

    • saynow

rc_my_osx

定义我在 osx 下使用的一些配置

  • 将 macvim (mvim) 映射为 gvim
  • lockscreen 锁屏
  • screensaver 屏保