热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

定制个性化的bash

文章标题:定制个性化的bash。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  终于在 Sun Fire V890 上面装好 Solaris 10 u8 了,初次接触小型机,什么都觉得新鲜。

  由于长期使用Linux,对bash(bourne again shell)非常喜欢,但是是Solaris默认的是sh(bourne shell),登录后输入bash就可以很简单地切换到 bourne again shell ,但是如此机械的动作为什么不让机器去做呢?

  修改默认 shell 有很多种方法,一种是修改 /etc/passwd 文件:

  1 -bash-3.00# cat /etc/passwd

  2 root:x:0:0:Super-User:/:/bin/sh

  3 ...

  4 ...

  5 user:x:100:1::/home/user:/bin/sh

  用VI修改一下就可以了。

  另一种方法是使用 usermod 命令:

  1 -bash-3.00# usermod -s /bin/bash root

  2 UX: usermod: root is currently logged in, some changes may not take effect until next login.

  3 -bash-3.00# usermod -s /bin/bash user

  4 UX: usermod: user is currently logged in, some changes may not take effect until next login.

  5 -bash-3.00# cat /etc/passwd

  6 root:x:0:0:Super-User:/:/bin/bash

  7 ...

  8 ...

  9 user:x:100:1::/home/user:/bin/bash

  下次登陆就可以发现默认使用的就是 bash 了。

  默认情况下 bash 的 shell 提示符是:

  1 bash-3.00$

  2 bash-3.00#

  能“华丽”地表达出当前使用 bash 的版本和当前是不是 root 之外就没有别的信息了,可以参考这篇文章《技巧:提示行魔术》,里面介绍得非常详细。

  初级阶段,先定义初级的提示符:

  1 >             export PS1="V890> "

  2 V890>

  3 V890>         export PS1="Good Luck # "

  4 Good Luck #

  5 Good Luck #   export PS1="> "

  6 >

  通过修改变量 PS1 即可改变提示符,但是这远远不够,毕竟现在的提示符是静态,我们需要动态的提示符,我们看看以下这个转意表:

  01 \a          ASCII 响铃字符(也可以键入 \007)

  02 \d          "Wed Sep 06" 格式的日期

  03 \e          ASCII 转义字符(也可以键入 \033)

  04 \h          主机名的第一部分(如 "mybox")

  05 \H          主机的全称(如 "mybox.mydomain.com")

  06 \j          在此 shell 中通过按 ^Z 挂起的进程数

  07 \l          此 shell 的终端设备名(如 "ttyp4")

  08 \n          换行符

  09 \r          回车符

  10 \s          shell 的名称(如 "bash")

  11 \t          24 小时制时间(如 "23:01:01")

  12 \T          12 小时制时间(如 "11:01:01")

  13 \@          带有 am/pm 的 12 小时制时间

  14 \u          用户名

  15 \v          bash 的版本(如 2.04)

  16 \V          Bash 版本(包括补丁级别) ?/td>

  17 \w          当前工作目录(如 "/home/drobbins")

  18 \W          当前工作目录的“基名 (basename)”(如 "drobbins")

  19 \!          当前命令在历史缓冲区中的位置

  20 \#          命令编号(只要您键入内容,它就会在每次提示时累加)

  21 \$          如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"

  22 \xxx        插入一个用三位数 xxx(用零代替未使用的数字,如 "\007")表示的 ASCII 字符

  23 \\          反斜杠

  24 \[          这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。

  25 \]          这个序列应该出现在非打印字符序列之后。

  通常来说,我希望通过提示符,第一眼就可以看到我当前是什么用户,在哪台服务器,和当前目录,其实就是Linux下默认 bash 的提示符,我们可以这样设定提示符:

  1 > export PS1="\u \H \W \$ "

  2 root V890 etc $

  3 root V890 etc $

  现在提示符有我们需要的信息了,但是显得很笨,我们需要美化一下,完全抄一下 Linux 的 bash 提示符吧:

  1 > export PS1="[\u@\H \W]\$ "

  2 [root@V890 etc]$

  3 [root@V890 etc]$

  到现在为止,我们还是“活在”黑白阶段,如果提示符也有彩色,将会更加醒目了,能不能让提示符也着色呢?答案是肯定,但前提是你的客户端要支持。

  所谓着色,只不过是添加一些终端可以辨认的“颜色转义符”罢了,“颜色转义符”的格式如下:

  1 \e[___m

  重置所使用的“颜色转义符”是:

  1 \e[0m

  再参考以下的颜色表:

  最终,我将我的提示符设定为这样:

  export PS1="[\e[31m\u\e[0m@\e[33m\H\e[0m \e[36m\W\e[0m]\$ "

  虽然看起来比较混乱,但是和HTML的原理是一样的,都是用特殊的“标签”夹住相应的内容。

  为了突出显示,我将颜色代码加粗,效果如下:

  没有理由每次登陆之后我都输入一遍 export xxxxxx 吧,于是修改 /etc/profile 这个文件,加入如下两行:

  1 export PS1="[\[\e[31m\u\e[0m\]@\e[33mV890\e[0m \e[36m\W\e[0m]\$ "

  2 export PS2="[\[\e[31m\u\e[0m\]@\e[33mV890\e[0m \e[36m\W\e[0m]> "


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
author-avatar
fjkfjaslfjsal_577
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有