Linux Shell简介

2019-09-23 09:45:46王冬梅


按照传统,最后一个字符可以标识您是普通用户($),还是'root'(#)。

您可以通过 $PS1 变量来设置提示符。命令


echo $PS1

将显示当前的设定。其中可用字符的含义在 man bash 的'PROMPTING'部分有说明。

如何才能完成理想的设置呢?对于健忘的初学者来讲,默认设定有些不友好,因为提示符只显示当前目录的最后一部分。如果您看到象这样的提示符


tom@localhost bin $

您的当前目录可能是'/bin'、'/usr/bin'、'/usr/local/bin'及'/usr/X11R6/bin'。当然,您可以用

pwd (输出当前目录,print working directory)

能不能叫 shell 自动告诉您当前目录呢?

当然可以。这里我将提到的设定,包括提示符,大都包含在文件'/etc/bashrc'中。您可以通过编辑各自 home 目录下的'.bash_profile'和'.bashrc'来改变设置。

在 man bash 中的'PROMPTING'部分,对这些参数(parameter)有详细说明。您可以加入一些小玩意,如不同格式的当前时间,命令的历史记录号,甚至不同的颜色。

在'~/.bashrc'中,我喜欢的设定是:


PS1="[33[1m][w][33[0m] "

'root'在'~/.bashrc'中的设定 是:

PS1="[33[0;31m][w][33[0m] "

这样我得到的提示符就是:


[/usr/bin]

当用'root'时,变成:


[/usr/bin]

我已经除掉了主机名和用户名,因为我用不着这些。但我首先想一眼就能看出我的身份是普通用户还是'root'。注意到,普通用户的提示符可以是黑底白字,或白底黑字。

要在终端上获得恰当的颜色调配, 您可以编辑下面这个脚本color ,赋予执行权限(chmod +x color),然后再运行。


#!/bin/bash
#
# This file echoes a bunch of color codes to the
# terminal to demonstrate what's available. Each
# line is the color code of one forground color,
# out of 17 (default + 16 escapes), followed by a
# test use of that color on all nine background
# colors (default + 8 escapes).
#
T='gYw' # The test text
echo -e "n 40m 41m 42m 43m
44m 45m 46m 47m";
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m'
'1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m'
' 36m' '1;36m' ' 37m' '1;37m';
do FG=${FGs// /}
echo -en " $FGs 33[$FG $T "
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
do echo -en "$EINS 33[$FG33[$BG $T 33[0m";
done
echo;
done
echo

一种更适当的设定:


PS1="u: w$ "

这样,提示符就变成:

user_name: /usr/bin$

您可以通过命令 export 来测试不同的设置(比如,export PS1="u: w$ ")。如果找到了适合的提示符,就将设置放到您的'.bashrc''中。这样,每次打开控制台或终端窗口时,都会生效。

您甚至可以给提示符设定主题(theme),也就是搭配不同的颜色,使其看起来象很棒的 ol