编辑:这个问题最初是特定于bash的。我仍然宁愿有一个bash解决方案,但如果有在另一个shell中执行此操作的好方法,那么了解它也会很有用!好的,问题的顶级描述。我希望能够向bash添加一个钩子(Hook),这样,当用户输入时,例如$catfoo|排序-n|less,这被拦截并翻译成wrapper'catfoo|排序-n|少'。我已经看到了在每个命令之前和之后运行命令的方法(使用DEBUG陷阱或PROMPT_COMMAND或类似的),但没有关于如何拦截每个命令并允许它由另一个进程处理的方法。有办法做到这一点吗?关于为什么我想这样做的解释,以防人们有其他方法的建议:类似script的工
编辑:这个问题最初是特定于bash的。我仍然宁愿有一个bash解决方案,但如果有在另一个shell中执行此操作的好方法,那么了解它也会很有用!好的,问题的顶级描述。我希望能够向bash添加一个钩子(Hook),这样,当用户输入时,例如$catfoo|排序-n|less,这被拦截并翻译成wrapper'catfoo|排序-n|少'。我已经看到了在每个命令之前和之后运行命令的方法(使用DEBUG陷阱或PROMPT_COMMAND或类似的),但没有关于如何拦截每个命令并允许它由另一个进程处理的方法。有办法做到这一点吗?关于为什么我想这样做的解释,以防人们有其他方法的建议:类似script的工
这是parent.sh:#!/bin/bashtrap'exit'SIGHUPSIGINTSIGQUITSIGTERMif![-t0];then#ifrunningnon-interactivelysleep5allowalittletimeforchildtogeneratesomeoutputset-bm#tobeabletotrapSIGCHLDtrap'kill-SIGINT$$'SIGCHLD#whensleepisdone,interruptselfautomatically-cannotissueinterruptbykeystrokesincerunningnon-
这是parent.sh:#!/bin/bashtrap'exit'SIGHUPSIGINTSIGQUITSIGTERMif![-t0];then#ifrunningnon-interactivelysleep5allowalittletimeforchildtogeneratesomeoutputset-bm#tobeabletotrapSIGCHLDtrap'kill-SIGINT$$'SIGCHLD#whensleepisdone,interruptselfautomatically-cannotissueinterruptbykeystrokesincerunningnon-
我正在尝试对后跟另一个字符串的名称列表进行排序,例如:JohnDoeAVAILSaraDoeCALLJimDoeAVAIL我正在尝试按名称对这些进行排序,但似乎无法通过排序来解决。有人可以提供一些指导吗?我的最终输出是这样的:JimDoeAVAILJohnDoeAVAILSaraDoeCALL非常感谢! 最佳答案 可能远非最佳,但是sed-r':r;/(^|\n)$/!{$!{N;br}};s/\n/\v/g'names|sort|sed's/\v/\n/g'似乎可以完成这项工作(names是带有记录的文件)。这允许任意长度的记录,
我正在尝试对后跟另一个字符串的名称列表进行排序,例如:JohnDoeAVAILSaraDoeCALLJimDoeAVAIL我正在尝试按名称对这些进行排序,但似乎无法通过排序来解决。有人可以提供一些指导吗?我的最终输出是这样的:JimDoeAVAILJohnDoeAVAILSaraDoeCALL非常感谢! 最佳答案 可能远非最佳,但是sed-r':r;/(^|\n)$/!{$!{N;br}};s/\n/\v/g'names|sort|sed's/\v/\n/g'似乎可以完成这项工作(names是带有记录的文件)。这允许任意长度的记录,
我习惯于面向对象编程。现在,我刚刚开始通过linux学习unixbash脚本。我有一个unix脚本。我想把它分解成“模块”,或者最好是类似于“more”、“ls”等的程序,然后使用管道将我所有的程序链接在一起。例如,“一些输入”我的程序2|myProg3.我想组织我的代码并使其看起来更整洁,而不是全部放在一个脚本中。此外,测试和开发也很容易。是否可以这样做,尤其是作为新手? 最佳答案 有几件事你可以看看,例如在bash中使用别名并将它们存储在bashrc或由bashrc调用的单独文件中这将使运行命令更容易..takealookher
我习惯于面向对象编程。现在,我刚刚开始通过linux学习unixbash脚本。我有一个unix脚本。我想把它分解成“模块”,或者最好是类似于“more”、“ls”等的程序,然后使用管道将我所有的程序链接在一起。例如,“一些输入”我的程序2|myProg3.我想组织我的代码并使其看起来更整洁,而不是全部放在一个脚本中。此外,测试和开发也很容易。是否可以这样做,尤其是作为新手? 最佳答案 有几件事你可以看看,例如在bash中使用别名并将它们存储在bashrc或由bashrc调用的单独文件中这将使运行命令更容易..takealookher
我开始学习如何在Linux中使用bashshell命令和脚本。我想创建一个脚本,它将获取一个源文件,并创建选定数量的命名副本。例如,我将源作为testFile,我选择了15个副本,因此它会在同一位置创建testFile1,2,3...14,15。为了尝试实现这一点,我尝试执行以下命令:forLABELin{$X..$Y};docp$INPUT$INPUT$LABEL;done但是,它不是创建从X到Y的文件,而是只创建一个附加了(例如){1..5}的文件,而不是文件1、2、3、4和5我如何更改它以便它正确地将变量用作循环的数字? 最佳答案
我开始学习如何在Linux中使用bashshell命令和脚本。我想创建一个脚本,它将获取一个源文件,并创建选定数量的命名副本。例如,我将源作为testFile,我选择了15个副本,因此它会在同一位置创建testFile1,2,3...14,15。为了尝试实现这一点,我尝试执行以下命令:forLABELin{$X..$Y};docp$INPUT$INPUT$LABEL;done但是,它不是创建从X到Y的文件,而是只创建一个附加了(例如){1..5}的文件,而不是文件1、2、3、4和5我如何更改它以便它正确地将变量用作循环的数字? 最佳答案