【发布时间】:2019-04-03 18:49:13
【问题描述】:
我经常发现自己制作了一个长长的 bash 或 zsh 命令,但它本身并不足以成为一个脚本。例如,我在调试 sed 表达式时,经常会更改一个字符,然后重新运行命令以查看输出如何变化:
$ echo "123 eyes on me" | sed -E 's/[[:alnum:]*]//'
23 eyes on me
$ echo "123 eyes on me" | sed -E 's/[[:alnum:]]*//'
eyes on me
$ echo "123 eyes on me" | sed -E 's/[[:alnum:] ]*//'
$ echo "123 eyes on me" | sed -E 's/[[:digit:] ]*//'
eyes on me
即使知道vi-mode并精通终端,每次编辑之前的命令并重新运行它还是很麻烦的。我宁愿直接编辑参数并实时查看其效果。
有些网站为特定用例提供类似的工具,例如正则表达式匹配:
其他示例包括 JSON linters、计算器或 YAML 解析器。然而,这些都存在多个问题:
- 它们不是通用的,也不能移植到作为一个整体来开发命令,如果我想将正则表达式输出到
tr,然后选择带有awk的第三列呢? - 可能与我在终端中的命令不同
- 它在在线浏览器中运行,而不是在我的终端中运行
- 非开源
有没有办法在我的终端中实时开发命令行表达式并在我输入时查看输出?
【问题讨论】:
-
我这样做,通常创建一个脚本
/tmp/1.sh,我在一个控制台中编辑它,在另一个控制台中运行watch -n1 bash -xc /tmp/1.sh。这样每次保存脚本时,watch 需要一秒钟来重新加载输出。通常我为两个控制台分屏查看输出刷新。 -
致亲密的选民:我明白你为什么认为这是在要求一个特定的工具。对于 SO,这肯定不是一个合适的问题,但这并不是我在这里真正要问的问题,我会更新问题以反映这一点。我真正想要的是一种在 bash 中查看命令实时结果的通用方法——这是一个关于如何使用常见编程工具(如 bash、命令行和终端)的问题。我不是在这里寻找工具推荐,而是寻找使用香草 POSIX 工具重现示例 Web 应用功能的方法。
标签: linux bash sed command-line