如何通过使用PS2变量来为Bash调整此便签别名?

托马斯·巴鲁切尔(Thomas Baruchel)

很多时候,我需要快速键入一些字符行(例如,为了简化数学表达式),然后丢弃整个内容。当然,我通常会在文本编辑器中运行几个运行的会话,并且可以在其中进行。我也一直在使用以下系统;我输入echo "一个终端(运行bash),然后输入任何内容。完成后,我输入close "

昨天,我决定在自己.bashrc的内容中添加一些更优雅的内容,并创建了以下别名:

# write junk on the terminal (stop with a line containing only "." )
# alias scratch="awk '/^\.$/{exit}'"
# alias scratch="sed -ne '/^\.$/q'"
alias scratch='grep -q "^\.$"'

您可以看到上面的三个变体在执行相同的操作:我键入scratch,然后键入想要键入的任何内容,最后以仅包含.(点)的一行结束

我对此感到非常满意,但我也想到了以下变体:

alias scratch="cat - > /dev/null << ."

>在每一行的开头都使用初始提示执行相同的操作

然后,我想知道如何使用PS2环境变量来更改此提示,而我什么也无法正常工作。当然,PS2完成后应该恢复当前提示。如何scratch仅在“临时”会话期间将别名的此变体形式的提示设置为任意字符串?

防冻

我不完全确定这对什么有用(与相比nanovim或者您喜欢的任何编辑器),但是...它是否需要别名?

$ <<.
> foo
> bar
> baz
> .

只是"会更短,但会出现错误消息...

$ "
> oh
> ah
> ui
> "
bash: $'\noh\nah\nui\n': command not found

请注意,这些事情并没有真正消失。

$ history
  497  <<.
foo
bar
baz
.

如果那让您感到困扰,请先禁用历史记录,然后再清除它。

对于自定义PS2提示,这很困难,因为(至少对于Bash而言)必须将其设置为父shell。如果在子外壳中设置它,它将被忽略。您可以通过启动像这样的显式shell实例来解决该问题。

$ PS1=@_ PS2=:_ bash --norc
@_<<.
:_hey
:_.
@_exit
$

但是在这一点上,编写专用的暂存和丢弃程序会更有意义。

不同的方法,根本不使用PS2提示符:

$ while read -p ":-> " ; do : ; done
:-> hey
:-> how 
:-> do

只有您不能使用“。” 离开这里。好吧,您可以轻松地将其添加为条件...

$ alias scratch='(var=_; while read -r -p ":-> " var; do [ "$var" == . ] && break; done)'
$ scratch
:-> a
:-> b
:-> c
:-> .

但是,您也可以通过发送EOF和Ctrl+退出D

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过超参数调整来改善此模型

来自分类Dev

有没有一种使用VBscript的方法来检查PS2键盘和/或PS2鼠标是否已连接到运行Windows XP或更高版本的计算机?

来自分类Dev

如何通过1)使用数组,2)避免列表串联(惰性列表)来改进此算法?

来自分类Dev

如何通过使用鼠标滚动或滚动来调整图像大小?

来自分类Dev

Bash:在变量中使用别名

来自分类Dev

Bash:在变量中使用别名

来自分类Dev

通过bash别名修改$ PATH变量

来自分类Dev

通过bash别名修改$ PATH变量

来自分类Dev

如何通过使用结构来缩短此代码?

来自分类Dev

如何通过遍历 bash 中的变量来查找多个文件

来自分类Dev

PS2键盘延迟错误/ VHDL

来自分类Dev

OpenBSD 6.4中的PS2键盘

来自分类Dev

在什么情况下使用PS2,PS3,PS4作为提示?

来自分类Dev

是否可以使用VBscript检查PS2键盘和/或PS2鼠标是否已连接到运行Windows XP或更高版本的计算机?

来自分类Dev

将“模块”别名(调用 modulecmd)从 tcsh 调整为 bash

来自分类Dev

如何在别名末尾使用bash别名?

来自分类Dev

Ansible:如何通过与“”串联来为FQDN构造变量。在变量“名称”和变量“域”之间

来自分类Dev

如何使用变量作为别名

来自分类Dev

如何通过拖动来调整图像大小

来自分类Dev

如何通过在“属性以选择器开始”中为ID使用变量来选择jQuery中的元素

来自分类Dev

如何使用用户输入来选择bash中的变量?

来自分类Dev

如何使用bash变量来保持运行计数?

来自分类Dev

Git为别名使用与bash不同的shell

来自分类Dev

如何从bash $ PS1设置变量

来自分类Dev

如何从bash $ PS1设置变量

来自分类Dev

C ++:如何通过此代码来制作此形状?

来自分类Dev

如何通过yii2中的imagine扩展来调整图像大小

来自分类Dev

如何禁用Three.js来调整图像的大小为2的幂?

来自分类Dev

如何用单引号定义此PS1变量?

Related 相关文章

  1. 1

    如何通过超参数调整来改善此模型

  2. 2

    有没有一种使用VBscript的方法来检查PS2键盘和/或PS2鼠标是否已连接到运行Windows XP或更高版本的计算机?

  3. 3

    如何通过1)使用数组,2)避免列表串联(惰性列表)来改进此算法?

  4. 4

    如何通过使用鼠标滚动或滚动来调整图像大小?

  5. 5

    Bash:在变量中使用别名

  6. 6

    Bash:在变量中使用别名

  7. 7

    通过bash别名修改$ PATH变量

  8. 8

    通过bash别名修改$ PATH变量

  9. 9

    如何通过使用结构来缩短此代码?

  10. 10

    如何通过遍历 bash 中的变量来查找多个文件

  11. 11

    PS2键盘延迟错误/ VHDL

  12. 12

    OpenBSD 6.4中的PS2键盘

  13. 13

    在什么情况下使用PS2,PS3,PS4作为提示?

  14. 14

    是否可以使用VBscript检查PS2键盘和/或PS2鼠标是否已连接到运行Windows XP或更高版本的计算机?

  15. 15

    将“模块”别名(调用 modulecmd)从 tcsh 调整为 bash

  16. 16

    如何在别名末尾使用bash别名?

  17. 17

    Ansible:如何通过与“”串联来为FQDN构造变量。在变量“名称”和变量“域”之间

  18. 18

    如何使用变量作为别名

  19. 19

    如何通过拖动来调整图像大小

  20. 20

    如何通过在“属性以选择器开始”中为ID使用变量来选择jQuery中的元素

  21. 21

    如何使用用户输入来选择bash中的变量?

  22. 22

    如何使用bash变量来保持运行计数?

  23. 23

    Git为别名使用与bash不同的shell

  24. 24

    如何从bash $ PS1设置变量

  25. 25

    如何从bash $ PS1设置变量

  26. 26

    C ++:如何通过此代码来制作此形状?

  27. 27

    如何通过yii2中的imagine扩展来调整图像大小

  28. 28

    如何禁用Three.js来调整图像的大小为2的幂?

  29. 29

    如何用单引号定义此PS1变量?

热门标签

归档