x=rankings* && grep -A10 -P '^Ranked :$' $x | tail -n +2 > results$x
这是一个命令,我无法使用该命令,无法在10次以上的堆栈溢出搜索中找到任何内容。使用通配符作为参数的Bash命令
有没有一种方法可以将通配符作为参数提供给一行命令?我想根据目录中的现有文件制作一个文件列表。
我得到的最接近是
x=rankingsX.Y.Z && grep -A10 -P '^Ranked :$' $x | tail -n +2 > results$x
,其中XYZ是一些数字,但是这硬编码分别是我的目标相反 - 单行命令(不脚本文件),搜索和使用原始名称将特定文本输出到文件中。
一般而言,要求一个“单行命令”是坏的形式因为它优先考虑简洁性而不是可读性。没有理由不可以在一行中写'for x排名*',在一个交互式shell中写一个循环的主体,在第三个''完成',这会让任何人试图追随你在做什么(包括你未来的自我!)更容易。 –
感谢您的建议,我想我应该尝试使用shell的那部分 - 假设Konsole可以做这样的事情? –
不需要特殊的终端支持 - 如果你编写复合命令的一部分(它本身没有语法上的完整性)并按回车,你会在下一行看到'>' - 这意味着shell给你一个添加更多/完成已经启动的语法的机会。如果你想分割一些*可能被解释为语法上有效的多行代码,那么在一行的末尾加一个反斜杠会让你在下一行输入更多。 –