加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

.bashrc break,在shell中输入的第二行吃掉了第一行

发布时间:2020-12-15 18:29:51 所属栏目:安全 来源:网络整理
导读:我在peepcode的截屏视频中使用了一个.bashrc. # If not running interactively,don't do anything[ -z "$PS1" ] return# check the window size after each command and,if necessary,# update the values of LINES and COLUMNS.shopt -s checkwinsize# set
我在peepcode的截屏视频中使用了一个.bashrc.
# If not running interactively,don't do anything
[ -z "$PS1" ] && return

# check the window size after each command and,if necessary,# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color,overwrite the one in /etc/profile)
PS1='${debian_chroot:+($debian_chroot)}u@h:w$'

# Commented out,don't overwrite xterm -T "title" -n "icontitle" by default.
# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#    PROMPT_COMMAND='echo -ne "33]0;${USER}@${HOSTNAME}: ${PWD}07"'
#    ;;
#*)
#    ;;
#esac

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

# sudo hint
if [ ! -e "$HOME/.sudo_as_admin_successful" ]; then
    case " $(groups) " in * admin *)
    if [ -x /usr/bin/sudo ]; then
    cat <<-EOF
    To run a command as administrator (user "root"),use "sudo <command>".
    See "man sudo_root" for details.

    EOF
    fi
    esac
fi

# if the command-not-found package is installed,use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
    function command_not_found_handle {
            # check because c-n-f could've been removed in the meantime
                if [ -x /usr/lib/command-not-found ]; then
           /usr/bin/python /usr/lib/command-not-found -- $1
                   return $?
                elif [ -x /usr/share/command-not-found ]; then
           /usr/bin/python /usr/share/command-not-found -- $1
                   return $?
        else
           return 127
        fi
    }
fi

. ~/bin/bash_colors.sh

#load bash aliases
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

# Unbreak broken,non-colored terminal
export TERM='xterm-color'
alias ls='ls -G'
alias ll='ls -lG'
export LSCOLORS="ExGxBxDxCxEgEdxbxgxcxd"
export GREP_OPTIONS="--color"

# Erase duplicates in history
export HISTCONTROL=erasedups
# Store 10k history entries
export HISTSIZE=10000
# Append to the history file when exiting instead of overwriting it
shopt -s histappend

function minutes_since_last_commit {
    now=`date +%s`
    last_commit=`git log --pretty=format:'%at' -1`
    seconds_since_last_commit=$((now-last_commit))
    minutes_since_last_commit=$((seconds_since_last_commit/60))
    echo $minutes_since_last_commit
}
grb_git_prompt() {
    local g="$(__gitdir)"
    if [ -n "$g" ]; then
        local MINUTES_SINCE_LAST_COMMIT=`minutes_since_last_commit`
        if [ "$MINUTES_SINCE_LAST_COMMIT" -gt 30 ]; then
            local COLOR=${RED}
        elif [ "$MINUTES_SINCE_LAST_COMMIT" -gt 10 ]; then
            local COLOR=${YELLOW}
        else
            local COLOR=${GREEN}
        fi
        local SINCE_LAST_COMMIT="${COLOR}$(minutes_since_last_commit)m${NORMAL}"
        # The __git_ps1 function inserts the current git branch where %s is
        local GIT_PROMPT=`__git_ps1 "(%s|${SINCE_LAST_COMMIT})"`
        echo ${GIT_PROMPT}
    fi
}

export PS1='$(grb_git_prompt)$'

gd() { git diff $* | view -; }
gdc() { gd --cached $*; }

source ~/bin/git-completion.bash

我可以确认错误是在grb_git_promit中.会发生什么是在shell中键入的第二行是覆盖第一行.任何人都可以帮我这个吗?

编辑:

grb_git_prompt() {
    local g="$(__gitdir)"
    if [ -n "$g" ]; then
        local MINUTES_SINCE_LAST_COMMIT=`minutes_since_last_commit`
        if [ "$MINUTES_SINCE_LAST_COMMIT" -gt 30 ]; then
            local COLOR="[33[0;31m]"
        elif [ "$MINUTES_SINCE_LAST_COMMIT" -gt 10 ]; then
            local COLOR="[33[0;37m]"
        else
            local COLOR="[33[0;32m]"
        fi
        local SINCE_LAST_COMMIT="${COLOR}$(minutes_since_last_commit)m$"
        # The __git_ps1 function inserts the current git branch where %s is
    echo "$(__git_ps1 '(%s|')${SINCE_LAST_COMMIT}"
    fi
}
如果提示中有颜色和其他非打印转义序列,则必须使用转义单括号将它们包围起来.这是一个简单的例子:
PS1='[33[38;5;1m]some red text[33[0m]$'

这将导致提示以红色显示“一些红色文本”,并以默认颜色显示美元符号(或“#”).

这是另一种做同样事情的方法:

red='33[38;5;1m'
none='33[0m'
PS1='[$red]some red text[$none]$'

顺便说一句,这样做更便携,并且变量的构建更简单:

red=$(tput setaf 1)
none=$(tput sgr0)

有关设置的更多信息,请参见man 5 terminfo.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读