首页 > 系统相关 >Linux Bash 提示符的一些骚操作

Linux Bash 提示符的一些骚操作

时间:2023-09-27 15:55:05浏览次数:43  
标签:PS1 自定义 Linux 提示符 Bash 0m

如何设置 Bash 提示符

Bash 提示符是通过环境变量 PS1 (提示符字符串 1Prompt String 1) 来设置的,它用于交互式 shell 提示符。当然如果你需要更多的输入才能完成一个 Bash 命令时,PS2 环境变量就是用来设置多行提示符的:

[dneary@dhcp-41-137 ~]$ export PS1="[Linux Rulez]$ "

[Linux Rulez] export PS2="... "

[Linux Rulez] if true; then

... echo "Success!"

... fi

Success!
在哪里设置 PS1 的值?

PS1 就是一个普通的环境变量,系统默认值设置在 /etc/bashrc 中,在我的系统中,默认提示符通过以下命令来设置的:

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

它判断 PS1 是否是系统的默认值 \s-\v$ ,如果是的话则将值设置为 [\u@\h \W]\$。(LCTT 译注:注意命令中用 \ 做了转义。)

但如果你想要自定义提示符,不应该修改 /etc/bashrc ,而是应该在你的主目录下将自定义命令加到 .bashrc 文件中。

上面提到的 \u、\h、\W、\s 和 \v 是什么意思?

在 man bash 中的 PROMPTING 章节中,你能够找到所有 PS1 和 PS2 相关的特殊字符的描述,以下是一些比较常用的:

\u:用户名

\h:短主机名

\W:当前你所在的目录的名称(basename),~ 表示你的主目录

\s:Shell 名字(bash 或者 sh,取决于你的 Shell 的名字是什么)

\v:Shell 的版本号
还有哪些特殊的字符串可以用在提示符当中

除了上面这些,还有很多有用的字符串可以用在提示符当中:

\d:将日期扩展成 “Tue Jun 27” 这种格式

\D{fmt}:允许自定义日期格式——可通过 man strftime 来获得更多信息

\D{%c}:获得本地化的日期和时间

\n:换行(参考下面的多行提示符)

\w:显示当前工作目录的完整路径

\H:当前工作机器的完整主机名

除了以上这些,你还可以在 Bash 的 man 页面的 PROMPTING 部分找到更多的特殊字符和它的用处。

多行提示符

如果你的提示符过长(比如说你想包括 \H 、\w 或完整的日期时间时 ),想将提示符切成两行,可以使用 \n 将提示符切断成两行显示,比如下面的多行的例子会在第一行显示日期、时间和当前工作目录,第二行显示用户名和主机名:

PS1="\D{%c} \w\n[\u@\H]$ "
还能再好玩点吗?

人们偶尔也想将提示符变成彩色的。虽然我觉得彩色提示符让人分心、易怒,但是也许你很喜欢。如果我们想将日期变成红色的,目录变成青蓝色,用户名搞一个黄色背景,你可以这样做:

PS1="\[\e[31m\]\D{%c}\[\e[0m\]

\[\e[36m\]\w\[\e[0m\]\n[\[\e[1;43m\]\u\[\e[0m\]@\H]$ "

\[..\] :表示一些非打印字符

\e[.. :转义字符,后面的跟着的特定的转义字符串在终端中表示颜色或者其他意思

31m :表示红色字体(41m 表示是红色背景)

36m :表示是青蓝色字体 1;

43m :表示黄色字体(1;33m 表示黄色字体)

[\e[0m]] :它在最后将颜色恢复成系统终端默认颜色

你可以在 Bash prompt HOWTO 这里找到更多的颜色代码,甚至可以让字符反相和闪烁!我不知道为什么地球人会有这种想法,但是你可以这么干!

所以你最喜欢的自定义提示符是什么样子的呢?有没有让你抓狂的自定义提示符呢?请在评论里告诉我吧~

标签:PS1,自定义,Linux,提示符,Bash,0m
From: https://www.cnblogs.com/roccn/p/17732891.html

相关文章

  • 50、linux修改虚拟机的时间
    1、查看当前时区与电脑端实际时间不一致 2、修改时区 再次查看发现时间已同步时区 ......
  • Linux2.1.13网络源代码学习(https://qiankunli.github.io/2022/07/04/linux_2_1_13_ne
    简介简介源码目录网络分层数据结构套接字套接字与vfssk_buff结构网络协议栈实现——数据struct和协议structlinux1.2.13接收数据收到数据包的几种情况Socket读取发送数据面向过程/对象/ioc以下来自linux1.2.13源码,算是参见Linux1.0的学习笔记。源码目......
  • clickhouse linux 客户端安装和使用
    clickhouselinux客户端安装步骤1:上传安装文件到服务器目录(可以使用正常用户上传)2:使用root用户安装,否则会提示权限不够报错,此外非X86架构服务器也可能会报错(如linuxone服务器报错:packageclickhouse-common-static-0:23.3.6.7-1.x86_64isintendedforadifferentarchitect......
  • linux9.20课堂随笔
    9.20课堂随笔一、文件操作1.创建文件/查看文件 2.head命令:“-n”查看前几行 3.tail命令:“-n”查看后几行 4.grep命令:对内容进行过滤,搜索关键词 5.复制文件“cp”  6.移动文件“mv” 7.删除文件“rm”二、Vim编辑器1.创建文档2.进入命令模式3.输入文本4.输......
  • Rockchip RK3399 - linux-headers制作(linux 4.19)
    linux-headers(内核头文件)包含各种头文件,可以让设备具有本地编译驱动的能力。一、制作linux-headers这一节我们借助friendly提供的工具来编译linux-headers,编译的内核的内核也是friendly提供的linux4.19版本。1.1下载工具和固件root@zhengyang:/work/sambashare/rk3399/frien......
  • Linux命令(80)之sort
    linux命令之sort1.sort介绍linux命令sort用于将文本文件内容以行为单位加以排序;sort命令默认按每行的第一个字符排序,根据首字母的ASCII码值进行升序(从小到大排列)。sort的默认分隔符是空白(空格和tab),多少空白都算一个分隔符。2.sort用法sort[参数]filesort常用参数参数说......
  • Linux命令(81)之traceroute
    linux命令之traceroute1.traceroute介绍linux命令traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量。2.traceroute用法traceroute[参数][主机]traceroute参数参数说明-w设置等待远端主机回报的时间-p设置UDP传输协议的通信端⼝-m设置检测数据包的最大......
  • Linux sed
    1.sed介绍sed:StreamEditor,流编辑器、行编辑器、逐行编辑sed将每行内容读入到“内存”中,在内存中进行处理,将结果返回给屏幕,此段内存空间称为模式空间。sed默认不编辑原文件,仅对模式空间的数据进行处理,处理结束后,将模式空间的内容显示到屏幕2.sed语法sed命令的语法格式sed[option]......
  • linux安装tff格式字体(转载)
    记录下Linux系统装字体的步骤。把字体放到/usr/share/fonts下(可以自己在这个目录下新建一个子目录放进去)fc-cache-fv结束。转载自:https://blog.csdn.net/ouyangzhenxin/article/details/82387632......
  • 如何查看Linux机器上docker容器的cpu占用率和磁盘使用率
    一、查看服务器上各个docker容器服务的CPU占用率:dockerstats 二、查看各docker容器的磁盘占用情况:df -h ......