现在的位置: 首页 > 综合 > 正文

Linux扎记(一)

2014年06月26日 ⁄ 综合 ⁄ 共 9248字 ⁄ 字号 评论关闭

接触Linux有一段时间了,来记录一下在接触Linux过程中遇到的问题以及解决方法吧。

不过其实这里也有私心的,那就是万一哪天自己又要重装系统的话,看一下这篇文章估计很快就能够把开发环境搭建起来了。

首先说一下我自己的系统的一些必备软件吧。

Chrome自然是必不可少,其次Guake是我的最爱。当然,仅仅有Guake我还不满足,我比较贪心,我还装了ZSH,毕竟坑爹的Shell看起来还不是很舒服的。其次,关于代码编辑器方面,我还是比较随便的,一般都是Sublime Text,不过最近Emmet(Zen Coding)更新了,没有以前好用了,这使我对Sublime Text少了份好感。虽然至今还是挺喜欢它的。

好吧,说说我重装完系统第一步要做的事情。第一,我还是去DOWN了一份smarthosts表,毕竟只爱谷歌不爱度娘。其次就是安装CHROME了,这里的过程我不多说了。再来肯定就得轮到更新源了,虽然ubuntu针对大陆地区的更新源做了优化,但是坑爹的校园网跑起来还是很慢的。所以果断改了国内的更新源,这里我推荐网易的更新源:

deb http://mirrors.163.com/ubuntu/ raring main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ raring main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ raring-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ raring-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ raring-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ raring-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-updates universe main multiverse restricted

具体操作不用我说啦,直接改/etc/apt/source.list就OK了

更新完源的列表,我还是顽固地去解决显卡问题了。毕竟显卡问题不解决,我的联想发热还是挺严重的。这里分享一个软件,因为目前大多数笔记本都已经是双显卡配置了,而很多时候在Linux下很少需要用到独立显卡,所以给大家一个双显卡管理的软件,叫:bumblebee,老实说,自己功底不好,自己独立手动的安装显卡驱动,试了好多次,重装了好多次系统了,还是没用,最后归结于机子是64位的(因为网上貌似64位显卡装成功的牛人很少)。所以最好的方式是用bumblebee来管理两个显卡,说到底就是把独立显卡禁用了。至此,显卡的发热问题终于解决。至于那些玩游戏的孩子我还是建议你装个WIN8什么的自己玩爽了去吧。下面附上bumblebee的安装过程:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

sudo reboot

lspci |grep
VGA

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated
Graphics Controller (rev 09)

01:00.0 VGA compatible controller: NVIDIA Corporation Device 0de9 (rev ff)

  • 当然,这里只是简略地带过,看不懂建议大家还是去谷歌一下吧。。。

    接下来我要安装一个美化插件:Cairo Dock,安装方法:sudo apt-get install cairo-dock,然后后面就不用我说了

    接下来说说ZSH的安装与配置:

    我的安装方法挺简单:sudo apt-get install zsh

    然后:chsh -s /bin/zsh

    再就是:sudo reboot

    完了之后,打开控制台就会有提示转换成ZSH了。其次我这里有一份别的网友分享的一个不错的配置文件:

    #color{{{
    autoload colors 
    colors
     
    for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
    eval _$color='%{$terminfo[bold]$fg[${(L)color}]%}'
    eval $color='%{$fg[${(L)color}]%}'
    (( count = $count + 1 ))
    done
    FINISH="%{$terminfo[sgr0]%}"
    #}}}
     
    #命令提示符 
    RPROMPT=$(echo "$RED%D %T$FINISH")
    PROMPT=$(echo "$CYAN%n@$YELLOW%M:$GREEN%/$_YELLOW>$FINISH ")
     
    #PROMPT=$(echo "$BLUE%M$GREEN%/
    #$CYAN%n@$BLUE%M:$GREEN%/$_YELLOW>>>$FINISH ")
    #标题栏、任务栏样式{{{
    case $TERM in (*xterm*|*rxvt*|(dt|k|E)term)
    precmd () { print -Pn "\e]0;%n@%M//%/\a" }
    preexec () { print -Pn "\e]0;%n@%M//%/\ $1\a" }
    ;;
    esac
    #}}}
     
    #编辑器
    export EDITOR=vim
    #输入法
    export XMODIFIERS="@im=ibus"
    export QT_MODULE=ibus
    export GTK_MODULE=ibus
    #关于历史纪录的配置 {{{
    #历史纪录条目数量
    export HISTSIZE=10000
    #注销后保存的历史纪录条目数量
    export SAVEHIST=10000
    #历史纪录文件
    export HISTFILE=~/.zhistory
    #以附加的方式写入历史纪录
    setopt INC_APPEND_HISTORY
    #如果连续输入的命令相同,历史纪录中只保留一个
    setopt HIST_IGNORE_DUPS      
    #为历史纪录中的命令添加时间戳      
    setopt EXTENDED_HISTORY      
     
    #启用 cd 命令的历史纪录,cd -[TAB]进入历史路径
    setopt AUTO_PUSHD
    #相同的历史路径只保留一个
    setopt PUSHD_IGNORE_DUPS
     
    #在命令前添加空格,不将此命令添加到纪录文件中
    #setopt HIST_IGNORE_SPACE      
    #}}}
     
    #每个目录使用独立的历史纪录{{{
    cd() {
    builtin cd "$@"                             # do actual cd
    fc -W                                       # write current history  file
    local HISTDIR="$HOME/.zsh_history$PWD"      # use nested folders for history
    if  [ ! -d "$HISTDIR" ] ; then          # create folder if needed
    mkdir -p "$HISTDIR"
    fi
    export HISTFILE="$HISTDIR/zhistory"     # set new history file
    touch $HISTFILE
    local ohistsize=$HISTSIZE
    HISTSIZE=0                              # Discard previous dir's history
    HISTSIZE=$ohistsize                     # Prepare for new dir's history
    fc -R                                       #read from current histfile
    }
    mkdir -p $HOME/.zsh_history$PWD
    export HISTFILE="$HOME/.zsh_history$PWD/zhistory"
     
    function allhistory { cat $(find $HOME/.zsh_history -name zhistory) }
    function convhistory {
    sort $1 | uniq |
    sed 's/^:\([ 0-9]*\):[0-9]*;\(.*\)/\1::::::\2/' |
    awk -F"::::::" '{ $1=strftime("%Y-%m-%d %T",$1) "|"; print }' 
    }
    #使用 histall 命令查看全部历史纪录
    function histall { convhistory =(allhistory) |
    sed '/^.\{20\} *cd/i\\' }
    #使用 hist 查看当前目录历史纪录
    function hist { convhistory $HISTFILE }
     
    #全部历史纪录 top50
    function top50 { allhistory | awk -F':[ 0-9]*:[0-9]*;' '{ $1="" ; print }' | sed 's/ /\n/g' | sed '/^$/d' | sort | uniq -c | sort -nr | head -n 50 }
     
    #}}}
     
    #杂项 {{{
    #允许在交互模式中使用注释  例如:
    #cmd #这是注释
    setopt INTERACTIVE_COMMENTS      
     
    #启用自动 cd,输入目录名回车进入目录
    #稍微有点混乱,不如 cd 补全实用
    setopt AUTO_CD
     
    #扩展路径
    #/v/c/p/p => /var/cache/pacman/pkg
    setopt complete_in_word
     
    #禁用 core dumps
    limit coredumpsize 0
     
    #Emacs风格 键绑定
    bindkey -e
    #bindkey -v
    #设置 [DEL]键 为向后删除
    #bindkey "\e[3~" delete-char
     
    #以下字符视为单词的一部分
    WORDCHARS='*?_-[]~=&;!#$%^(){}<>'
    #}}}
     
    #自动补全功能 {{{
    setopt AUTO_LIST
    setopt AUTO_MENU
    #开启此选项,补全时会直接选中菜单项
    #setopt MENU_COMPLETE
     
    autoload -U compinit
    compinit
     
    #自动补全缓存
    #zstyle ':completion::complete:*' use-cache on
    #zstyle ':completion::complete:*' cache-path .zcache
    #zstyle ':completion:*:cd:*' ignore-parents parent pwd
     
    #自动补全选项
    zstyle ':completion:*' verbose yes
    zstyle ':completion:*' menu select
    zstyle ':completion:*:*:default' force-list always
    zstyle ':completion:*' select-prompt '%SSelect:  lines: %L  matches: %M  [%p]'
     
    zstyle ':completion:*:match:*' original only
    zstyle ':completion::prefix-1:*' completer _complete
    zstyle ':completion:predict:*' completer _complete
    zstyle ':completion:incremental:*' completer _complete _correct
    zstyle ':completion:*' completer _complete _prefix _correct _prefix _match _approximate
     
    #路径补全
    zstyle ':completion:*' expand 'yes'
    zstyle ':completion:*' squeeze-shlashes 'yes'
    zstyle ':completion::complete:*' '\\'
     
    #彩色补全菜单 
    eval $(dircolors -b) 
    export ZLSCOLORS="${LS_COLORS}"
    zmodload zsh/complist
    zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
    zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
     
    #修正大小写
    zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'
    #错误校正      
    zstyle ':completion:*' completer _complete _match _approximate
    zstyle ':completion:*:match:*' original only
    zstyle ':completion:*:approximate:*' max-errors 1 numeric
     
    #kill 命令补全      
    compdef pkill=kill
    compdef pkill=killall
    zstyle ':completion:*:*:kill:*' menu yes select
    zstyle ':completion:*:*:*:*:processes' force-list always
    zstyle ':completion:*:processes' command 'ps -au$USER'
     
    #补全类型提示分组 
    zstyle ':completion:*:matches' group 'yes'
    zstyle ':completion:*' group-name ''
    zstyle ':completion:*:options' description 'yes'
    zstyle ':completion:*:options' auto-description '%d'
    zstyle ':completion:*:descriptions' format $'\e[01;33m -- %d --\e[0m'
    zstyle ':completion:*:messages' format $'\e[01;35m -- %d --\e[0m'
    zstyle ':completion:*:warnings' format $'\e[01;31m -- No Matches Found --\e[0m'
    zstyle ':completion:*:corrections' format $'\e[01;32m -- %d (errors: %e) --\e[0m'
     
    # cd ~ 补全顺序
    zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
    #}}}
     
    ##行编辑高亮模式 {{{
    # Ctrl+@ 设置标记,标记和光标点之间为 region
    zle_highlight=(region:bg=magenta #选中区域 
    special:bold      #特殊字符
    isearch:underline)#搜索时使用的关键字
    #}}}
     
    ##空行(光标在行首)补全 "cd " {{{
    user-complete(){
    case $BUFFER in
    "" )                       # 空行填入 "cd "
    BUFFER="cd "
    zle end-of-line
    zle expand-or-complete
    ;;
    "cd --" )                  # "cd --" 替换为 "cd +"
    BUFFER="cd +"
    zle end-of-line
    zle expand-or-complete
    ;;
    "cd +-" )                  # "cd +-" 替换为 "cd -"
    BUFFER="cd -"
    zle end-of-line
    zle expand-or-complete
    ;;
    * )
    zle expand-or-complete
    ;;
    esac
    }
    zle -N user-complete
    bindkey "\t" user-complete
    #}}}
     
    ##在命令前插入 sudo {{{
    #定义功能 
    sudo-command-line() {
    [[ -z $BUFFER ]] && zle up-history
    [[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
    zle end-of-line                 #光标移动到行末
    }
    zle -N sudo-command-line
    #定义快捷键为: [Esc] [Esc]
    bindkey "\e\e" sudo-command-line
    #}}}
     
    #命令别名 {{{
    alias cp='cp -i'
    alias mv='mv -i'
    alias rm='rm -i'
    alias ls='ls -F --color=auto'
    alias ll='ls -al'
    alias grep='grep --color=auto'
    alias la='ls -a'
    alias pacman='sudo pacman-color'
    alias p='sudo pacman-color'
    alias y='yaourt'
    alias h='htop'
    alias vim='sudo vim'
     
    #[Esc][h] man 当前命令时,显示简短说明 
    alias run-help >&/dev/null && unalias run-help
    autoload run-help
     
    #历史命令 top10
    alias top10='print -l  ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
    #}}}
     
    #路径别名 {{{
    #进入相应的路径时只要 cd ~xxx
    hash -d A="/media/ayu/dearest"
    hash -d H="/media/data/backup/ayu"
    hash -d E="/etc/"
    hash -d D="/home/ayumi/Documents"
    #}}}
     
     
    ##for Emacs {{{
    #在 Emacs终端 中使用 Zsh 的一些设置 不推荐在 Emacs 中使用它
    #if [[ "$TERM" == "dumb" ]]; then
    #setopt No_zle
    #PROMPT='%n@%M %/
    #>>'
    #alias ls='ls -F'
    #fi     
    #}}}
     
    #{{{自定义补全
    #补全 ping
    zstyle ':completion:*:ping:*' hosts 192.168.1.{1,50,51,100,101} www.google.com
     
    #补全 ssh scp sftp 等
    #zstyle -e ':completion::*:*:*:hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })'
    #}}}
     
     
    #{{{ F1 计算器
    arith-eval-echo() {
    LBUFFER="${LBUFFER}echo \$(( "
    RBUFFER=" ))$RBUFFER"
    }
    zle -N arith-eval-echo
    bindkey "^[[11~" arith-eval-echo
    #}}}
     
    ####{{{
    function timeconv { date -d @$1 +"%Y-%m-%d %T" }
     
    # }}}
     
    zmodload zsh/mathfunc
    autoload -U zsh-mime-setup
    zsh-mime-setup
    setopt EXTENDED_GLOB
    #autoload -U promptinit
    #promptinit
    #prompt redhat
     
    setopt correctall
    autoload compinstall
     
    #漂亮又实用的命令高亮界面
    setopt extended_glob
     TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'do' 'time' 'strace')
      
     recolor-cmd() {
         region_highlight=()
         colorize=true
         start_pos=0
         for arg in ${(z)BUFFER}; do
             ((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]## #}}))
             ((end_pos=$start_pos+${#arg}))
             if $colorize; then
                 colorize=false
                 res=$(LC_ALL=C builtin type $arg 2>/dev/null)
                 case $res in
                     *'reserved word'*)   style="fg=magenta,bold";;
                     *'alias for'*)       style="fg=cyan,bold";;
                     *'shell builtin'*)   style="fg=yellow,bold";;
                     *'shell function'*)  style='fg=green,bold';;
                     *"$arg is"*)         
                         [[ $arg = 'sudo' ]] && style="fg=red,bold" || style="fg=blue,bold";;
                     *)                   style='none,bold';;
                 esac
                 region_highlight+=("$start_pos $end_pos $style")
             fi
             [[ ${${TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]}:+yes} = 'yes' ]] && colorize=true
             start_pos=$end_pos
         done
     }
    check-cmd-self-insert() { zle .self-insert && recolor-cmd }
     check-cmd-backward-delete-char() { zle .backward-delete-char && recolor-cmd }
      
     zle -N self-insert check-cmd-self-insert
     zle -N backward-delete-char check-cmd-backward-delete-char

    好吧,貌似这篇文章太长,还是换下一篇吧。。。

  • 抱歉!评论已关闭.