我在一些屏幕截图(不记得网络上的哪个位置)中看到终端可以[username@machine /]$用粗体显示。我也很期待得到这个,因为我总是发现自己在长输出中滚动,很难找到我命令后的第一行。
如何使用户名等为粗体或彩色?
在我的.bashrc. 它看起来像这样:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
Run Code Online (Sandbox Code Playgroud)
其中virtual_env和git_branch是在标准输出上输出内容的 bash 函数。
现在,为了更易于阅读和修改,我想将颜色代码存储在变量中并引用它们,而不是将它们直接嵌入到PS1. 所以我有一堆这样的变量:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Run Code Online (Sandbox Code Playgroud)
我希望能够写出类似的东西:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Run Code Online (Sandbox Code Playgroud)
但这不起作用——颜色代码显示在提示中,就像它们被转义一样。如果我使用双引号代替 for PS1,颜色可以正常工作,但只有在我这样做时提示才会改变source ~/.bashrc。
我尝试了其他我见过的人做的事情——使用printf,使用单引号作为颜色,将\[和\]放入PS1而不是颜色变量,但似乎没有任何效果。
如何为颜色代码使用变量?
Bash有PROMPT_DIRTRIM选项,例如当我设置时PROMPT_DIRTRIM=3,然后是一条长路径,如:
user@computer: /this/is/some/silly/path
Run Code Online (Sandbox Code Playgroud)
将显示为:
user@computer: .../some/silly/path
Run Code Online (Sandbox Code Playgroud)
是否存在类似的选项zsh?
我编写的一个 shell 脚本的可用性测试发现,人们对如何回答一个期望答案为“是”的问题有不同的期望。请参阅以下代码示例中的变体。
当然,我想出的方法一定有更好的方法吗?您对此有何可读性和更短的形式?
read -p 'Answer this question with yes: ' answer
if [ "$answer" = 'Y'
-o "$answer" = 'YES'
-o "$answer" = 'Yes'
-o "$answer" = 'y'
-o "$answer" = 'yes'
-o some-alternate-condition ]; then
echo 'Surely this can be written better?'
fi
Run Code Online (Sandbox Code Playgroud) 我得到的:
host:~ user$ cat example.txt
some texthost:~ stas$
Run Code Online (Sandbox Code Playgroud)
我想得到什么:
host:~ user$ cat example.txt
some text
host:~ stas$
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的cat行为像这样?
我在 Mac OS X 上使用 bash。
我越来越熟悉通过提示 ( .bashrc)调整 shell 中的内容,但我现在正在尝试更改我第一次登录时显示的初始内容。在我的 EC2 实例上,这就是我看到的我登录:
__| __|_ ) Fedora 8
_| ( / 32-bit
___|\___|___|
Welcome to:
Wowza Media Server 2 for Amazon EC2
Version: 2.0.0.08
Run Code Online (Sandbox Code Playgroud)
在我的家用 Mint 计算机上,这是我登录时看到的内容:
Welcome to Linux Mint 11 Katya (GNU/Linux 2.6.38-8-generic x86_64)
Welcome to Linux Mint
* Documentation: http://www.linuxmint.com
Last login: Tue Jun 21 17:44:05 2011
Run Code Online (Sandbox Code Playgroud)
这是在哪里定义的?我怎样才能为一些疯狂的 ASCII 艺术ACTION调整它?
我想将 bash 配置为clear每次在终端中键入命令时(在执行我的命令之前)执行命令。我怎样才能做到这一点?
我正在使用 Debian Linux。
我知道有些人有一些启动脚本,有些人个性化了提示。一位开发人员为他经常访问的长路径和他运行的频繁命令使用短别名。
您对 UNIX 配置文件进行了哪些有效的自定义以提高生产力和易用性?
我的 Bash Prompt 当前正在使用以下顺序设置 xterm 标题栏:
PS1='\033]0;\u@\h>\w\007'
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以在标题栏中显示当前命令。例如,如果我使用 拖尾文件tail -f foo.log,我希望我的标题栏显示tail -f foo.log.
我最近决定更改我的 PS1 变量以适应一些漂亮的 Solarized 颜色,以获得我的终端观看乐趣。当不在 tmux 会话中时,一切都很棒!彩虹、小马、独角兽和可区分的提示!凉爽的!
然而,问题出在 tmux 中。我已经验证了 PS1 的值是我期望的值,并且与 tmux 未运行时的值相同,即\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\].
我的 .bash_profile 中的所有别名等也按预期运行。tmux 也无意外地显示颜色,echo -ne "\033[1;33m hi"正如预期的那样gls --color。
我的 .bash_profile 中当前的相关行是export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]",尽管最初我正在采购位于 .bash_prompt 文件中的脚本来处理一些条件等。我尝试恢复到更简单的版本。
执行bash将导致提示着色,但必须在每个窗格中完成。export PS1=[that long string I've already posted]将不会。
我的 .tmux.conf 如下:
set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window …Run Code Online (Sandbox Code Playgroud)