在linux shell脚本上运行行选择

在linux shell脚本上运行行选择,linux,shell,vim,geany,Linux,Shell,Vim,Geany,我有一个日常shell脚本,如下所示 #!/bin/bash or whatever ## block1 comments program1 filepath1 & program2 filepath2 & ## block1 comments program3 filepath1 & program4 filepath2 & 虽然块通常不会发生,但有时会更复杂,包括定义的变量和unix命令。每天早上我打开这个文件,一整天我要做的就是选择一块文本,粘贴到一个

我有一个日常shell脚本,如下所示

#!/bin/bash or whatever

## block1 comments
program1 filepath1 &
program2 filepath2 &

## block1 comments
program3 filepath1 &
program4 filepath2 &
虽然块通常不会发生,但有时会更复杂,包括定义的变量和unix命令。每天早上我打开这个文件,一整天我要做的就是选择一块文本,粘贴到一个“run”脚本中,然后从终端调用它($./run.sh)

我想要的是将“选择/复制/粘贴/切换到终端/运行”简化为“选择/运行”。这可以在许多简单的编辑器中方便地完成。我碰巧使用了Geany,我不知道怎么做,我听说Vim可以做到,但我不知道怎么做


如果你知道其他的编辑也可以这样做,请写一行。例如,许多脚本编辑器允许您在其关联的语言解释器中运行选定的文本。我想要在终端中运行这些shell脚本行,从一个简单的编辑器,最好是GEAN或VIM。

< P>您可以考虑使用BASH <代码> CASE < /Cord>语句:

#!/bin/bash -xe
set -x

case $1 in
        thing1)
                echo    T1
        ;;
        thing2)
                echo    T@
        ;;
        *)
                echo "usage ..."
                exit 1
        ;;
esac
在此之后,您应该给出要执行的批处理的命令

set-x
启用调试,您可能会发现它很有用-或者在Geany中删除它

请检查
Edit->Commands->Send selection to Terminal
。 您还可以为此分配密钥绑定。要这样做,请转到
Edit->Preferences
并选择Keybindings选项卡。

您是直接背靠背运行每个块,还是在行之间需要执行其他(非命令)操作?将一个大文件拆分成多个脚本,您可以直接执行这些脚本吗?我的生活需要比将一个日常例行脚本拆分成数千个小脚本更简单,因为这意味着要寻找正确的脚本。单个文件更容易维护,而且看起来很干净,我看着它,就知道必须做什么,或者我做了什么。我也讨厌必须参数化这个脚本,我只想选择行,如果你明白我的意思的话(理想情况下)点击F5。你已经知道要运行哪个块了。知道要运行什么脚本对我来说似乎没有什么意义,可以避免整个复制/粘贴问题(以及相关的可能错误情况)。但是如果这不是一个选项(无论出于什么原因),那么带参数的脚本是下一个最好的主意,如果这不是一个选项,那么您可以看看您的编辑器是否可以为您编写脚本。我相信vim和emacs可以(取决于您是否需要在特定环境中运行它们)。但我不知道杰尼是否有足够的能力。外部应用程序可以通过剪贴板来完成。这是一个很好的问题。我基本上想写shell代码,就像我写R代码一样。一行一行,在脚本中轻松移动,并通过点击apple enter、f5或其他方式进行测试。这个设计很符合我的想法。谢谢,这为Geany解决了这个问题,我倾向于将它用于Vim,所以这是我最喜欢的答案。不过,我还是很想看看如何在Vim中实现这一点。谢谢,我以前试过这个,但它没有使文档非常清晰,它使事情变得太复杂,我的大脑无法回忆所有这些标签,我更喜欢保持脚本不变。