我正在尝试在终端中更改我的命令promt.我一直收到错误:
-bash: __git_ps1: command not found
我只是通过在终端中键入它来尝试它:__git_ps1
.我也试过了.bash_profile
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
Run Code Online (Sandbox Code Playgroud)
正如您可能看到/告诉的那样,是的,我确实已经安装了自动完成功能,它确实很有效!
我遇到了这个问题:" PS1 env变量在mac上不起作用 ",它给出了代码
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
所以我把它添加到我的.bash_profile
希望它会改变一些东西.嗯,确实如此.它只是改变了错误输出.
这是.bash_profile
添加的:
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
Run Code Online (Sandbox Code Playgroud)
现在这里是改变的错误输出:
sed: (%s): No such file or directory
注意:我也将源下的别名移动到没有区别.我有 git版本1.7.12.1 …
我是git的新手,我正在尝试将当前的git分支添加到我现有的提示符中,该提示符定义如下:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w $(__git_ps1) >${NORMAL} "
Run Code Online (Sandbox Code Playgroud)
我尝试了(通过.bashrc
再次获取我的文件)它似乎工作,但后来我去了另一个分支,它没有更新.我怎样才能确保$(__git_ps1)
没有缓存?
我正在使用Ubuntu,当我使用一些深层目录层次结构时,我厌倦了bash中的这个长提示.所以,我想通过以下方式调整我的PS1来缩短工作目录部分:
目前我有:
pajton@dragon:~/workspace/projects/project1/folder1/test$
Run Code Online (Sandbox Code Playgroud)
并希望:
pajton@dragon:~/workspace/.../folder1/test$
Run Code Online (Sandbox Code Playgroud)
如果len($ PWD)超过给定阈值,则会发生截断.我想始终保留第一个路径组件和至少一个最后一个路径组件.然后在空间允许的情况下,从右侧添加更多组件.
这就是我目前所拥有的.它有效,但是:1)不保留第一个路径组件,2)不尊重边界处的切割路径:
pwd_length=14
pwd_symbol="..."
newPWD="${PWD/#$HOME/~}"
if [ $(echo -n $newPWD | wc -c | tr -d " ") -gt $pwd_length ]
then
newPWD="...$(echo -n $PWD | sed -e "s/.*\(.\{$pwd_length\}\)/\1/")"
else
newPWD="$(echo -n $PWD)"
fi
Run Code Online (Sandbox Code Playgroud)
结果如下:
pajton@dragon:...sth/folder1/sample$
Run Code Online (Sandbox Code Playgroud)
提前致谢!
您可以在PS1配置中使用\ d来显示长日期,即.5月18日星期二,但我怎么能以18.05.2012这样的格式显示呢?
考虑这个PS1
PS1='\n${_:+$? }$ '
Run Code Online (Sandbox Code Playgroud)
这是一些命令的结果
$ [ 2 = 2 ]
0 $ [ 2 = 3 ]
1 $
1 $
Run Code Online (Sandbox Code Playgroud)
第一行显示没有预期的状态,接下来的两行显示正确的退出代码.但是在第3行只有Enter被按下,所以我希望状态消失,就像第1行一样.我怎么能这样做?
我有一个shell脚本,在几个目录(fgit)中运行相同的命令.对于每个目录,我希望它显示当前提示+将在那里运行的命令.如何获得与解码(扩展)对应的字符串PS1
?例如,我的默认PS1是
${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
Run Code Online (Sandbox Code Playgroud)
我想回应最终的提示username@hostname:/path$
,最好(但不一定)用漂亮的颜色.粗略地看一下Bash手册没有透露任何明确的答案,echo -e $PS1
只评估颜色.
我试图设置,PS1
以便它在登录后立即打印出来,但之后会换行.
假设export PS1="\h:\W \u\$ "
,第一次(即登录后)你得到:
hostname:~ username$
Run Code Online (Sandbox Code Playgroud)
我一直在尝试像我这样的东西~/.bashrc
:
function __ps1_newline_login {
if [[ -n "${PS1_NEWLINE_LOGIN-}" ]]; then
PS1_NEWLINE_LOGIN=true
else
printf '\n'
fi
}
export PS1="\$(__ps1_newline_login)\h:\W \u\$ “
Run Code Online (Sandbox Code Playgroud)
期待得到:
# <empty line>
hostname:~ username$
Run Code Online (Sandbox Code Playgroud)
从一开始就有一个完整的例子:
hostname:~ username$ ls `# notice: no empty line desired above!`
Desktop Documents
hostname:~ username$
Run Code Online (Sandbox Code Playgroud) 此命令成功
$ PS1='$(date +%s) $ ' 1391380852 $
但是,如果我添加换行符,则会失败
$ PS1='$(date +%s)\n$ ' bash: command substitution: line 1: syntax error near unexpected token `)' bash: command substitution: line 1: `date +%s)'
如果我使用反引号就行了
$ PS1='`date +%s`\n$ ' 1391381008 $
但是反叛是沮丧的.那是什么导致了这个错误?
GNU bash, version 4.2.45(6)-release
我已经尝试过调用现有的库,powerline
但对我老化的笔记本电脑来说似乎很重要.我已设法获得背景颜色,但不知道获得形状.目前我所拥有的是:
.
有这些形状的直接方式吗?
我在用:
$ echo $TERM
xterm-256color
$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
Run Code Online (Sandbox Code Playgroud) 我有这个代码为我的终端着色:
export PS1="\e[1;30m\][\e[\e[1;30m\]\e[1;33m\] \u@\H \[\e[1;32m\]\w\[\e[0m\] \e[1;30m\]]\n[\[ \e[1;31m\]\T\[\e[0m\]\e[1;30m\] ] > \e[37m\]"
Run Code Online (Sandbox Code Playgroud)
但是我有一个问题,当文本应该在新行中时它会覆盖第一行.