linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因

前言

先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面的那串提示符.

例如:

Fi4Lg9IF9C0jkAO2AQe9XBbluh9T

当然, 这个样式是可以修改的, 这就涉及到我们的PS1和PS2了, 有经验或者以前有设置过的童鞋估计都不会陌生, 木有接触过的童鞋可以参考一下链接学习下: linux PS1 提示符定义

问题

因为上面的并不是这次的主题, 所以简单跳过. 其实我们的prompt除了能够展示这些信息之外, 还能够展示些较为"动态"的东西.

我们先来看个需求(简单):

想要在每次执行命令时, 看到当前的时间

所以我们可以在~/.bash_profile里面加入下面的内容:

export PS1="$(date +"%Y-%m-%d %H:%M:%S")\$ "

如代码所示, 应该能够在提示符上看到我们的时间, 现在试验下:

FogHEvvmb-IafEHHOIqUUkLYot38

正如我们猜测的一样, 提示符那边已经变成了我们的时间了, 但是貌似出现了一个问题, 当我们在执行下一条命令时, 时间却没有改变, 还是40秒, 哪怕我们多执行几次还是这样.

难道PS1只能加载一次? 但是这个原因很快就被否决, 因为当我们在切换用户时, 提示符的$会改变成#, 而且也有其他的例子(下面会举出来)证明, PS1是每次都会执行的. 所以问题只能在于我们写法中.

考虑到是不是写死命令的缘故, 于是就把date命令放到函数中, 看能否成功:

修改~/.bash_profile文件如下:

echo_time(){

date +"%Y-%m-%d %H:%M:%S"

}

export PS1="$(echo_time)\$ "

Fh3VHGjrnmc4a44OxwwkcBe8TxuE

结果是失败的, 貌似这样的用法也是不行的! 查阅了很多文档, 直到看到一篇文章说, 两边必须是单引号, 才恍然大悟, 开始有点理解为什么我的效果会失败.

可能这里会有童鞋不清楚linux的单引号和双引号的区别, 简单来说就是:

双引号: 让大部分的符号(例如*), 失去意义,变为普通的字符.

单引号: 让所有的符号, 都失去意义, 变为普通的字符.

举个简单的例子, echo "$a", 可以得出变量a的值, 但是echo "$a", 就真的只能输出$a. 具体的细节, 可以查阅.

原因分析

所以我这边失败的原因就是, 我这里需要用的是单引号, 而不是双引号, 因为如果用双引号, PS1在赋值时, 就已经获得命令/函数的值了, 所以每次打印PS1, 都已经是具体的值了, 而不是一个命令/函数. 就好像:

# 双引号:

PS1="$(date +%F)" 取出来的结果就是: PS1="2017-07-24"

# 单引号:

PS1="$(date +%F)" 取出来的结果就是: PS1="$(date +%F)"

所以等到在终端输出时, 就会有不同的表现: 单引号, 每次输出, 都是执行那个函数, 而双引号, 因为已经是固定字符了, 所以每次都是那个值!

解决方案

找到了原因, 修改起来就得心应手了, 我们只需要将刚才的语法, 从双引号换成单引号即可.

修改~/.bash_profile

echo_time(){

date +"%Y-%m-%d %H:%M:%S"

}

export PS1="$(echo_time)\$ "

Fqmr6KAYALQzU6PwxwqiP5DPlD3b

可以看到这里已经是完美解决了我们的问题了~

PS: 附上一个小小的福利

需求:

如果长期在终端下开发, 而且又是gitlab的专用户的童鞋, 很多时候都会担心自己开发的代码分支会搞错, 或者不记得自己所处的分支是啥, 经常就会需要git branch来看下, 现在我们可以通过这个, 来解决我们这个难题~

修改~/.bash_profile

# 获取代码的分支

get_branch(){

BRANCH=`git branch 2>/dev/null |sed -n "/^\*/s/^\* //p"`

if [[ -n $BRANCH ]]

then

echo " [*$BRANCH]"

else

echo ""

fi

}

export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]\[\033[01;32m\]$(get_branch)\[\033[00m\] \$ "

运行的效果:

FirWm6offOuHtzaQEuavpvfaijv_

可以看到, 当我进入一个代码目录时, 我的提示符就会展示出所处的分支~, 这功能虽小, 但我觉得还是挺有用的, 就跟git bash客户端类似, 希望大家喜欢!

欢迎各位大神指点交流, QQ讨论群: 258498217

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

skyeye linux qt,ARM仿真器SkyEye的安装及使用

SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式系统,可在SkyEye上运行μCLinux以及μC/OS-II等,以及各种…

2g 双核电脑 linux,9208)(奔腾双核E5200/2G/320G)电脑详细技术

处理器型:intel 酷睿2双核 p7350 intel 酷睿2双核 p7450 intel 酷睿2双核 t6600 intel 奔腾双核t4300 intel 奔腾双核 t4400 intel 赛扬双核 t1600 intel 赛扬双核 t3000操作系统:windowsvista home basic dos标配内存:1gb 2gb 硬盘容量&…

linux apache 大文件,Apache下error.log文件太大的处理方法

Apache下error.log文件太大的处理方法2019年05月03日| 萬仟网网络运营| 我要评论清除error.log、access.log并限制apache日志文件大小的方法 有个客户反映vps网站打不开,登录系统检查下,客户是win2003系统,发现放置网站文件的清除error.log、…

c语言程序设计实践课选题,c语言程序设计实践实验题目

c语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考1实验题目:循环结构程序设计实验目的:1.熟悉 VC6.0 的运行环境,掌握 C 程序的执行方法;2.掌握三种基本数据类型、部分运算符号和常用函数;3.掌握三种…

c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...

第一章自测练习答案清华大学c语言习题实验指导及课程设计 第一章 自测练习参考答案 一.简答题 1.源程序是程序员创建的,目标程序是编译器创建的,可执行程序是连接器创建的。 2.步骤如下:1)说明程序需求&…

k6前级效果器怎么用_新手学习电吉他,效果器应选择单块还是综合?

作为一个新手来说,我建议一开始先选择综合型效果器。这里我们先简单介绍下综合效果器与单块效果器。综合效果器可以理解为多个单块的综合体,即包含了很多种效果。一块大综合效果器可能就有三四十种预置音色,有过载、失真、法滋、延迟、混响、…

android百度多渠道打包,Android多渠道打包方案的实践与优化

目前使用过的多渠道打包方式有两种 ,一种是通过gradle打包,还有一种是美团的多渠道打包方案具体详情见这里1、Gradle打包1.1、在Androidmanifest.xml中添加android:name"UMENG_CHANNEL"android:value"${UMENG_CHANNEL_VALUE}" />…

一张图 综合交通 解决方案_航天智慧环保 | 重庆跳蹬河智慧水务管理系统解决方案—应用篇...

导读随着社会信息化趋势的不断增强,信息社会作为人类社会环境的一个重要方面,在社会中的地位和作用日益显著。在环境监测领域,对有效信息的把握以及正确的使用与水污染的防治和水环境的管理密切相关。航天智慧公司发挥航天系统工程优势&#…

oc 画一个圆弧_用SolidWorks画的塑料衣架,要用到不少让人头疼的曲线

此图是用SolidWorks2015建模,用KeyShot 8渲染。SW文件在2019年12月3日文件夹。零件一:1.在前视基准面上画样条曲线。2.在右视基准面上画样条曲线。(曲面放样的轮廓)3.新建基准面,参考样条曲线和紫色端点。4.在新基准面上画样条曲线。5.新建基…

红米android4.4.2,新版红米Note配置升级详解:系统其实是基于Android 4.4.2

新版红米Note今天中午,小米正式发布了4G版红米Note,由于该机早就出现在了工信部,因此较早一些的传闻显示该机在7月22日的发布会上就会和我们见面,但最终还是让我们多等了小半个月。和原版有所不同的是,4G版红米Note只有…

批量引号_RcoketMQ 批量发送和消息过滤

一、批量发送消息1、批量发送消息要求参考官方文档:http://rocketmq.apache.org/docs/batch-example/① 不能是延迟消息② 有相同的 Topic 和 waitStoreMsgOK(默认是 true,消息发送时,是否等待消息存储完成后再返回)③ 消息总大小不超过 1MB2…

msflexgrid允许大选择_特大型矿井提升机结构和布置方式的选择

导语:结合葫芦素矿井主井提升系统的设计,介绍了内装式提升机和直联悬挂式提升机的结构特点,比较了塔式提升机和落地式提升机的布置方式,对大型立井提升系统提升机结构和布置方式提出了自己的观点,条件允许时内装式提升…

jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析

首先看看继电器的驱动这是典型的继电器驱动电路图,这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图为什么要明白这个图的原理?单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大功率场合,比如控制电动机,显…

java byte[] 文件流 转换成string是乱码_Java学习--IO(二)、多线程

1.标准输入流标准输入流是指从标准输入设备流向程序的数据。Java利用http://System.in来得到一个InputStream字节输入流public static void main(String[] args) throws IOException {// 需求:输入一句话,然原样输出InputStream in System.in;byte[] buf new byte…

HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法...

coder.png在这一年的工作中,我发现很多问题你利用自己的「聪明才智」绕过去了,总有一天它会和你不期而遇,今天我们就来直面一个字体兼容性的小问题:Chrome谷歌浏览器下不支持css字体小于12px。我们先来看个效果图(chrome下)&#…

为什么同大取大同小取小_不锈钢马大型动物雕塑-大同金属雕塑马订制

不锈钢马大型动物雕塑-大同金属雕塑马订制 不锈钢浮雕雕塑所谓不锈钢浮雕雕塑是雕塑与绘画结合的产物,用压缩的办法来处理对象,靠等因素来表现三维空间,并只供一面或两面观看。浮雕一般是在另一平面上的,因此在建筑上使用更多&…

html5之api,HTML5之API(示例代码)

HTML5就是牛,可以直接播放音视频,还可以作图;一、HTML5中播放视频和音频:加载时直接播放音频的方式:new Audio("BY2.mp3").play();播放器视频音频var video $("#mp")[0];video.play();简单播放器…

电子计算机时代 英语,2018年英语专四作文范文:计算机时代

2018年英语专四作文范文:计算机时代1.近年来,计算机的应用越来越广泛2.计算机能做许多有益的事3.计算机也有许多副作用范文:In recent years, computers have grown in popularity. You can find them notonly in the universities but on fa…

cad2010多个文件并排显示_便携式显示器清晰度参数,你知道吗?

便携式显示器清晰度是十分重要的,那么影响便携式显示器清晰度的参数有哪些呢?一起跟随诚易盛小编去看看,感谢大家阅读!戳这里直达上文aosiman便携式显示器 15.6英寸1、屏幕尺寸有多少人认为,屏幕越大就越清晰的?其实不…

xp计算机用户密码设置,XP电脑开机密码怎么设置?

电脑开机密码是在我们打开电脑后输入正确的密码后才能启动操作系统。手机上的密码我们都会设置,那么你们知道怎么给电脑设置开机密码呢?接下来,小编就教大家设置电脑开机密码,一起来看一下吧电脑开机密码如何设置呢?由于网络安全…