我希望能够在单行命令中注释掉单个标志。 Bash似乎只有from # till end-of-line
条评论。我正在寻找像:
ls -l $([ ] && -F is turned off) -a /etc
这很难看,但总比没有好。还有更好的方法吗?
以下似乎有效,但我不确定它是否可移植:
ls -l `# -F is turned off` -a /etc
答案 0 :(得分:87)
我的首选是:
这会有一些开销,但从技术上来说它确实回答了你的问题
echo abc `#put your comment here` \ def `#another chance for a comment` \ xyz etc
特别是对于管道,有一个没有开销的更清洁的解决方案
echo abc | # normal comment OK here tr a-z A-Z | # another normal comment OK here sort | # the pipelines are automatically continued uniq # final comment
答案 1 :(得分:54)
我发现只复制该行并注释掉原始版本是最简单的(也是最可读的):
#Old version of ls:
#ls -l $([ ] && -F is turned off) -a /etc
ls -l -a /etc
答案 2 :(得分:21)
$(: ...)
有点不那么难看,但仍然不好。
答案 3 :(得分:4)
如何将其存储在变量中?
#extraargs=-F
ls -l $extraargs -a /etc
答案 4 :(得分:2)
大多数命令允许args以任何顺序出现。只需将注释标志移动到行尾:
ls -l -a /etc # -F is turned off
然后重新打开,只需取消注释并删除文字:
ls -l -a /etc -F
答案 5 :(得分:2)
这是我在多个管道命令之间进行内联注释的解决方案。
示例未注释的代码:
#!/bin/sh
cat input.txt \
| grep something \
| sort -r
管道注释的解决方案(使用辅助函数):
#!/bin/sh
pipe_comment() {
cat -
}
cat input.txt \
| pipe_comment "filter down to lines that contain the word: something" \
| grep something \
| pipe_comment "reverse sort what is left" \
| sort -r
或者如果您愿意,这里的解决方案没有辅助函数,但是它有点混乱:
#!/bin/sh
cat input.txt \
| cat - `: filter down to lines that contain the word: something` \
| grep something \
| cat - `: reverse sort what is left` \
| sort -r
答案 6 :(得分:1)
如果您知道变量为空,则可以将其用作注释。当然,如果它不是空的,它会搞砸你的命令。
ls -l ${1# -F is turned off} -a /etc
答案 7 :(得分:0)
如果评论值得一试,它可能会在行尾或单行上行。在任何语言的评论之前和之后,我都很少需要使用代码进行内部评论。
哦,有一个例外,这是我通常使用的SQL的方言,它使用'{comments}'。偶尔,我会写:
CREATE UNIQUE INDEX u1_table ON Table(...);
CREATE {DUPS} INDEX d1_table ON Table(...);
但即便如此也是如此。
答案 8 :(得分:0)
为了禁用像a && b
这样的命令的一部分,我只是创建了一个路径上的空脚本x
,所以我可以这样做:
mvn install && runProject
当我需要构建时,
x mvn install && runProject
何时不是(使用 Ctrl + A 和 Ctrl + E 移动到开头和结尾)。
正如评论中所述,另一种方法是使用Bash内置:
代替x
:
$ : Hello world, how are you? && echo "Fine."
Fine.