mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
PRF:20170707 Bash prompt tips and tricks.md
@toyijiu 总体来说翻译的不错,个别地方略有遗漏,格式上稍有偏离。加油,干的不错!
This commit is contained in:
parent
82ee2b5b1a
commit
ff1e6b5a29
@ -1,21 +1,23 @@
|
||||
Linux Bash 提示符的一些骚操作
|
||||
=======================================================
|
||||
|
||||
###一些能让你自定义 Bash 提示符的黑科技
|
||||
> 一些能让你自定义 Bash 提示符的黑科技
|
||||
|
||||
![Bash prompt tips and tricks](https://opensource.com/sites/default/files/styles/image-full-size/public/images/business/osdc_terminals.png?itok=QmkPW7P1 "Bash prompt tips and tricks")
|
||||
照片来源 :
|
||||
|
||||
[ajmexico][8]. 修改自 [Jason Baker][9]. [CC BY-SA 2.0][10].
|
||||
当你在 Linux 环境下打开一个 Shell 终端时,会看到命令行中出现了类似下面的一个 Bash 提示符:
|
||||
|
||||
当你在 Linux 环境下打开一个 Shell 终端时,会看到命令行中出现了类似下面的一个提示符:
|
||||
```git
|
||||
```
|
||||
[user@$host ~]$
|
||||
```
|
||||
|
||||
你知道命令行提示符其实是可以自己设置添加许多非常有用的信息的吗?在这篇文章中我就会教你如何自定义自己的 Bash 命令行提示符,想看的话就接着看吧~
|
||||
|
||||
###如何设置 Bash 提示符
|
||||
Bash 提示符是通过环境变量 PS1(提示符字符串1) 来设置的。当然如果你想一次输入多行的数据,可以尝试通过 PS2 环境变量来设置提示符:
|
||||
```git
|
||||
### 如何设置 Bash 提示符
|
||||
|
||||
Bash 提示符是通过环境变量 `PS1` (<ruby>提示符字符串 1<rt>Prompt String 1</rt></ruby>) 来设置的,它用于交互式 shell 提示符。当然如果你需要更多的输入才能完成一个 Bash 命令时,`PS2` 环境变量就是用来设置多行提示符的:
|
||||
|
||||
```
|
||||
[dneary@dhcp-41-137 ~]$ export PS1="[Linux Rulez]$ "
|
||||
[Linux Rulez] export PS2="... "
|
||||
[Linux Rulez] if true; then
|
||||
@ -24,66 +26,84 @@ Bash 提示符是通过环境变量 PS1(提示符字符串1) 来设置的。当
|
||||
Success!
|
||||
```
|
||||
|
||||
###在哪里设置 PS1 的值?
|
||||
PS1 就是一个普通的环境变量,系统默认值设置在 /etc/bashrc 目录中,在我的系统中,默认提示符通过以下命令来设置:
|
||||
```git
|
||||
### 在哪里设置 PS1 的值?
|
||||
|
||||
`PS1` 就是一个普通的环境变量,系统默认值设置在 `/etc/bashrc` 中,在我的系统中,默认提示符通过以下命令来设置的:
|
||||
|
||||
```
|
||||
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
|
||||
```
|
||||
它判断 PS1 是否是系统的默认值 \s-\v$ ,如果是的话则将值设置为 [\u@\h \W]\$。
|
||||
如果你想要自定义提示符,就不应该修改 /etc/bashrc ,而是应该在你的用户目录下将自定义命令加到.bashrc文件中。
|
||||
|
||||
###上面提到的 \u,\h,\W,\s 和 \v 是什么意思?
|
||||
这里有一些参考链接:
|
||||
- [Linux 是什么](1)
|
||||
- [Linux 容器是什么](2)
|
||||
- [快下载吧:这里有Linux 命令小抄](3)
|
||||
- [比楼上更高级的 Linux 命令小抄](4)
|
||||
- [我们最新的 Linux 相关文章](5)
|
||||
在 man bash 中的 PROMPTING 章节,你能够找到所有 PS1 和 PS2 相关描述符的功能,以下是一些比较常用的:
|
||||
- \u: 用户名
|
||||
- \h: 短主机名
|
||||
- \W: 当前你所在的目录名,只显示你的当前父目录
|
||||
- \s:Shell 名字(bash 或者 sh,取决于你的 Shell 尊姓大名)
|
||||
- \v:Shell 的版本号
|
||||
它判断 `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 page 的 PROMPTING 部分找到更多的特殊字符和它的用处。
|
||||
|
||||
###多行提示符
|
||||
如果你的提示符过长,想将提示符切成两行,可以使用 "\n" 将提示符切断成两行显示,比如下面的例子会在第一行显示日期,时间和当前工作目录,第二行显示用户名和主机名:
|
||||
```git
|
||||
- `\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]$ "
|
||||
```
|
||||
人们偶尔也想将提示符变成彩色的。虽然我觉得彩色提示符让人分心/易怒,但是也许你很喜欢。如果我们想将日期变成红色的,目录变成青蓝色,用户名搞一个黄色背景,你可以这样做:
|
||||
```git
|
||||
### 还能再好玩点吗?
|
||||
|
||||
人们偶尔也想将提示符变成彩色的。虽然我觉得彩色提示符让人分心、易怒,但是也许你很喜欢。如果我们想将日期变成红色的,目录变成青蓝色,用户名搞一个黄色背景,你可以这样做:
|
||||
|
||||
```
|
||||
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](11)这个网站找到更多的颜色代码,甚至可以让字符翻转和闪烁!我可不想这个干,但是你可以!
|
||||
|
||||
- `\[..\]` :表示一些非打印字符
|
||||
- `\e[..` :转义字符,后面的跟着的特定的转义字符串在终端中表示颜色或者其他意思
|
||||
- `31m` :表示红色字体(`41m` 表示是红色背景)
|
||||
- `36m` :表示是青蓝色字体
|
||||
- `1;43m` :表示黄色字体(`1;33m` 表示黄色字体)
|
||||
- `[\e[0m]]` :它在最后将颜色恢复成系统终端默认颜色
|
||||
|
||||
你可以在 [Bash prompt HOWTO](11) 这里找到更多的颜色代码,甚至可以让字符反相和闪烁!我不知道为什么地球人会有这种想法,但是你可以这么干!
|
||||
|
||||
所以你最喜欢的自定义提示符是什么样子的呢?有没有让你抓狂的自定义提示符呢?请在评论里告诉我吧~
|
||||
|
||||
|
||||
(照片来源:[ajmexico][8]. 修改自 [Jason Baker][9]. [CC BY-SA 2.0][10].)
|
||||
|
||||
---
|
||||
|
||||
作者简介:
|
||||
|
||||
Dave Neary - Dave Neary is a member of the Open Source and Standards team at Red Hat, helping make Open Source projects important to Red Hat be successful. Dave has been around the free and open source software world, wearing many different hats, since sending his first patch to the GIMP in 1999.
|
||||
Dave Neary - Dave Neary 是红帽开源和标准化团队成员,帮助开源项目对红帽的成功至关重要。自从在 1999 年为 GIMP 提交了第一个补丁以来,他一直带着各种不同的帽子,在开源的世界徜徉。
|
||||
|
||||
---
|
||||
|
||||
via: https://opensource.com/article/17/7/bash-prompt-tips-and-tricks
|
||||
|
||||
作者:[Dave Neary ][a]
|
||||
作者:[Dave Neary][a]
|
||||
译者:[吴霄/toyijiu](https://github.com/toyijiu)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
@ -102,21 +122,3 @@ via: https://opensource.com/article/17/7/bash-prompt-tips-and-tricks
|
||||
[12]:https://opensource.com/users/dneary
|
||||
[13]:https://opensource.com/users/dneary
|
||||
[14]:https://opensource.com/article/17/7/bash-prompt-tips-and-tricks#comments
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user