标签: prompt

Bash:如何知道最后一个命令的输出是否以换行符结尾?

大多数情况下,命令的输出以换行符结尾。但有时不会,因此下一个 shell 提示与输出一起打印在同一行中。

例子:

root@hostname [~] # echo -n hello
helloroot@hostname [~] #

我一直觉得这很烦人。
现在,我可以在 PS1 变量的开头添加一个“\n”,但大多数情况下会打印我不需要的额外行。

是否有可能知道最后一个命令的输出是否以换行符结尾?


解决方案:(
感谢丹尼斯)

PS1='$(printf "%$((`tput cols`-1))s\r")\u@\h [\w]\$ '
Run Code Online (Sandbox Code Playgroud)

linux shell bash prompt

10
推荐指数
1
解决办法
2998
查看次数

Bash 自定义提示打破长命令行的换行

我有一个自定义的 bash 提示,它为我的用户名、主机名和当前工作目录着色。颜色显示正确,但是当我键入需要换行的命令行时,终端不会开始新行,而是覆盖命令的开头。这发生在 RHEL 4 和 Debian 上。

这个问题详细说明了 OS X 上的一个类似问题;似乎这是一个错误终止的控制序列的问题,但是我看不出是什么原因造成的,因为我到处都使用 $(tput) 代码,而不是手工编写我的代码。下面的片段 - 有没有人能够建议我做错了什么?

# Control codes

COL_RST=$(tput sgr0)  # Remove all colour formatting
COL_BRIGHT=$(tput bold) # Emphasise

# Foreground
COL_G=$(tput setaf 2) # Green
COL_Y=$(tput setaf 3) # Yello
COL_B=$(tput setaf 4) # Blue

COL_USR=${COL_Y}${COL_BRIGHT}
COL_PWD=${COL_B}${COL_BRIGHT}
COL_HST=${COL_G}${COL_BRIGHT}

# Set prompt
PROMPT="${COL_USR}\u${COL_RST}@${COL_HST}\h${COL_RST}:${COL_PWD}\W${COL_RST}"

# Put it all together....
PS1="[$PROMPT]\$ "

export PS1
Run Code Online (Sandbox Code Playgroud)

linux bash prompt

8
推荐指数
1
解决办法
3014
查看次数

在 bash 中获得更多有用的选项卡完成提示?

假设我有一个包含几个文件的目录,如下所示:

$ ls
file1  file2  file3
Run Code Online (Sandbox Code Playgroud)

我想在 bash 中做一些 tab 补全:

$ cat file<tab>
file1  file2  file3  
Run Code Online (Sandbox Code Playgroud)

我记得看到有人在做 Tab 补全,shell 将下一部分加粗,所以在这种情况下,它会将文件名的1,2和加粗,3因此它看起来像这样:文件1 文件2文件3

这将告诉您接下来应该输入什么。

我认为这是 的一个功能zsh,但有什么办法可以得到它bash吗?

linux shell bash command-line-interface prompt

7
推荐指数
1
解决办法
927
查看次数

提示定制:没有tty时如何检测

我有一个带有颜色的自定义提示(使用 tput),每次我在服务器中启动非交互式会话时,我都会收到一堆错误。
例如,如果我开始一个像这样的非交互式会话:

ssh root@hostname6 "echo 'hello' ; echo $TERM"
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

hello
xterm
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
stdin: is not a …
Run Code Online (Sandbox Code Playgroud)

linux shell bash bashrc prompt

5
推荐指数
2
解决办法
5107
查看次数

如何从 Windows 命令提示符下理智地复制(不使用“Mark”)

在 Windows 的命令行中给出一个很长的单个命令,我想简单地将该命令复制到剪贴板中。

我只是在寻找几乎所有编辑器都有的无处不在的 Shift-End 、 Ctrl-C 类型功能。

不要想用马克(是的,即使是在快速编辑模式),这需要我来选择块,它的地方贴上,并手动删除回车。
当然,这并不难,但我有一个(合理的)场景,我经常这样做,但它变得很麻烦。

Cygwin 也不是一种选择,因为它做了一些不同的事情,这对我的场景不起作用。

编辑,选择的答案
我结合了 romandas 和 crchad 的答案,我现在使用“控制台”程序进行多个选项卡和 romandas 对“剪辑”程序的建议完全改进了流程:

  • 输入我冗长的命令并运行它
  • 点击上一个命令并将 |clip 添加到最后
  • 点击主页,在开头添加回声

比我之前做的块编辑快得多。谢谢!

windows command-line-interface command prompt

2
推荐指数
1
解决办法
741
查看次数

谁决定了 Linux 中的默认 shell 提示?

在标准的 Linux shell bash 中有几个默认值,我认为需要一些历史记录。这个问题是关于提示的。

许多 Linux 发行版中 bash 的默认提示是 [\u@\h \W]\$

对于那些无法解析的人,对于典型用户来说,它看起来像这样:

[staticsan@walcen files]$ _
Run Code Online (Sandbox Code Playgroud)

最大的问题是它只告诉您当前目录的名称。“文件”可以/var/www/files//home/staticsan/files(这是一个简单的例子)一样容易。完整路径更有意义,因此每次设置新框或创建新用户时,我都必须更改它。

那么为什么默认设置为它呢?

linux bash prompt

2
推荐指数
2
解决办法
1492
查看次数

Unix 单行编辑器/提示?

我有一个 bash 脚本,如果当我提示用户而不是仅仅要求输入时,它会更好,如果它提供了用户可以编辑的行(但全文编辑器会有点过分,它只有一行)

什么工具提供这个?

dialog的输入框几乎是正确的,但我宁愿它没有绘制整个屏幕。

command-line-interface prompt

2
推荐指数
1
解决办法
199
查看次数

标签 统计

prompt ×7

bash ×5

linux ×5

command-line-interface ×3

shell ×3

bashrc ×1

command ×1

windows ×1