linux 101 hacks 5PS1
PS1——默认提示符
看完这一章,我心里若干个卧槽。。
如下所示, 可以通过修改 Linux 下的默认提示符,使其更加实用。在下面的例子中,默认的 PS1
的值是“ \s-\v\$”,显示出了 shell 的名称的版本。 我们通过修改,可以使其显示用户名、主
机名和当前工作目录。
-bash-3.2$ export PS1="\u@\h \w> "
ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>
[注: 提示符修改为 "username@hostname current-dir>的形式]
本例中 PS1 使用的一些代码如下:
o \u -- 用户名
o \h -- 主机名
o \w -- 当前目录的完整路径。请注意当你在主目录下的时候,如上面所示只会显
示~
注意,在 PS1 值之后有一个空格。从个人角度来讲,使用这个空格可以增加一定的可读性。
将 export PS1=” \u@\h \w>" 添加到.bash_profile 或者 .bashrc 中,则可以保证其永久有
效。
ramesh@dev-db ~> vi ~/.bash_profile
ramesh@dev-db ~> vi ~/.bashrc
[注: 将命令添加到以上任何一个即可]
有关”PS1” 的详细用法可以参见下面
技巧 30: PS2——再谈提示符
一个非常长的命令可以通过在末尾加“ \” 使其分行显示。多行命令的默认提示符是“>” 。 我
们可以通过修改 PS2 ,将提示符修改为"continue->" 。
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \
> --key_buffer_size=512M --sort_buffer_size=512M \
> --read_buffer_size=4M --write_buffer_size=4M \
> /var/lib/mysql/bugs/*.MYI [注: 这里使用 ">" 作为默认提示符] ramesh@dev-db ~> export PS2="continue-> "
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \
continue-> --key_buffer_size=512M --sort_buffer_size=512M \
continue-> --read_buffer_size=4M --write_buffer_size=4M \
continue-> /var/lib/mysql/bugs/*.MYI
[注: 与上面类似,用 "continue-> " 作提示符]
当用“ \” 使长命令分行显示,我发现非常易读。当然我也见过有的人不喜欢分行显示命令
在提示符里显示当前时间
在 PS1 定义的环境变量下可以以$(LINUX COMMAND)的方式执行 LINUX 命令,在下面的例子中
用$(date)在提示中显示当前时间:
ramesh@dev-db ~> export PS1="\u@\h [\$(date+%k:%m:%S)]> "
ramesh@dev-db [::]>
你还可以用\t 使时间以 hh:mm:ss 格式显示:
ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [::]
你还可以用\@使当前时间以 12 小时制显示:
ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[: PM] ramesh@dev-db>
可能是版本不一样把,我这样子设置的
dahu@dahu-OptiPlex-:~$ cat .bashrc |grep 'PS1'
PS1="[\$(date +%H:%M:%S)] \u@\h \w> "
效果就变成这样了
[::] dahu@dahu-OptiPlex- ~> cd myfile/
[::] dahu@dahu-OptiPlex- ~/myfile>
任意命令的输出作为提示符
你可以在提示里显示任意 LINUX 命令的输出,下列命令显示了三项信息,以"|" 做分隔:
\! 历史命令的个数
\h 主机名
$kernel_version 用name -r 显示内核信息
\$! 最后一条命令的状态
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
|dev-db|2.6.-.fc9.i686|>
改变提示符的前景颜色
用蓝色显示提示符中的用户名,主机名,和当前目录信息:
$ export PS1="\e[0;34m\u@\h \w> \e[m "
[注: 亮蓝色]
$ export PS1="\e[1;34m\u@\h \w> \e[m "
[注: 暗绿色]
\e[ ——表示颜色的提示的起始位置
x;ym ——表示颜色的代码。颜色的代码在下面有说明
\e[m ——表示代颜色的提示的结束位置
颜色代码:
黑 0:30
蓝 0;34
绿 0;32
青 0;36
红 0;31
紫 0;35
棕 0;33
[注: 用 1 代替 0,可以使之变成黑体]
将下面的内容写入~/.bashrc 或~/.bash_profile 可以使其永久生效
$ vi ~/.bash_profile
STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"
改变提示符的背景色
在 PS1 变量用“/e{code}m” 语句改变提示符的背景色:
$ export PS1="\e[47m\u@\h \w> \e[m "
[注: 显示亮灰背景]
同时改变前景色和背景色。
$ export PS1="\e[0;34m\e[47m\u@\h \w> \e[m "
[注: 显示亮蓝突出亮灰背景]
在~/.bashrc 或~/.bash_profile 中添加如下语句使上面的关于前景色和和背景色的设置保
存下来。
$ vi ~/.bash_profile
STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w>
$ENDCOLOR"
尝试下下面的背景色,挑选一个你喜欢的:
o \e[40m
o \e[41m
o \e[42m
o \e[43m
o \e[44m
o \e[45m
o \e[46m
o \e[47m
使用已有的 PS1 变量创建自己的提示符
\a ASCII响铃字符
\d 以―星期 月 日‖的格式显示日期 (例如, ―Tue May 26‖)
\D{format} - 格式传给strftime(3),返回的结果的传入到提示字符串中,空的
式会被本地指定的时间取代,需要括号。
\e ASCII转义字符
\h 将主机名作为提示符的第一部分
\H 主机名
\j 当前shell管理的作业数
\l shell终端名称
\n 换行
\r 回车
\s shell名, $0 的基础名(最后一个斜线的部分)
\t 以 24-hour HH:MM:SS 格式显示当前时间
\T 以 12-hour HH:MM:SS 格式显示当前时间
\@ 以 12-hour am/pm格式显示当前时间
\A 以 24-hour HH:MM 格式格式显示当前时间
\u 当前用户的用户名
\v bash的版本号(例如 2.00)
\V bash发行版,版本号+补丁号(例如 2.00.0)
\w 当前工作目录,当工作目录是$HOME时,用波浪号表示
\W 当前工作目录全路径,当工作目录是$HOME时,用波浪号表示
\! 命令历史序号
\# 当前命令的命令号
\$ 如果有效的用户ID是 0,这个值是#,否则为$
\nnn 字符相应的八进制数
\\ 反斜杠
\[ 非输出字符的开始标记,可以嵌入到提示的终端控制序列中
\] 非输出字符的结束标记
通过 PS1 调用 bash shell 函数
你可以像下面那样在 PS1 中调用一个 bash shell 函数:
ramesh@dev-db ~> function httpdcount {
> ps aux | grep httpd | grep -v grep | wc -l
> }
ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db []>
[注: 显示当前运行的 httpd 进程的总数]
其实前面放时间的那一步就可以想到这了,那基本上都可以了。
通过 PS1 中调用 shell 脚本
你可以在 PS1 中使用脚本。本例中在 PS1 中调用~/bin/totalfilesize.sh 脚本 ,该脚本可以计
算当前目录下的所有文件大小的总和。
ramesh@dev-db ~> cat ~/bin/totalfilesize.sh
for filesize in $(ls -l . | grep "^-" | awk '{print
$}')
do
let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"
ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [ bytes]> cd /etc/mail
ramesh@dev-db [ bytes]>
[注: 通过 PS1 调用 totalfilesize.sh 显示当前目录所有文件的总和]
我只能说,作者脑洞很大,666.
linux 101 hacks 5PS1的更多相关文章
- linux 101 hacks 第一章cd命令
本系列来源于<linux 101 hacks>,作者还写了其他101 hacks教程,读了几章,觉得技巧都还不错,很实用,做个总结收藏. cdpath 设置基目录 [ramesh@dev- ...
- linux 101 hacks 7crontab
技巧 74: crontab 书上的这一段我删了,重写一下,用的是ubuntu 16.04系统 参考 每天一个 linux 命令(50):crontab 命令 crond 服务 安装 crontab: ...
- linux 101 hacks 6history 及相关关键字
如果你经常使用命令行,那么有效的使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌握了我在下面给出的 15 个例子, 你就会发现使用命令行将更有乐趣 是吗?我学一学呢 技巧 50:使用 HIST ...
- linux 101 hacks 3null 改文件大小写 xargs
禁止标准输出和错误信息的输出 当我们调试 shell 脚本的时候,我们往往不希望看到标准输出和标准错误的信息.我们可以使用/dev/nulll 来禁止标准错误的信息. 将标准输出重定向到/dev/nu ...
- linux 101 hacks 2date,grep,find
感觉挨个按着作者来的太蠢了,我还是放自己觉得不错的东西把 用特定格式显示当前时间 以下的方法可以用各种不同的格式来显示当前时间: $ date Thu Jan :: PST $ date --date ...
- linux 101 hacks 4stat diff ac
stat 命令 stat 命令那个可以用来查看文件或者文件系统的状态和属性.显示一个文件或目录的属性 $ stat /etc/my.cnf File: `/etc/my.cnf' Size: Bloc ...
- 推荐一些不错的计算机书籍(php c mysql linux等等)
推荐一些不错的计算机书籍. # PHP<PHP程序设计>(第2版) --PHP语法和入门最好的书<PHP5权威编程> --PHP入门后升级书<深入PHP:面向对象.模 ...
- Web前端知识技能大汇总
项目起源 还记得@jayli 的这幅前端知识结构图么. 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个GitHub项目.我们可以 ...
- 一个很不错的适合PHPER们书单,推荐给大家【转】
来我博客的访客们中,有一些是PHP的初学者,是不是很迷茫PHP应该怎么学?应该买什么样的书?到处问人,到处求助?这下好了. 正好看到黑夜路人在博客上推荐了一个书单,看上去都非常不错,很多我也没有读过, ...
随机推荐
- Matlab修改背景颜色
步骤: 1, 在matlab命令行中运行prefdir, 获取matlab.prf文件所在路径 2, 打开matlab.prf所在路径, 找到matlab.prf文件, 作备份 3, 将以下内容添加到 ...
- noi题库(noi.openjudge.cn) 3.9数据结构之C++STL T1——T2
T1 1806:词典 描述 你旅游到了一个国外的城市.那里的人们说的外国语言你不能理解.不过幸运的是,你有一本词典可以帮助你. 输入首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一 ...
- jmeter乱码问题
JMeter 的版本由 2.13 升级到了 3.0 发现之前接口脚本 POST 请求主体中的中文无法正确显示,现象如下图所示:
- 《设计模式》-原则六:迪米特法则(LoD)
啊哈哈哈哈,又到星期五了,真开心.回来吃完饭慌着去玩游戏,所以立马过来先完成今天的学习目标. 这个原则的命名好像是以某个人的名字命名的,算了我不去管这个了. 直接说说我学到的东西,这个迪米特法则又可以 ...
- 最小主义:我的Musca桌面环境
我现在有一个非常简单实用的桌面环境了:Musca + conky + trayer. 当然Musca运行时需要dmenu,其实也不是非dmenu不可,据说 dzen 也不错. 我现在用的是dmenu. ...
- 【leetcode 简单】 第九十三题 二进制手表
二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59). 每个 LED 代表一个 0 或 1,最低位在右侧. 例如,上面的二进制手表读取 “3:25”. ...
- 【leetcode 简单】 第七十九题 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数 ...
- php empty()与isset()
empty() : 检查一个变量是否为空. 判断一个变量是否被认为是空的.当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在.如果变量不存在的话,empty()并不会产生警告. em ...
- Oracle DataTable的数据批量写入数据库
insert语句,sqldataadapter.update(dataset,tablename);sqlbulkcopy.WriteToServer(datatable);三个方法的性能进行比较: ...
- JS设计模式——10.门面模式
门面模式 这是一种组织性的模式,它可以用来修改类和对象的接口,使其更便于使用.它可以让程序员过得更轻松,使他们的代码变得更容易管理. 门面模式有两个作用: 简化类的接口 消除与使用她的客户代码之间的耦 ...